* get eslint running but its failing a lot of checks

* Fix the linting after migration

* Fix many errors

* 65 errors to go

* fix almost every lint issue

* clean lint

* Remove references to tslint

* dont install eslint as it is already here

* install eslint

* update eslint

* dont empty cache because eslint is failing to register the types that exist

* try to help eslint find the files for type defs

* Set typescript resolver

* Fix imports

* Add some import plugin but still cant import vscode correctly

* install eslint globally

* skip npm installl

* add imports

* try to fix the import issue

* build before hand so the types are picked up -_____-

* Revert "build before hand so the types are picked up -_____-"

This reverts commit e5381b42df.

* rollback to eslint 8 but still run build
This commit is contained in:
Noah Gilson 2024-09-10 21:39:51 -07:00 коммит произвёл GitHub
Родитель 63cbaf19a7
Коммит e9c440e1e8
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
57 изменённых файлов: 9523 добавлений и 1630 удалений

193
.eslintrc.js Normal file
Просмотреть файл

@ -0,0 +1,193 @@
module.exports = {
"env": {
"browser": true,
"es6": true
},
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "tsconfig.eslint.json",
"sourceType": "module"
},
"plugins": [
"eslint-plugin-jsdoc",
"eslint-plugin-prefer-arrow",
"@typescript-eslint",
"@typescript-eslint/tslint",
],
"root": true,
"rules": {
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/array-type": "off",
"@typescript-eslint/ban-types": [
"error",
{
"types": {
"Object": {
"message": "Avoid using the `Object` type. Did you mean `object`?"
},
"Function": {
"message": "Avoid using the `Function` type. Prefer a specific function type, like `() => void`."
},
"Boolean": {
"message": "Avoid using the `Boolean` type. Did you mean `boolean`?"
},
"Number": {
"message": "Avoid using the `Number` type. Did you mean `number`?"
},
"String": {
"message": "Avoid using the `String` type. Did you mean `string`?"
},
"Symbol": {
"message": "Avoid using the `Symbol` type. Did you mean `symbol`?"
}
}
}
],
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/dot-notation": "error",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/only-throw-error": "off",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/naming-convention": [
"off",
{
"selector": "variable",
"format": [
"camelCase",
"UPPER_CASE"
],
"leadingUnderscore": "forbid",
"trailingUnderscore": "forbid"
}
],
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-unsafe-return": "warn",
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/prefer-promise-reject-errors": "warn",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-misused-promises": "warn",
"@typescript-eslint/no-namespace": "off",
"@typescript-eslint/no-parameter-properties": "off",
"@typescript-eslint/no-shadow": [
"error",
{
"hoist": "all"
}
],
"@typescript-eslint/no-unused-expressions": "error",
"@typescript-eslint/restrict-template-expressions": [
"error",
{
"allowNumber": true,
"allowBoolean": true,
"allowAny": true,
"allowArray": true
}
],
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/prefer-for-of": "error",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/prefer-function-type": "error",
"@typescript-eslint/prefer-namespace-keyword": "error",
"@typescript-eslint/ban-types": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-require-imports": "off",
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unnecessary-type-assertion": "off",
"@typescript-eslint/quotes": "off",
"@typescript-eslint/triple-slash-reference": [
"error",
{
"path": "always",
"types": "prefer-import",
"lib": "always"
}
],
"@typescript-eslint/typedef": "off",
"@typescript-eslint/unified-signatures": "error",
"arrow-parens": [
"off",
"always"
],
"complexity": "off",
"constructor-super": "error",
"dot-notation": "off",
"eqeqeq": [
"error",
"smart"
],
"guard-for-in": "error",
"id-denylist": "error",
"id-match": "error",
"jsdoc/check-alignment": "error",
"jsdoc/check-indentation": "error",
"jsdoc/newline-after-description": "off",
"max-classes-per-file": "off",
"max-len": [
"error",
{
"code": 300
}
],
"new-parens": "error",
"no-bitwise": "error",
"no-caller": "error",
"no-cond-assign": "error",
"no-console": "off",
"no-debugger": "error",
"no-empty": "off",
"no-empty-function": "off",
"no-eval": "error",
"no-fallthrough": "off",
"no-invalid-this": "off",
"no-new-wrappers": "error",
"no-return-await": "error",
"no-shadow": "off",
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-undef-init": "error",
"no-underscore-dangle": "error",
"no-unsafe-finally": "error",
"no-unused-expressions": "off",
"no-unused-labels": "error",
"no-use-before-define": "off",
"no-var": "error",
"object-shorthand": "error",
"one-var": [
"error",
"never"
],
"prefer-arrow/prefer-arrow-functions": "off",
"prefer-const": "error",
"prefer-template": "error",
"quotes": "off",
"no-underscore-dangle": "off",
"radix": "error",
"use-isnan": "error",
"valid-typeof": "off",
"@typescript-eslint/tslint/config": [
"error",
{
"rules": {
"file-header": [
true,
"------"
]
}
}
]
},
"settings": {
"typescript": {}
}
};

1
.gitignore поставляемый
Просмотреть файл

@ -29,6 +29,7 @@ project.lock.json
*.*sdf
*.ipch
*.js
!.eslintrc.js
*.d.ts
*.js.map
.build/

11
.vscode/settings.json поставляемый
Просмотреть файл

@ -15,5 +15,14 @@
"REGTYPE",
"Republisher"
],
"azure-pipelines.1ESPipelineTemplatesSchemaFile": true
"azure-pipelines.1ESPipelineTemplatesSchemaFile": true,
"eslint.options": {
"configFile": ".eslintrc.js"
},
"eslint.workingDirectories": [
"./vscode-dotnet-runtime-library",
"./vscode-dotnet-runtime-extension",
"./vscode-dotnet-sdk-extension",
"./sample"
]
}

Просмотреть файл

@ -4,7 +4,6 @@
node_modules/**
dist/test/**
src/**
tslint.json
*.vsix
packages/
msbuild/**

5689
package-lock.json сгенерированный

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -11,14 +11,26 @@
"author": "Microsoft Corporation",
"scripts": {
"compile-all": "build.cmd",
"lint": "tslint -c tslint.json 'vscode-dotnet-runtime-library/src/**/*.ts' 'vscode-dotnet-runtime-extension/src/**/*.ts' 'vscode-dotnet-sdk-extension/src/**/*.ts'"
"lint": "eslint -c .eslintrc.js --ext=.ts vscode-dotnet-runtime-library/src/**/*.ts vscode-dotnet-runtime-extension/src/**/*.ts --ignore-pattern \"**/test/\" --fix"
},
"dependencies": {
"@typescript-eslint/eslint-plugin-tslint": "^7.0.2",
"@vscode/vsce": "^2.26.1",
"eslint": "^8.0.0",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-jsdoc": "^50.2.2",
"eslint-plugin-prefer-arrow": "^1.2.3",
"tslint": "^6.1.3",
"typescript": "^5.5.4"
},
"devDependencies": {
"@types/source-map-support": "^0.5.6",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-node": "^0.3.9",
"eslint-plugin-prettier": "^5.2.1",
"rimraf": "3.0.2"
}
}

Просмотреть файл

@ -2,17 +2,17 @@ parameters:
pool: ''
jobs:
- job: TSLint
- job: ESLint
pool:
${{ if eq(parameters.useOneEngineeringPool, 'true') }}:
${{ parameters.pool }}
${{ else }}:
vmImage: ${{ parameters.pool.vmImage }}
displayName: '🧶 TSLint'
displayName: '🧶 ESLint'
steps:
- template: install-node.yaml
- script: build.cmd
- bash: |
npm install --cache /temp/empty-cache
npm install tslint --reg https://registry.npmjs.org/ --verbose
npm install eslint@^8.57.0 @typescript-eslint/parser@^8.0.0 @typescript-eslint/eslint-plugin@^8.0.0 --reg https://registry.npmjs.org/ --save-dev --verbose
npm run lint
displayName: 🧶 Run Lint

Просмотреть файл

@ -12,8 +12,8 @@ jobs:
displayName: '📦 Package and Publish'
dependsOn:
- ${{ parameters.pool.os }}_Build
- TSLint
condition: and(succeeded(), eq('${{ parameters.useOneEngineeringPool }}', 'true'))
- ESLint
condition: succeeded()
strategy:
matrix:
Runtime:

4
sample/package-lock.json сгенерированный
Просмотреть файл

@ -33,7 +33,7 @@
},
"../vscode-dotnet-runtime-extension": {
"name": "vscode-dotnet-runtime",
"version": "2.1.3",
"version": "2.1.6",
"license": "MIT",
"dependencies": {
"@types/chai-as-promised": "^7.1.8",
@ -65,7 +65,7 @@
"webpack-cli": "^4.9.1"
},
"engines": {
"vscode": "^1.74.0"
"vscode": "^1.81.1"
}
},
"../vscode-dotnet-runtime-library": {

Просмотреть файл

@ -2,16 +2,16 @@ $result = 0
$errorColor = "Red"
$successColor = "Green"
if ($args[1] -eq '--tslint') {
if ($args[1] -eq '--eslint') {
npm run lint
if ($LASTEXITCODE -ne 0)
{
Write-Host "`nTSLint Failed.`n" -ForegroundColor $errorColor
Write-Host "`nESLint Failed.`n" -ForegroundColor $errorColor
$result = 1
}
else
{
Write-Host "`nTSLint Succeeded.`n" -ForegroundColor $successColor
Write-Host "`nESLint Succeeded.`n" -ForegroundColor $successColor
}
}

Просмотреть файл

@ -3,18 +3,18 @@ RED=`tput setaf 1`
GREEN=`tput setaf 2`
NC=`tput sgr0`
if [ "$1" = "--tslint" ];
if [ "$1" = "--eslint" ];
then
npm run lint
if [ $? -ne 0 ];
then
echo ""
echo "${RED}TSLint Failed.${NC}"
echo "${RED}ESLint Failed.${NC}"
echo ""
RESULT=1
else
echo ""
echo "${GREEN}TSLint Succeeded.${NC}"
echo "${GREEN}ESLint Succeeded.${NC}"
echo ""
fi
fi

20
tsconfig.eslint.json Normal file
Просмотреть файл

@ -0,0 +1,20 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"outDir": "dist",
"lib": [
"es6"
],
"skipLibCheck": true,
"sourceMap": true,
"declaration": true,
"rootDir": "src",
"strict": true /* enable all strict type-checking options */
},
"exclude": [
"**/node_modules/**",
"**/.vscode-test/**",
"**/dist/**",
]
}

Просмотреть файл

@ -1,24 +0,0 @@
{
"extends": "tslint:recommended",
"rules": {
"array-type": false,
"arrow-parens": false,
"file-header": [true, "------"],
"interface-name": false,
"no-console": false,
"no-return-await": true,
"no-inferrable-types": true,
"no-namespace": false,
"object-literal-sort-keys": false,
"prefer-template": true,
"quotemark": [true, "single"],
"variable-name": [true, "check-format"],
"max-classes-per-file": false,
"max-line-length": {
"options": {
"limit": 200
}
},
"no-any": true
}
}

Просмотреть файл

@ -108,7 +108,7 @@
"test": "npm run compile --silent && node ./dist/test/functional/runTest.js",
"clean": "rimraf dist",
"compile-all": "cd ../vscode-dotnet-runtime-library && npm install && npm run compile && cd ../vscode-dotnet-runtime-extension && npm install && npm run compile",
"lint": "tslint -c ../tslint.json '../vscode-dotnet-runtime-library/src/**/*.ts' '../vscode-dotnet-runtime-extension/src/**/*.ts'",
"lint": "eslint -c .eslintrc.js --ext=.ts vscode-dotnet-runtime-library/src/**/*.ts vscode-dotnet-runtime-extension/src/**/*.ts --ignore-pattern \"**/test/\" --fix",
"webpack": "webpack --mode development"
},
"dependencies": {

Просмотреть файл

@ -69,9 +69,6 @@ import {
import { dotnetCoreAcquisitionExtensionId } from './DotnetCoreAcquisitionId';
import { InstallTrackerSingleton } from 'vscode-dotnet-runtime-library/dist/Acquisition/InstallTrackerSingleton';
// tslint:disable no-var-requires
/* tslint:disable:only-arrow-functions */
const packageJson = require('../package.json');
// Extension constants
@ -516,7 +513,7 @@ export function activate(vsCodeContext: vscode.ExtensionContext, extensionContex
const reportIssueRegistration = vscode.commands.registerCommand(`${commandPrefix}.${commandKeys.reportIssue}`, async () => {
const [url, issueBody] = formatIssueUrl(undefined, getIssueContext(existingPathConfigWorker)(AcquireErrorConfiguration.DisableErrorPopups, 'reportIssue'));
await vscode.env.clipboard.writeText(issueBody);
open(url);
open(url).catch(() => {});
});
// Helper Functions
@ -579,12 +576,10 @@ export function activate(vsCodeContext: vscode.ExtensionContext, extensionContex
supportPhase: resolvedSupportPhase }
];
}
// tslint:disable no-any
catch(error : any)
{
return [];
}
// tslint:enable no-any
}
}

Просмотреть файл

@ -29,10 +29,7 @@ import {
} from 'vscode-dotnet-runtime-library';
import * as extension from '../../extension';
import { warn } from 'console';
import { json } from 'stream/consumers';
import { InstallTrackerSingleton } from 'vscode-dotnet-runtime-library/dist/Acquisition/InstallTrackerSingleton';
/* tslint:disable:no-any */
/* tslint:disable:no-unsafe-finally */
const assert : any = chai.assert;
const standardTimeoutTime = 40000;

Просмотреть файл

@ -1,3 +0,0 @@
{
"extends": "../tslint.json"
}

Просмотреть файл

@ -62,7 +62,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=
@ -75,7 +75,12 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@types/chai-as-promised@^7.1.8":
"@tootallnate/once@1":
version "1.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha1-zLkURTYBeaBOf+av94wA/8Hur4I=
"@types/chai-as-promised@^7.1.4", "@types/chai-as-promised@^7.1.8":
version "7.1.8"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz"
integrity sha1-8rPYLVPFlia11rvAh2Z8y0tnf+k=
@ -116,12 +121,20 @@
"@types/minimatch" "^5.1.2"
"@types/node" "*"
"@types/glob@~7.2.0":
version "7.2.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
integrity sha1-vBtb86qS8lvV3TnzXFc2G9zlsus=
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
"@types/json-schema@*", "@types/json-schema@^7.0.8":
version "7.0.15"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha1-WWoXRyM2lNUPatinhp/Lb1bPWEE=
"@types/minimatch@^5.1.2":
"@types/minimatch@*", "@types/minimatch@^5.1.2":
version "5.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/minimatch/-/minimatch-5.1.2.tgz"
integrity sha1-B1CLRXl8uB7D8nMBGwVM0HVe3co=
@ -146,6 +159,19 @@
"@types/glob" "*"
"@types/node" "*"
"@types/semver@^7.3.9":
version "7.5.8"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha1-gmioxXo+Sr0lwWXs02I323lIpV4=
"@types/shelljs@^0.8.9":
version "0.8.15"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/shelljs/-/shelljs-0.8.15.tgz#22c6ab9dfe05cec57d8e6cb1a95ea173aee9fcac"
integrity sha1-Isarnf4FzsV9jmyxqV6hc67p/Kw=
dependencies:
"@types/glob" "~7.2.0"
"@types/node" "*"
"@types/source-map-support@^0.5.10":
version "0.5.10"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/source-map-support/-/source-map-support-0.5.10.tgz"
@ -163,6 +189,11 @@
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz"
integrity sha1-qlgEJxHW4ydd033Fl+XTHowpCkQ=
"@vscode/sudo-prompt@^9.3.1":
version "9.3.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/sudo-prompt/-/sudo-prompt-9.3.1.tgz#c562334bc6647733649fd42afc96c0eea8de3b65"
integrity sha1-xWIzS8ZkdzNkn9Qq/JbA7qjeO2U=
"@vscode/test-electron@^2.3.9":
version "2.4.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/test-electron/-/test-electron-2.4.1.tgz"
@ -174,7 +205,7 @@
ora "^7.0.1"
semver "^7.6.2"
"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1":
version "1.12.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.12.1.tgz"
integrity sha1-uxag6LGRT5efRYZMI4Gcw+Pw1Ls=
@ -275,7 +306,7 @@
"@webassemblyjs/wasm-gen" "1.12.1"
"@webassemblyjs/wasm-parser" "1.12.1"
"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1":
version "1.12.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"
integrity sha1-xHrLkObwgzkeP6YdETZQ7qHpWTc=
@ -327,11 +358,18 @@ acorn-import-attributes@^1.9.5:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz"
integrity sha1-frFVexugXvGLXtDsZ1kb+rBGiO8=
acorn@^8, acorn@^8.7.1, acorn@^8.8.2:
acorn@^8.7.1, acorn@^8.8.2:
version "8.12.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-8.12.1.tgz"
integrity sha1-cWFr3MviXielRDngBG6JynbfIkg=
agent-base@6:
version "6.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
integrity sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=
dependencies:
debug "4"
agent-base@^7.0.2, agent-base@^7.1.0:
version "7.1.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/agent-base/-/agent-base-7.1.1.tgz"
@ -344,7 +382,7 @@ ajv-keywords@^3.5.2:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha1-MfKdpatuANHC0yms97WSlhTVAU0=
ajv@^6.12.5, ajv@^6.9.1:
ajv@^6.12.5:
version "6.12.6"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ajv/-/ajv-6.12.6.tgz"
integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=
@ -404,7 +442,7 @@ asynckit@^0.4.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/asynckit/-/asynckit-0.4.0.tgz"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
axios-cache-interceptor@^1.0.1:
axios-cache-interceptor@^1.0.1, axios-cache-interceptor@^1.5.3:
version "1.5.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/axios-cache-interceptor/-/axios-cache-interceptor-1.5.3.tgz"
integrity sha1-IIP8aKrLkVJA437ct5K0/tY1QL4=
@ -421,7 +459,7 @@ axios-retry@^3.4.0:
"@babel/runtime" "^7.15.4"
is-retry-allowed "^2.2.0"
axios@^1, axios@^1.7.4:
axios@^1.7.4:
version "1.7.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/axios/-/axios-1.7.4.tgz"
integrity sha1-TI3tG0NoPI3TYpc8OT8+3iQFKqI=
@ -440,11 +478,24 @@ base64-js@^1.3.1:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/base64-js/-/base64-js-1.5.1.tgz"
integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=
big-integer@^1.6.17:
version "1.6.52"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85"
integrity sha1-YKiH8wR2FKjhv/5dcXNJCpfcjIU=
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/binary-extensions/-/binary-extensions-2.3.0.tgz"
integrity sha1-9uFKl4WNMnJSIAJC1Mz+UixEVSI=
binary@~0.3.0:
version "0.3.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=
dependencies:
buffers "~0.1.1"
chainsaw "~0.1.0"
bl@^5.0.0:
version "5.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/bl/-/bl-5.1.0.tgz"
@ -459,6 +510,11 @@ bluebird@^3.4.7, bluebird@^3.7.2:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/bluebird/-/bluebird-3.7.2.tgz"
integrity sha1-nyKcFb4nJFT/qXOs4NvueaGww28=
bluebird@~3.4.1:
version "3.4.7"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz"
@ -486,7 +542,7 @@ browser-stdout@1.3.1:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/browser-stdout/-/browser-stdout-1.3.1.tgz"
integrity sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=
browserslist@^4.21.10, "browserslist@>= 4.21.0":
browserslist@^4.21.10:
version "4.23.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/browserslist/-/browserslist-4.23.3.tgz"
integrity sha1-3rsCnTyT68l/+8jZy7A0A+InyAA=
@ -501,6 +557,11 @@ buffer-from@^1.0.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/buffer-from/-/buffer-from-1.1.2.tgz"
integrity sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=
buffer-indexof-polyfill@~1.0.0:
version "1.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c"
integrity sha1-0nMhNcWZnGSyd/z5savjSYJUcpw=
buffer@^6.0.3:
version "6.0.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/buffer/-/buffer-6.0.3.tgz"
@ -509,6 +570,11 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
buffers@~0.1.1:
version "0.1.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s=
cache-parser@1.2.5:
version "1.2.5"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cache-parser/-/cache-parser-1.2.5.tgz"
@ -524,6 +590,13 @@ caniuse-lite@^1.0.30001646:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz"
integrity sha1-Ut5ZUp6LArGu3Kr1wF2eI8DCgTg=
chai-as-promised@^7.1.1:
version "7.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041"
integrity sha1-cM1zt0r9UZdUFhOGQh+3GDLG0EE=
dependencies:
check-error "^1.0.2"
chai@4.3.4:
version "4.3.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chai/-/chai-4.3.4.tgz"
@ -536,6 +609,13 @@ chai@4.3.4:
pathval "^1.1.1"
type-detect "^4.0.5"
chainsaw@~0.1.0:
version "0.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98"
integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=
dependencies:
traverse ">=0.3.0 <0.4"
chalk@^4.1.0:
version "4.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chalk/-/chalk-4.1.2.tgz"
@ -645,6 +725,14 @@ concat-map@0.0.1:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/concat-map/-/concat-map-0.0.1.tgz"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
config-chain@^1.1.11:
version "1.1.13"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
integrity sha1-+tB5Wqamza/57Rto6d/5Q3LCMvQ=
dependencies:
ini "^1.3.4"
proto-list "~1.2.1"
copy-webpack-plugin@^9.0.1:
version "9.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz"
@ -671,7 +759,7 @@ cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
debug@^4.3.4, debug@4:
debug@4, debug@^4.3.4:
version "4.3.6"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/debug/-/debug-4.3.6.tgz"
integrity sha1-KrLDj7r/6/iqlf3+bYhDjHoTxSs=
@ -719,6 +807,13 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
duplexer2@~0.1.4:
version "0.1.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
dependencies:
readable-stream "^2.0.2"
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
@ -752,6 +847,11 @@ envinfo@^7.7.3:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/envinfo/-/envinfo-7.13.0.tgz"
integrity sha1-gfu4Hl2jXXToFJQa6rfDJaYG+zE=
eol@^0.9.1:
version "0.9.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
integrity sha1-9wGRL1BAdL41xhF6XEreSc1Ues0=
err-code@^1.0.0:
version "1.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/err-code/-/err-code-1.1.2.tgz"
@ -873,14 +973,6 @@ fill-range@^7.1.1:
dependencies:
to-regex-range "^5.0.1"
find-up@^4.0.0:
version "4.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/find-up/-/find-up-4.1.0.tgz"
integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=
dependencies:
locate-path "^5.0.0"
path-exists "^4.0.0"
find-up@5.0.0:
version "5.0.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/find-up/-/find-up-5.0.0.tgz"
@ -889,6 +981,14 @@ find-up@5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
find-up@^4.0.0:
version "4.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/find-up/-/find-up-4.1.0.tgz"
integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=
dependencies:
locate-path "^5.0.0"
path-exists "^4.0.0"
flat@^5.0.2:
version "5.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flat/-/flat-5.0.2.tgz"
@ -913,6 +1013,21 @@ fs.realpath@^1.0.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
fsevents@^2.3.3, fsevents@~2.3.2:
version "2.3.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=
fstream@^1.0.12:
version "1.0.12"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
integrity sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=
dependencies:
graceful-fs "^4.1.2"
inherits "~2.0.0"
mkdirp ">=0.5 0"
rimraf "2"
function-bind@^1.1.2:
version "1.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/function-bind/-/function-bind-1.1.2.tgz"
@ -928,7 +1043,14 @@ get-func-name@^2.0.0, get-func-name@^2.0.2:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/get-func-name/-/get-func-name-2.0.2.tgz"
integrity sha1-DXzyDNE/2oCGaf+oj0/8ejlD/EE=
glob-parent@^5.1.2:
get-proxy-settings@^0.1.13:
version "0.1.13"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/get-proxy-settings/-/get-proxy-settings-0.1.13.tgz#ca4b79bc63a178c907f754a6c3e0f6a54ed1becb"
integrity sha1-ykt5vGOheMkH91Smw+D2pU7Rvss=
dependencies:
npm-conf "~1.1.3"
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=
@ -942,30 +1064,11 @@ glob-parent@^6.0.1:
dependencies:
is-glob "^4.0.3"
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=
dependencies:
is-glob "^4.0.1"
glob-to-regexp@^0.4.1:
version "0.4.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
integrity sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=
glob@^7.0.0, glob@^7.1.3, glob@^7.2.0:
version "7.2.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-7.2.3.tgz"
integrity sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@7.2.0:
version "7.2.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-7.2.0.tgz"
@ -978,6 +1081,18 @@ glob@7.2.0:
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.0.0, glob@^7.1.3, glob@^7.2.0:
version "7.2.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-7.2.3.tgz"
integrity sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
globby@^11.0.3:
version "11.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/globby/-/globby-11.1.0.tgz"
@ -990,7 +1105,7 @@ globby@^11.0.3:
merge2 "^1.4.1"
slash "^3.0.0"
graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4:
graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4:
version "4.2.11"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha1-QYPk6L8Iu24Fu7L30uDI9xLKQOM=
@ -1017,6 +1132,15 @@ he@1.2.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/he/-/he-1.2.0.tgz"
integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8=
http-proxy-agent@^4.0.1:
version "4.0.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
integrity sha1-ioyO9/WTLM+VPClsqCkblap0qjo=
dependencies:
"@tootallnate/once" "1"
agent-base "6"
debug "4"
http-proxy-agent@^7.0.2:
version "7.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz"
@ -1025,7 +1149,15 @@ http-proxy-agent@^7.0.2:
agent-base "^7.1.0"
debug "^4.3.4"
https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.5:
https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha1-xZ7yJKBP6LdU89sAY6Jeow0ABdY=
dependencies:
agent-base "6"
debug "4"
https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.4, https-proxy-agent@^7.0.5:
version "7.0.5"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz"
integrity sha1-notQE4cymeEfq2/VSEBdotbGArI=
@ -1064,11 +1196,16 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2:
inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3:
version "2.0.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/inherits/-/inherits-2.0.4.tgz"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
ini@^1.3.4:
version "1.3.8"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=
interpret@^1.0.0:
version "1.4.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/interpret/-/interpret-1.4.0.tgz"
@ -1222,6 +1359,11 @@ lie@~3.3.0:
dependencies:
immediate "~3.0.5"
listenercount@~1.0.1:
version "1.0.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937"
integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=
loader-runner@^4.2.0:
version "4.3.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/loader-runner/-/loader-runner-4.3.0.tgz"
@ -1246,14 +1388,6 @@ lodash@^4.17.21:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/lodash/-/lodash-4.17.21.tgz"
integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
log-symbols@^5.1.0:
version "5.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/log-symbols/-/log-symbols-5.1.0.tgz"
integrity sha1-og47ml9T+sauuOK7IsB88sjxbZM=
dependencies:
chalk "^5.0.0"
is-unicode-supported "^1.1.0"
log-symbols@4.1.0:
version "4.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/log-symbols/-/log-symbols-4.1.0.tgz"
@ -1262,6 +1396,14 @@ log-symbols@4.1.0:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
log-symbols@^5.1.0:
version "5.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/log-symbols/-/log-symbols-5.1.0.tgz"
integrity sha1-og47ml9T+sauuOK7IsB88sjxbZM=
dependencies:
chalk "^5.0.0"
is-unicode-supported "^1.1.0"
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/merge-stream/-/merge-stream-2.0.0.tgz"
@ -1297,14 +1439,14 @@ mimic-fn@^2.1.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/mimic-fn/-/mimic-fn-2.1.0.tgz"
integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=
minimatch@^3.0.3, minimatch@^3.1.1:
version "3.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-3.1.2.tgz"
integrity sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=
minimatch@4.2.1:
version "4.2.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-4.2.1.tgz"
integrity sha1-QNnVEaRr3E5WPCLDCAzenA2CmbQ=
dependencies:
brace-expansion "^1.1.7"
minimatch@^3.0.4:
minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1:
version "3.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-3.1.2.tgz"
integrity sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=
@ -1318,12 +1460,17 @@ minimatch@^5.0.0:
dependencies:
brace-expansion "^2.0.1"
minimatch@4.2.1:
version "4.2.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-4.2.1.tgz"
integrity sha1-QNnVEaRr3E5WPCLDCAzenA2CmbQ=
minimist@^1.2.6:
version "1.2.8"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=
"mkdirp@>=0.5 0":
version "0.5.6"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha1-fe8D0kMtyuS6HWEURcSDlgYiVfY=
dependencies:
brace-expansion "^1.1.7"
minimist "^1.2.6"
mocha@^9.1.3:
version "9.2.2"
@ -1390,6 +1537,14 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=
npm-conf@~1.1.3:
version "1.1.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
integrity sha1-JWzEe9DiGMJZxOlVC/QTvCGSr/k=
dependencies:
config-chain "^1.1.11"
pify "^3.0.0"
object-code@1.3.3:
version "1.3.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/object-code/-/object-code-1.3.3.tgz"
@ -1511,6 +1666,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/picomatch/-/picomatch-2.3.1.tgz"
integrity sha1-O6ODNzNkbZ0+SZWUbBNlpn+wekI=
pify@^3.0.0:
version "3.0.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pkg-dir/-/pkg-dir-4.2.0.tgz"
@ -1533,6 +1693,20 @@ proper-lockfile@^1.2.0:
graceful-fs "^4.1.2"
retry "^0.10.0"
proper-lockfile@^4.1.2:
version "4.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f"
integrity sha1-yLneKvay8WAQZ/mOAaxmuqIjFB8=
dependencies:
graceful-fs "^4.2.4"
retry "^0.12.0"
signal-exit "^3.0.2"
proto-list@~1.2.1:
version "1.2.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
@ -1555,16 +1729,7 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
readable-stream@^3.4.0:
version "3.6.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/readable-stream/-/readable-stream-3.6.2.tgz"
integrity sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readable-stream@~2.3.6:
readable-stream@^2.0.2, readable-stream@~2.3.6:
version "2.3.8"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha1-kRJegEK7obmIf0k0X2J3Anzovps=
@ -1577,6 +1742,15 @@ readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.4.0:
version "3.6.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/readable-stream/-/readable-stream-3.6.2.tgz"
integrity sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readdirp@~3.6.0:
version "3.6.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/readdirp/-/readdirp-3.6.0.tgz"
@ -1642,12 +1816,24 @@ retry@^0.10.0:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/retry/-/retry-0.10.1.tgz"
integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=
retry@^0.12.0:
version "0.12.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
reusify@^1.0.4:
version "1.0.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/reusify/-/reusify-1.0.4.tgz"
integrity sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=
rimraf@3.0.2:
rimraf@2:
version "2.7.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=
dependencies:
glob "^7.1.3"
rimraf@3.0.2, rimraf@^3.0.2:
version "3.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rimraf/-/rimraf-3.0.2.tgz"
integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=
@ -1661,6 +1847,11 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
run-script-os@^1.1.6:
version "1.1.6"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/run-script-os/-/run-script-os-1.1.6.tgz#8b0177fb1b54c99a670f95c7fdc54f18b9c72347"
integrity sha1-iwF3+xtUyZpnD5XH/cVPGLnHI0c=
safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz"
@ -1680,13 +1871,6 @@ semver@^7.3.4, semver@^7.6.2:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.6.3.tgz"
integrity sha1-mA97VVC8F1+03AlAMIVif56zMUM=
serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
version "6.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
integrity sha1-3voeBVyDv21Z6oBdjahiJU62psI=
dependencies:
randombytes "^2.1.0"
serialize-javascript@6.0.0:
version "6.0.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.0.tgz"
@ -1694,7 +1878,14 @@ serialize-javascript@6.0.0:
dependencies:
randombytes "^2.1.0"
setimmediate@^1.0.5:
serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
version "6.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
integrity sha1-3voeBVyDv21Z6oBdjahiJU62psI=
dependencies:
randombytes "^2.1.0"
setimmediate@^1.0.5, setimmediate@~1.0.4:
version "1.0.5"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/setimmediate/-/setimmediate-1.0.5.tgz"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
@ -1762,23 +1953,7 @@ stdin-discarder@^0.1.0:
dependencies:
bl "^5.0.0"
string_decoder@^1.1.1, string_decoder@~1.1.1:
version "1.1.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
string-width@^4.1.0:
version "4.2.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/string-width/-/string-width-4.2.3.tgz"
integrity sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string-width@^4.2.0:
string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/string-width/-/string-width-4.2.3.tgz"
integrity sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=
@ -1796,6 +1971,13 @@ string-width@^6.1.0:
emoji-regex "^10.2.1"
strip-ansi "^7.0.1"
string_decoder@^1.1.1, string_decoder@~1.1.1:
version "1.1.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz"
@ -1815,6 +1997,13 @@ strip-json-comments@3.1.1:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=
supports-color@8.1.1, supports-color@^8.0.0:
version "8.1.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/supports-color/-/supports-color-8.1.1.tgz"
integrity sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=
dependencies:
has-flag "^4.0.0"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/supports-color/-/supports-color-7.2.0.tgz"
@ -1822,13 +2011,6 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
supports-color@^8.0.0, supports-color@8.1.1:
version "8.1.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/supports-color/-/supports-color-8.1.1.tgz"
integrity sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=
dependencies:
has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
@ -1867,6 +2049,11 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
"traverse@>=0.3.0 <0.4":
version "0.3.9"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=
ts-loader@^9.5.1:
version "9.5.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-loader/-/ts-loader-9.5.1.tgz"
@ -1883,7 +2070,7 @@ type-detect@^4.0.0, type-detect@^4.0.5:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/type-detect/-/type-detect-4.1.0.tgz"
integrity sha1-3rJFPo8I3K566YxiaxPd2wFVkGw=
typescript@*, typescript@^5.5.4:
typescript@^5.5.4:
version "5.5.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typescript/-/typescript-5.5.4.tgz"
integrity sha1-2YUtbIK60tLtpP10pXYqj1kJ6bo=
@ -1900,6 +2087,22 @@ unit-compare@^1.0.1:
dependencies:
moment "^2.14.1"
unzipper@^0.10.11:
version "0.10.14"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/unzipper/-/unzipper-0.10.14.tgz#d2b33c977714da0fbc0f82774ad35470a7c962b1"
integrity sha1-0rM8l3cU2g+8D4J3StNUcKfJYrE=
dependencies:
big-integer "^1.6.17"
binary "~0.3.0"
bluebird "~3.4.1"
buffer-indexof-polyfill "~1.0.0"
duplexer2 "~0.1.4"
fstream "^1.0.12"
graceful-fs "^4.2.2"
listenercount "~1.0.1"
readable-stream "~2.3.6"
setimmediate "~1.0.4"
update-browserslist-db@^1.1.0:
version "1.1.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz"
@ -1922,7 +2125,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
"vscode-dotnet-runtime-library@file:../vscode-dotnet-runtime-library":
version "1.0.0"
resolved "file:../vscode-dotnet-runtime-library"
dependencies:
"@types/chai-as-promised" "^7.1.4"
"@types/mocha" "^9.0.0"
@ -1953,6 +2155,21 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
optionalDependencies:
fsevents "^2.3.3"
vscode-extension-telemetry@^0.4.3:
version "0.4.5"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-extension-telemetry/-/vscode-extension-telemetry-0.4.5.tgz#1957d5a8b0cd6ad9a79d4f260fe037fbf98732bb"
integrity sha1-GVfVqLDNatmnnU8mD+A3+/mHMrs=
vscode-test@^1.6.1:
version "1.6.1"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-test/-/vscode-test-1.6.1.tgz#44254c67036de92b00fdd72f6ace5f1854e1a563"
integrity sha1-RCVMZwNt6SsA/dcvas5fGFThpWM=
dependencies:
http-proxy-agent "^4.0.1"
https-proxy-agent "^5.0.0"
rimraf "^3.0.2"
unzipper "^0.10.11"
watchpack@^2.4.1:
version "2.4.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/watchpack/-/watchpack-2.4.2.tgz"
@ -1961,7 +2178,7 @@ watchpack@^2.4.1:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
webpack-cli@^4.9.1, webpack-cli@4.x.x:
webpack-cli@^4.9.1:
version "4.10.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-cli/-/webpack-cli-4.10.0.tgz"
integrity sha1-N8HWnI2FIUxaZeWJN49TrsZNqzE=
@ -2000,7 +2217,7 @@ webpack-sources@^3.2.3:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha1-LU2quEUf1LJAzCcFX/agwszqDN4=
webpack@^5.0.0, webpack@^5.1.0, webpack@^5.88.2, "webpack@4.x.x || 5.x.x":
webpack@^5.88.2:
version "5.93.0"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.93.0.tgz"
integrity sha1-LonscDVXm9+6l2DSbGOsXDRipeU=
@ -2030,7 +2247,7 @@ webpack@^5.0.0, webpack@^5.1.0, webpack@^5.88.2, "webpack@4.x.x || 5.x.x":
watchpack "^2.4.1"
webpack-sources "^3.2.3"
which@^2.0.1, which@2.0.2:
which@2.0.2, which@^2.0.1:
version "2.0.2"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/which/-/which-2.0.2.tgz"
integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=
@ -2066,7 +2283,7 @@ y18n@^5.0.5:
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/y18n/-/y18n-5.0.8.tgz"
integrity sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=
yargs-parser@^20.2.2, yargs-parser@20.2.4:
yargs-parser@20.2.4, yargs-parser@^20.2.2:
version "20.2.4"
resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yargs-parser/-/yargs-parser-20.2.4.tgz"
integrity sha1-tCiQ8UVmeW+Fro46JSkNIF8VSlQ=

Просмотреть файл

@ -6,6 +6,8 @@ import * as cp from 'child_process';
import * as os from 'os';
import path = require('path');
/* eslint-disable */ // When editing this file, please remove this and fix the linting concerns.
import {
DotnetAcquisitionCompleted,
DotnetAcquisitionInstallError,
@ -13,10 +15,8 @@ import {
DotnetAcquisitionScriptOutput,
DotnetAcquisitionTimeoutError,
DotnetAcquisitionUnexpectedError,
OffilneDetectionLogicTriggered,
DotnetOfflineFailure,
EventBasedError,
EventCancellationError,
} from '../EventStream/EventStreamEvents';
import { timeoutConstants } from '../Utils/ErrorHandler'
@ -33,8 +33,6 @@ import { IInstallScriptAcquisitionWorker } from './IInstallScriptAcquisitionWork
import { DotnetInstall } from './DotnetInstall';
import { DotnetInstallMode } from './DotnetInstallMode';
import { WebRequestWorker } from '../Utils/WebRequestWorker';
/* tslint:disable:no-any */
/* tslint:disable:only-arrow-functions */
export class AcquisitionInvoker extends IAcquisitionInvoker {
protected readonly scriptWorker: IInstallScriptAcquisitionWorker;
@ -113,6 +111,8 @@ You will need to restart VS Code after these changes. If PowerShell is still not
}
catch (error : any)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const newError = new EventBasedError('DotnetAcquisitionUnexpectedError', error?.message, error?.stack)
this.eventStream.post(new DotnetAcquisitionUnexpectedError(newError, install));
reject(newError);

Просмотреть файл

@ -59,8 +59,7 @@ import {
GetDotnetInstallInfo,
IsEquivalentInstallationFile,
IsEquivalentInstallation
} from './DotnetInstall';
import { DotnetInstall } from './DotnetInstall';
, DotnetInstall } from './DotnetInstall';
import { InstallationGraveyard } from './InstallationGraveyard';
import { InstallTrackerSingleton } from './InstallTrackerSingleton';
import { DotnetInstallMode } from './DotnetInstallMode';
@ -69,7 +68,6 @@ import { IExtensionState } from '../IExtensionState';
import { CommandExecutor } from '../Utils/CommandExecutor';
import { getInstallFromContext, getInstallIdCustomArchitecture } from '../Utils/InstallIdUtilities';
/* tslint:disable:no-any */
export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
{
@ -91,7 +89,7 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
public async uninstallAll(eventStream : IEventStream, storagePath : string, extensionState : IExtensionState): Promise<void>
{
eventStream.post(new DotnetUninstallAllStarted());
await InstallTrackerSingleton.getInstance(eventStream, extensionState).clearPromises();
InstallTrackerSingleton.getInstance(eventStream, extensionState).clearPromises();
this.removeFolderRecursively(eventStream, storagePath);
@ -286,7 +284,7 @@ To keep your .NET version up to date, please reconnect to the internet at your s
// Put this promise into the list so we can let other requests run at the same time
// Allows us to return the end result of this current request for any following duplicates while we are still running.
await InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).addPromise(install, acquisitionPromise);
InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).addPromise(install, acquisitionPromise);
return acquisitionPromise.then((res) => ({ dotnetPath: res }));
}
}
@ -303,7 +301,7 @@ To keep your .NET version up to date, please reconnect to the internet at your s
private async acquireLocalCore(context: IAcquisitionWorkerContext, mode: DotnetInstallMode, install : DotnetInstall, acquisitionInvoker : IAcquisitionInvoker): Promise<string>
{
const version = context.acquisitionContext.version!;
this.checkForPartialInstalls(context, install);
this.checkForPartialInstalls(context, install).catch(() => {});
let installedVersions = await InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).getExistingInstalls(true);
const dotnetInstallDir = context.installDirectoryProvider.getInstallDir(install.installId);
@ -366,7 +364,7 @@ To keep your .NET version up to date, please reconnect to the internet at your s
{
if(!(await this.sdkIsFound(context, context.acquisitionContext.version)))
{
InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).untrackInstalledVersion(context, install);
await InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).untrackInstalledVersion(context, install);
return null;
}
}
@ -451,6 +449,8 @@ To keep your .NET version up to date, please reconnect to the internet at your s
}
else
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const newError = new EventBasedError('DotnetAcquisitionError', `.NET Acquisition Failed: ${error?.message ?? JSON.stringify(error)}`);
return newError;
}
@ -460,7 +460,7 @@ To keep your .NET version up to date, please reconnect to the internet at your s
{
const installingVersion = await globalInstallerResolver.getFullySpecifiedVersion();
context.eventStream.post(new DotnetGlobalVersionResolutionCompletionEvent(`The version we resolved that was requested is: ${installingVersion}.`));
this.checkForPartialInstalls(context, install);
this.checkForPartialInstalls(context, install).catch(() => {});
const installedVersions = await InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).getExistingInstalls(true);
@ -499,7 +499,7 @@ ${WinMacGlobalInstaller.InterpretExitCode(installerResult)}`), install);
throw err;
}
TelemetryUtilities.setDotnetSDKTelemetryToMatch(context.isExtensionTelemetryInitiallyEnabled, this.extensionContext, context, this.utilityContext);
TelemetryUtilities.setDotnetSDKTelemetryToMatch(context.isExtensionTelemetryInitiallyEnabled, this.extensionContext, context, this.utilityContext).catch(() => {});
try
{
@ -511,14 +511,19 @@ ${WinMacGlobalInstaller.InterpretExitCode(installerResult)}`), install);
{
const executor = new CommandExecutor(context, this.utilityContext);
const result = await executor.execute(CommandExecutor.makeCommand('which', ['dotnet']));
if(result.status === '0')
if(result?.status === '0')
{
context.eventStream.post(new DotnetInstallationValidated(install));
dotnetPath = result.stdout;
}
else
{
error.message += `Which dotnet returned ${result.stdout} and ${result.stderr}.`;
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
error.message ??= 'The .NET SDK installer did not install the SDK correctly.';
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
error.message += `Which dotnet returned ${result?.stdout} and ${result?.stderr}.`;
throw error;
}
}
@ -562,7 +567,7 @@ ${WinMacGlobalInstaller.InterpretExitCode(installerResult)}`), install);
{
if(legacyInstall.dotnetInstall.installId.includes(version))
{
context.eventStream.post(new DotnetLegacyInstallRemovalRequestEvent(`Trying to remove legacy install: ${legacyInstall} of ${version}.`));
context.eventStream.post(new DotnetLegacyInstallRemovalRequestEvent(`Trying to remove legacy install: ${JSON.stringify(legacyInstall)} of ${version}.`));
await this.uninstallLocal(context, legacyInstall.dotnetInstall);
}
}
@ -601,8 +606,8 @@ ${WinMacGlobalInstaller.InterpretExitCode(installerResult)}`), install);
const dotnetInstallDir = context.installDirectoryProvider.getInstallDir(install.installId);
const graveyard = new InstallationGraveyard(context);
graveyard.add(install, dotnetInstallDir);
context.eventStream.post(new DotnetInstallGraveyardEvent(`Attempting to remove .NET at ${install} in path ${dotnetInstallDir}`));
await graveyard.add(install, dotnetInstallDir);
context.eventStream.post(new DotnetInstallGraveyardEvent(`Attempting to remove .NET at ${JSON.stringify(install)} in path ${dotnetInstallDir}`));
await InstallTrackerSingleton.getInstance(context.eventStream, context.extensionState).untrackInstalledVersion(context, install, force);
// this is the only place where installed and installing could deal with pre existing installing id
@ -613,7 +618,7 @@ ${WinMacGlobalInstaller.InterpretExitCode(installerResult)}`), install);
context.eventStream.post(new DotnetUninstallStarted(`Attempting to remove .NET ${install.installId}.`));
this.removeFolderRecursively(context.eventStream, dotnetInstallDir);
context.eventStream.post(new DotnetUninstallCompleted(`Uninstalled .NET ${install.installId}.`));
graveyard.remove(install);
await graveyard.remove(install);
context.eventStream.post(new DotnetInstallGraveyardEvent(`Success at uninstalling ${JSON.stringify(install)} in path ${dotnetInstallDir}`));
}
else
@ -627,6 +632,7 @@ Other dependents remain.`));
catch(error : any)
{
context.eventStream.post(new SuppressedAcquisitionError(error, `The attempt to uninstall .NET ${install.installId} failed - was .NET in use?`));
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
return error?.message ?? '1';
}
}
@ -663,6 +669,7 @@ Other dependents remain.`));
{
await new CommandExecutor(context, this.utilityContext).endSudoProcessMaster(context.eventStream);
context.eventStream.post(new SuppressedAcquisitionError(error, `The attempt to uninstall .NET ${install.installId} failed - was .NET in use?`));
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
return error?.message ?? '1';
}
}

Просмотреть файл

@ -2,6 +2,9 @@
* Licensed to the .NET Foundation under one or more agreements.
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
/* eslint-disable */ // When editing this file, please remove this and fix the linting concerns.
import * as cp from 'child_process';
import * as fs from 'fs';
import * as path from 'path';

Просмотреть файл

@ -11,7 +11,6 @@ import { DotnetDistroSupportStatus } from './LinuxVersionResolver';
import { DotnetInstallMode } from './DotnetInstallMode';
import { IDistroDotnetSDKProvider } from './IDistroDotnetSDKProvider';
import { DotnetVersionResolutionError, EventBasedError } from '../EventStream/EventStreamEvents';
/* tslint:disable:no-any */
export class GenericDistroSDKProvider extends IDistroDotnetSDKProvider
{
@ -165,6 +164,7 @@ export class GenericDistroSDKProvider extends IDistroDotnetSDKProvider
return Promise.resolve(DotnetDistroSupportStatus.Unsupported);
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(this.myVersionDetails().hasOwnProperty(this.preinstallCommandKey))
{
// If preinstall commands exist ( to add the msft feed ) then it's a microsoft feed.
@ -217,6 +217,6 @@ Please refer to https://learn.microsoft.com/en-us/dotnet/core/install/linux if y
}
protected isPackageFoundInSearch(resultOfSearchCommand: any, searchCommandExitCode : string): boolean {
return resultOfSearchCommand.trim() !== '' && searchCommandExitCode === '0';
return (resultOfSearchCommand as string).trim() !== '' && searchCommandExitCode === '0';
}
}

Просмотреть файл

@ -24,8 +24,8 @@ import { DotnetFeatureBandDoesNotExistError,
import { FileUtilities } from '../Utils/FileUtilities';
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
/* tslint:disable:no-any */
/* tslint:disable:only-arrow-functions */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/**
* @remarks
@ -221,7 +221,9 @@ export class GlobalInstallerResolver {
const sdks: any[] = [];
const releasesKeyAlias = this.releasesSdksKey; // the forEach creates a separate 'this', so we introduce this copy to reduce ambiguity to the compiler
releases.forEach(function (release : any) {
releases.forEach(function (release : any)
{
// eslint-disable-next-line prefer-spread
sdks.push.apply(sdks, release[releasesKeyAlias]);
});
@ -379,7 +381,7 @@ Your architecture: ${os.arch()}. Your OS: ${os.platform()}.`), getInstallFromCon
}
}
const availableBands = Array.from(new Set(sdks.map((x : any) => versionUtils.getFeatureBandFromVersion(x[this.releasesSdkVersionKey], this.context.eventStream, this.context))));
const availableBands : string[] = Array.from(new Set(sdks.map((x : any) => versionUtils.getFeatureBandFromVersion(x[this.releasesSdkVersionKey], this.context.eventStream, this.context))));
const err = new DotnetFeatureBandDoesNotExistError(new EventBasedError('DotnetFeatureBandDoesNotExistError',
`The feature band '${band}' doesn't exist for the SDK major version '${version}'.
Available feature bands for this SDK version are ${availableBands}.`), getInstallFromContext(this.context));

Просмотреть файл

@ -18,7 +18,7 @@ import { ICommandExecutor } from '../Utils/ICommandExecutor';
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
import { IUtilityContext } from '../Utils/IUtilityContext';
import { getInstallFromContext } from '../Utils/InstallIdUtilities';
/* tslint:disable:no-any */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/**
* This interface describes the functionality needed to manage the .NET SDK on a specific distro and version of Linux.
@ -33,7 +33,7 @@ export abstract class IDistroDotnetSDKProvider {
protected distroVersion : DistroVersionPair;
protected versionResolver : VersionResolver;
protected context : IAcquisitionWorkerContext;
protected distroJson : any | null = null;
protected distroJson : any = null;
protected preinstallCommandKey = 'preInstallCommands';
protected installCommandKey = 'installCommand';
@ -300,11 +300,13 @@ If you would like to contribute to the list of supported distros, please visit:
protected myDistroStrings(stringKey : string) : string
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
return this.distroJson[this.distroVersion.distro][stringKey];
}
protected myDistroCommands(commandKey : string) : CommandExecutorCommand[]
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
return this.distroJson[this.distroVersion.distro][commandKey] as CommandExecutorCommand[];
}
@ -312,8 +314,11 @@ If you would like to contribute to the list of supported distros, please visit:
{
const validCommands : string[] = [];
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const baseCommands = (Object.values(this.distroJson[this.distroVersion.distro])
.filter((x : any) => x && Array.isArray(x) && ((x[0] as CommandExecutorCommand).commandParts))).flat();
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
let preInstallCommands = this.myVersionDetails()[this.preinstallCommandKey] as CommandExecutorCommand[];
if(!preInstallCommands)
{
@ -342,11 +347,16 @@ If you would like to contribute to the list of supported distros, please visit:
protected allPackages() : string[]
{
let allPackages : string[] = [];
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const distroPackages = this.distroJson[this.distroVersion.distro][this.distroPackagesKey];
for(const packageSet of distroPackages)
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
allPackages = allPackages.concat(packageSet[this.sdkKey]);
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
allPackages = allPackages.concat(packageSet[this.runtimeKey])
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
allPackages = allPackages.concat(packageSet[this.aspNetKey])
}
return allPackages;

Просмотреть файл

@ -48,7 +48,7 @@ export class InstallScriptAcquisitionWorker implements IInstallScriptAcquisition
this.context.eventStream.post(new DotnetInstallScriptAcquisitionCompleted());
return this.scriptFilePath;
}
catch (error)
catch (error : any)
{
Debugging.log('An error occurred processing the install script.');
this.context.eventStream.post(new DotnetInstallScriptAcquisitionError(error as Error, getInstallFromContext(this.context)));

Просмотреть файл

@ -39,8 +39,6 @@ import { DotnetCoreAcquisitionWorker } from './DotnetCoreAcquisitionWorker';
import { IEventStream } from '../EventStream/EventStream';
import { IExtensionState } from '../IExtensionState';
import { IDotnetAcquireContext } from '..';
/* tslint:disable:no-any */
interface InProgressInstall
{
@ -91,6 +89,7 @@ export class InstallTrackerSingleton
{
if(alreadyHoldingLock)
{
// eslint-disable-next-line @typescript-eslint/await-thenable
return await f(...(args));
}
else
@ -99,6 +98,7 @@ export class InstallTrackerSingleton
await lockfile.lock(lockPath, { retries: { retries: 10, minTimeout: 5, maxTimeout: 10000 } })
.then(async (release) =>
{
// eslint-disable-next-line @typescript-eslint/await-thenable
returnResult = await f(...(args));
this.eventStream?.post(new DotnetLockReleasedEvent(`Lock about to be released.`, new Date().toISOString(), lockPath, lockPath));
return release();
@ -113,7 +113,13 @@ export class InstallTrackerSingleton
catch(e : any)
{
// Either the lock could not be acquired or releasing it failed
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
this.eventStream.post(new DotnetLockErrorEvent(e, e?.message ?? 'Unable to acquire lock to update installation state', new Date().toISOString(), lockPath, lockPath));
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
throw new EventBasedError('DotnetLockErrorEvent', e?.message, e?.stack);
}
@ -288,10 +294,8 @@ ${convertedInstalls.map(x => `${JSON.stringify(x.dotnetInstall)} owned by ${x.in
{
if(installRecord.length > 1)
{
/* tslint:disable:prefer-template */
this.eventStream.post(new DuplicateInstallDetected(`The install
${(install)} has a duplicated record ${installRecord.length} times in the extension state.
${installRecord.map(x => x.installingExtensions.join(' ') + InstallToStrings(x.dotnetInstall)).join(' ') + '\n'}`));
this.eventStream.post(new DuplicateInstallDetected(`The install ${(JSON.stringify(install))} has a duplicated record ${installRecord.length} times in the extension state.
${installRecord.map(x => `${x.installingExtensions.join(' ')} ${JSON.stringify(InstallToStrings(x.dotnetInstall))}`)}\n`));
}
const preExistingRecord = installRecord.at(0);
@ -342,7 +346,7 @@ ${convertedInstalls.map(x => `${JSON.stringify(x.dotnetInstall)} owned by ${x.in
// Did this extension already mark itself as having ownership of this install? If so, we can skip re-adding it.
if(!(existingInstall?.installingExtensions.includes(context.acquisitionContext?.requestingExtensionId ?? null)))
{
this.eventStream.post(new SkipAddingInstallEvent(`Skipped adding ${install} to the state because it was already there with the same owner.`));
this.eventStream.post(new SkipAddingInstallEvent(`Skipped adding ${JSON.stringify(install)} to the state because it was already there with the same owner.`));
existingInstall!.installingExtensions.push(context.acquisitionContext?.requestingExtensionId ?? null);
existingVersions[preExistingInstallIndex] = existingInstall!;
}

Просмотреть файл

@ -3,9 +3,9 @@
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
import { IsEquivalentInstallationFile } from './DotnetInstall';
import { IsEquivalentInstallationFile , DotnetInstall } from './DotnetInstall';
import { getAssumedInstallInfo } from '../Utils/InstallIdUtilities';
import { DotnetInstall } from './DotnetInstall';
interface LocalDotnetInstall
{

Просмотреть файл

@ -40,8 +40,8 @@ export class LinuxGlobalInstaller extends IGlobalInstaller {
await this.linuxSDKResolver.Initialize();
const dotnetFolder = await (await this.linuxSDKResolver.distroCall()).getDotnetVersionSupportStatus(specificSDKVersionInstalled, 'sdk') === DotnetDistroSupportStatus.Distro ?
await (await this.linuxSDKResolver.distroCall()).getExpectedDotnetDistroFeedInstallationDirectory() :
await (await this.linuxSDKResolver.distroCall()).getExpectedDotnetMicrosoftFeedInstallationDirectory();
(await this.linuxSDKResolver.distroCall()).getExpectedDotnetDistroFeedInstallationDirectory() :
(await this.linuxSDKResolver.distroCall()).getExpectedDotnetMicrosoftFeedInstallationDirectory();
return dotnetFolder;
}

Просмотреть файл

@ -88,7 +88,9 @@ export class LinuxVersionResolver
public baseUnsupportedDistroErrorMessage = 'We are unable to detect the distro or version of your machine';
public unsupportedDistroErrorMessage = `Your current distro is not yet supported. We are expanding this list based on community feed back and contributions.
If you would like to contribute to the list of supported distros, please visit: https://github.com/dotnet/vscode-dotnet-runtime/blob/main/Documentation/adding-distros.md`;
public redhatUnsupportedDistroErrorMessage = 'Red Hat Enterprise Linux 7.0 is currently not supported. Follow the instructions here to download the .NET SDK: https://learn.microsoft.com/en-us/dotnet/core/install/linux-rhel#rhel-7--net-6. Or, install Red Hat Enterprise Linux 8.0 or Red Hat Enterprise Linux 9.0 from https://access.redhat.com/downloads/';
public redhatUnsupportedDistroErrorMessage = `Red Hat Enterprise Linux 7.0 is currently not supported.
Follow the instructions here to download the .NET SDK: https://learn.microsoft.com/en-us/dotnet/core/install/linux-rhel#rhel-7--net-6.
Or, install Red Hat Enterprise Linux 8.0 or Red Hat Enterprise Linux 9.0 from https://access.redhat.com/downloads/;`
protected acquireCtx: IDotnetAcquireContext | null | undefined;
constructor(private readonly workerContext : IAcquisitionWorkerContext, private readonly utilityContext : IUtilityContext,
@ -231,7 +233,7 @@ If you would like to contribute to the list of supported distros, please visit:
if(supportStatus === DotnetDistroSupportStatus.Distro)
{
const microsoftFeedDir = await this.distroSDKProvider!.getExpectedDotnetMicrosoftFeedInstallationDirectory();
const microsoftFeedDir = this.distroSDKProvider!.getExpectedDotnetMicrosoftFeedInstallationDirectory();
if(fs.existsSync(microsoftFeedDir))
{
const err = new DotnetConflictingLinuxInstallTypesError(new EventCancellationError('DotnetConflictingLinuxInstallTypesError',
@ -243,7 +245,7 @@ If you would like to contribute to the list of supported distros, please visit:
}
else if(supportStatus === DotnetDistroSupportStatus.Microsoft)
{
const distroFeedDir = await this.distroSDKProvider!.getExpectedDotnetDistroFeedInstallationDirectory();
const distroFeedDir = this.distroSDKProvider!.getExpectedDotnetDistroFeedInstallationDirectory();
if(fs.existsSync(distroFeedDir))
{
const err = new DotnetConflictingLinuxInstallTypesError(new EventCancellationError('DotnetConflictingLinuxInstallTypesError',
@ -264,8 +266,8 @@ If you would like to contribute to the list of supported distros, please visit:
await this.Initialize();
if(existingInstall && path.resolve(existingInstall) !== path.resolve(
supportStatus === DotnetDistroSupportStatus.Distro ? await this.distroSDKProvider!.getExpectedDotnetDistroFeedInstallationDirectory()
: await this.distroSDKProvider!.getExpectedDotnetMicrosoftFeedInstallationDirectory() ))
supportStatus === DotnetDistroSupportStatus.Distro ? this.distroSDKProvider!.getExpectedDotnetDistroFeedInstallationDirectory()
: this.distroSDKProvider!.getExpectedDotnetMicrosoftFeedInstallationDirectory() ))
{
const err = new DotnetCustomLinuxInstallExistsError(new EventCancellationError('DotnetCustomLinuxInstallExistsError',
this.conflictingCustomInstallErrorMessage + existingInstall),

Просмотреть файл

@ -7,9 +7,7 @@ import { ICommandExecutor } from '../Utils/ICommandExecutor';
import { IUtilityContext } from '../Utils/IUtilityContext';
import { GenericDistroSDKProvider } from './GenericDistroSDKProvider';
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
import { DotnetInstallMode } from './DotnetInstallMode';
import { DistroVersionPair } from './LinuxVersionResolver';
/* tslint:disable:no-any */
export class RedHatDistroSDKProvider extends GenericDistroSDKProvider
{
@ -20,8 +18,10 @@ export class RedHatDistroSDKProvider extends GenericDistroSDKProvider
protected myVersionDetails() : any
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const distroVersions = this.distroJson[this.distroVersion.distro][this.distroVersionsKey];
const targetVersion = Math.floor(parseFloat(this.distroVersion.version[0])).toFixed(1);
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const versionData = distroVersions.filter((x: { [x: string]: string; }) => x[this.versionKey] === String(targetVersion));
return versionData;
}

Просмотреть файл

@ -13,7 +13,7 @@ import {
EventBasedError
} from '../EventStream/EventStreamEvents';
import { WebRequestWorker } from '../Utils/WebRequestWorker';
import { getInstallFromContext } from '../Utils/InstallIdUtilities';
import { getInstallFromContext , getAssumedInstallInfo } from '../Utils/InstallIdUtilities';
import { Debugging } from '../Utils/Debugging';
import { IVersionResolver } from './IVersionResolver';
@ -24,9 +24,7 @@ import { DotnetVersionSupportPhase,
IDotnetVersion
} from '../IDotnetListVersionsContext';
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
import { getAssumedInstallInfo } from '../Utils/InstallIdUtilities';
import { DotnetInstallMode } from './DotnetInstallMode';
/* tslint:disable:no-any */
export class VersionResolver implements IVersionResolver {
protected webWorker: WebRequestWorker;
@ -56,7 +54,7 @@ export class VersionResolver implements IVersionResolver {
*/
public async GetAvailableDotnetVersions(commandContext: IDotnetListVersionsContext | undefined) : Promise<IDotnetListVersionsResult>
{
const getSdkVersions : boolean = !commandContext?.listRuntimes;
const getSdkVersions = !commandContext?.listRuntimes;
const availableVersions : IDotnetListVersionsResult = [];
const response : any = await this.webWorker.getCachedData();
@ -71,16 +69,23 @@ export class VersionResolver implements IVersionResolver {
}
else
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const releases = response['releases-index'];
for(const release of releases)
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(release['release-type'] === 'lts' || release['release-type'] === 'sts')
{
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
availableVersions.push({
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
supportStatus: (release['release-type'] as DotnetVersionSupportStatus),
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
supportPhase: (release['support-phase'] as DotnetVersionSupportPhase),
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
version: release[getSdkVersions ? 'latest-sdk' : 'latest-runtime'],
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
channelVersion: release['channel-version']
} as IDotnetVersion
);
@ -101,6 +106,8 @@ export class VersionResolver implements IVersionResolver {
}
catch(error : any)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
throw new EventBasedError(error, error?.message, error?.stack);
}
@ -114,8 +121,9 @@ export class VersionResolver implements IVersionResolver {
}
catch (error : any)
{
this.context.eventStream.post(new DotnetVersionResolutionError(new EventCancellationError('DotnetVersionResolutionError',
error?.message ?? ''), getAssumedInstallInfo(version, mode)));
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
this.context.eventStream.post(new DotnetVersionResolutionError(new EventCancellationError('DotnetVersionResolutionError', error?.message ?? ''), getAssumedInstallInfo(version, mode)));
reject(error);
}
});

Просмотреть файл

@ -36,9 +36,6 @@ import { IUtilityContext } from '../Utils/IUtilityContext';
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
import { DotnetInstall } from './DotnetInstall';
import { CommandExecutorResult } from '../Utils/CommandExecutorResult';
/* tslint:disable:only-arrow-functions */
/* tslint:disable:no-empty */
/* tslint:disable:no-any */
namespace validationPromptConstants
{
@ -302,11 +299,15 @@ This report should be made at https://github.com/dotnet/vscode-dotnet-runtime/is
}
catch(error : any)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(error?.message?.includes('ENOENT'))
{
this.acquisitionContext.eventStream.post(new DotnetFileIntegrityFailureEvent(`The file ${installerFile} was not found, so we couldn't verify it.
Please try again, or download the .NET Installer file yourself. You may also report your issue at https://github.com/dotnet/vscode-dotnet-runtime/issues.`));
}
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
else if(error?.message?.includes('EPERM'))
{
this.acquisitionContext.eventStream.post(new DotnetFileIntegrityFailureEvent(`The file ${installerFile} did not have the correct permissions scope to be assessed.
@ -316,6 +317,8 @@ Permissions: ${JSON.stringify(await this.commandRunner.execute(CommandExecutor.m
}
}
// async is needed to match the interface even if we don't use await.
// eslint-disable-next-line @typescript-eslint/require-await
public async getExpectedGlobalSDKPath(specificSDKVersionInstalled : string, installedArch : string) : Promise<string>
{
if(os.platform() === 'win32')
@ -420,14 +423,22 @@ Please correct your PATH variable or make sure the 'open' utility is installed s
}
catch(error : any)
{
if(error?.message?.includes('EPERM'))
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if((error?.message as string)?.includes('EPERM'))
{
error.message = `The installer does not have permission to execute. Please try running as an administrator. ${error.message}.
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
error.message = `The installer does not have permission to execute. Please try running as an administrator. ${error?.message}.
Permissions: ${JSON.stringify(await this.commandRunner.execute(CommandExecutor.makeCommand('icacls', [`"${installerPath}"`])))}`;
}
else if(error?.message?.includes('ENOENT'))
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
else if((error?.message as string)?.includes('ENOENT'))
{
error.message = `The .NET Installation files were not found. Please try again. ${error.message}`;
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
error.message = `The .NET Installation files were not found. Please try again. ${error?.message}`;
}
throw error;
}

Просмотреть файл

@ -8,13 +8,10 @@ import { IDotnetInstallationContext } from '../Acquisition/IDotnetInstallationCo
import { EventType } from './EventType';
import { IEvent } from './IEvent';
import { TelemetryUtilities } from './TelemetryUtilities';
import { InstallToStrings } from '../Acquisition/DotnetInstall';
import { DotnetInstall } from '../Acquisition/DotnetInstall';
import { InstallToStrings , DotnetInstall } from '../Acquisition/DotnetInstall';
import { DotnetInstallMode } from '../Acquisition/DotnetInstallMode';
import { DotnetInstallType } from '../IDotnetAcquireContext';
// tslint:disable max-classes-per-file
export class EventCancellationError extends Error
{
constructor(public readonly eventType : string, msg : string, stack ? : string)
@ -388,8 +385,8 @@ export class UserManualInstallFailure extends SuppressedAcquisitionError {
eventName = 'UserManualInstallFailure';
}
export class OffilneDetectionLogicTriggered extends SuppressedAcquisitionError {
eventName = 'OffilneDetectionLogicTriggered';
export class OfflineDetectionLogicTriggered extends SuppressedAcquisitionError {
eventName = 'OfflineDetectionLogicTriggered';
}
export class DotnetInstallationValidationMissed extends SuppressedAcquisitionError {

Просмотреть файл

@ -2,7 +2,6 @@
* Licensed to the .NET Foundation under one or more agreements.
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
/* tslint:disable:no-any */
export interface IWindowDisplayWorker {
showErrorMessage(message: string, callback: (response: string| undefined) => void, ...items: string[]): void;

Просмотреть файл

@ -25,7 +25,6 @@ import
import { IEventStream } from './EventStream';
import { IEvent } from './IEvent';
import { IModalEventRepublisher } from './IModalEventPublisher';
/* tslint:disable:no-empty */
export class ModalEventRepublisher implements IModalEventRepublisher
{
@ -113,5 +112,5 @@ export class ModalEventRepublisher implements IModalEventRepublisher
}
public dispose(): void {
}
}
}

Просмотреть файл

@ -46,7 +46,7 @@ export class TelemetryObserver implements IEventStreamObserver {
vscode.env.onDidChangeTelemetryEnabled((newIsTelemetryEnabledSetting: boolean) =>
{
this.isExtensionTelemetryEnabled = newIsTelemetryEnabledSetting;
TelemetryUtilities.setDotnetSDKTelemetryToMatch(this.isExtensionTelemetryEnabled, this.extensionContext, this.acquisitionContext, this.utilityContext);
TelemetryUtilities.setDotnetSDKTelemetryToMatch(this.isExtensionTelemetryEnabled, this.extensionContext, this.acquisitionContext, this.utilityContext).catch(() => {});
});
}
@ -82,6 +82,6 @@ export class TelemetryObserver implements IEventStreamObserver {
public dispose(): void
{
this.telemetryReporter.dispose();
this.telemetryReporter.dispose().catch(() => {});
}
}

Просмотреть файл

@ -5,7 +5,8 @@
import * as os from 'os';
import { env, window } from 'vscode';
import { IWindowDisplayWorker } from './IWindowDisplayWorker';
/* tslint:disable:no-any */
/* eslint-disable */ // When editing this file, please remove this and fix the linting concerns.
export class WindowDisplayWorker implements IWindowDisplayWorker {
private readonly pathPlaceholder = os.platform() === 'win32' ? 'C:\\Program Files\\dotnet\\dotnet.exe' : '/usr/local/share/dotnet/dotnet';

Просмотреть файл

@ -7,6 +7,6 @@ import { EnsureDependenciesErrorConfiguration } from './Utils/ErrorHandler';
export interface IDotnetEnsureDependenciesContext {
command: string;
arguments: cp.SpawnSyncOptionsWithStringEncoding | undefined;
arguments: cp.SpawnSyncOptionsWithStringEncoding;
errorConfiguration?: EnsureDependenciesErrorConfiguration;
}

Просмотреть файл

@ -5,5 +5,4 @@
import { Memento } from 'vscode';
/* tslint:disable:no-empty-interface */
export interface IExtensionState extends Memento {}
export type IExtensionState = Memento

Просмотреть файл

@ -58,9 +58,6 @@ import { CommandExecutorResult } from './CommandExecutorResult';
import { isRunningUnderWSL, loopWithTimeoutOnCond } from './TypescriptUtilities';
import { IEventStream } from '../EventStream/EventStream';
/* tslint:disable:no-any */
/* tslint:disable:no-string-literal */
export class CommandExecutor extends ICommandExecutor
{
private pathTroubleshootingOption = 'Troubleshoot';
@ -173,7 +170,7 @@ ${stderr}`));
const processAliveOkSentinelFile = path.join(this.sudoProcessCommunicationDir, 'ok.txt');
const fakeLockFile = path.join(this.sudoProcessCommunicationDir, 'fakeLockFile'); // We need a file to lock the directory in the API besides the dir lock file
await (this.fileUtil as FileUtilities).writeFileOntoDisk('', fakeLockFile, false, this.context?.eventStream!);
await (this.fileUtil as FileUtilities).writeFileOntoDisk('', fakeLockFile, false, this.context?.eventStream);
// Prepare to lock directory
const directoryLock = 'dir.lock';
@ -186,9 +183,9 @@ ${stderr}`));
{
this.context?.eventStream.post(new DotnetLockAcquiredEvent(`Lock Acquired.`, new Date().toISOString(), directoryLockPath, fakeLockFile));
await this.fileUtil.wipeDirectory(this.sudoProcessCommunicationDir, this.context?.eventStream, ['.txt']);
(this.fileUtil as FileUtilities).wipeDirectory(this.sudoProcessCommunicationDir, this.context?.eventStream, ['.txt']);
await this.fileUtil.writeFileOntoDisk('', processAliveOkSentinelFile, true, this.context?.eventStream);
await (this.fileUtil as FileUtilities).writeFileOntoDisk('', processAliveOkSentinelFile, true, this.context?.eventStream);
this.context?.eventStream.post(new SudoProcAliveCheckBegin(`Looking for Sudo Process Master, wrote OK file. ${new Date().toISOString()}`));
const waitTime = this.context?.timeoutSeconds ? ((this.context?.timeoutSeconds/3) * 1000) : 180000;
@ -242,7 +239,7 @@ It had previously spawned: ${this.hasEverLaunchedSudoFork}.`), getInstallFromCon
const outputFile = path.join(this.sudoProcessCommunicationDir, 'output.txt');
const fakeLockFile = path.join(this.sudoProcessCommunicationDir, 'fakeLockFile'); // We need a file to lock the directory in the API besides the dir lock file
await (this.fileUtil as FileUtilities).writeFileOntoDisk('', fakeLockFile, false, this.context?.eventStream!);
await (this.fileUtil as FileUtilities).writeFileOntoDisk('', fakeLockFile, false, this.context?.eventStream);
// Prepare to lock directory
const directoryLock = 'dir.lock';
@ -258,7 +255,7 @@ It had previously spawned: ${this.hasEverLaunchedSudoFork}.`), getInstallFromCon
this.context?.eventStream.post(new DotnetLockAcquiredEvent(`Lock Acquired.`, new Date().toISOString(), directoryLockPath, fakeLockFile));
(this.fileUtil as FileUtilities).wipeDirectory(this.sudoProcessCommunicationDir, this.context?.eventStream, ['.txt', '.json']);
await (this.fileUtil as FileUtilities).writeFileOntoDisk(`${commandToExecuteString}`, commandFile, true, this.context?.eventStream!);
await (this.fileUtil as FileUtilities).writeFileOntoDisk(`${commandToExecuteString}`, commandFile, true, this.context?.eventStream);
this.context?.eventStream.post(new SudoProcCommandExchangeBegin(`Handing command off to master process. ${new Date().toISOString()}`));
this.context?.eventStream.post(new CommandProcessorExecutionBegin(`The command ${commandToExecuteString} was forwarded to the master process to run.`));
@ -281,7 +278,7 @@ It had previously spawned: ${this.hasEverLaunchedSudoFork}.`), getInstallFromCon
status : (fs.readFileSync(statusFile, 'utf8')).trim()
} as CommandExecutorResult;
this.context?.eventStream.post(new DotnetLockReleasedEvent(`Lock about to be released.`, new Date().toISOString(), directoryLockPath, fakeLockFile));
await this.fileUtil.wipeDirectory(this.sudoProcessCommunicationDir, this.context?.eventStream, ['.txt']);
(this.fileUtil as FileUtilities).wipeDirectory(this.sudoProcessCommunicationDir, this.context?.eventStream, ['.txt']);
return release();
});
@ -377,15 +374,23 @@ ${(commandOutputJson as CommandExecutorResult).stderr}.`),
* @param terminalFailure Whether to throw up an error when executing under sudo or suppress it and return stderr
* @returns the result(s) of each command. Can throw generically if the command fails.
*/
public async execute(command : CommandExecutorCommand, options : any | null = null, terminalFailure = true) : Promise<CommandExecutorResult>
public async execute(command : CommandExecutorCommand, options : any = null, terminalFailure = true) : Promise<CommandExecutorResult>
{
const fullCommandString = `${command.commandRoot} ${command.commandParts.join(' ')}`;
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(options && !options?.cwd)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
options.cwd = path.resolve(__dirname);
}
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(options && !options?.shell)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
options.shell = true;
}
if(!options)
@ -402,15 +407,14 @@ ${(commandOutputJson as CommandExecutorResult).stderr}.`),
this.context?.eventStream.post(new CommandExecutionEvent(`Executing command ${fullCommandString}
with options ${JSON.stringify(options)}.`));
let commandResult;
if(command.runUnderSudo)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
options.name = this.getSanitizedCallerName();
// tslint:disable no-return-await
return await new Promise<CommandExecutorResult>(async (resolve, reject) =>
return new Promise<CommandExecutorResult>((resolve, reject) =>
{
execElevated(fullCommandString, options, (error?: any, execStdout?: any, execStderr?: any) =>
execElevated(fullCommandString, options, (error?: Error, execStdout?: string | Buffer, execStderr?: string | Buffer) =>
{
if(error && terminalFailure)
{
@ -421,12 +425,12 @@ with options ${JSON.stringify(options)}.`));
this.context?.eventStream.post(new CommandExecutionStdError(`The command ${fullCommandString} encountered ERROR: ${JSON.stringify(error)}`));
}
return resolve({ status: error?.code ? error.code : '0', stderr: execStderr, stdout: execStdout} as CommandExecutorResult);
return resolve({ status: error ? error.message : '0', stderr: execStderr, stdout: execStdout} as CommandExecutorResult);
});
});
}
commandResult = proc.spawnSync(command.commandRoot, command.commandParts, options);
const commandResult : proc.SpawnSyncReturns<string> = proc.spawnSync(command.commandRoot, command.commandParts, options);
if(os.platform() === 'win32')
{
@ -452,7 +456,7 @@ with options ${JSON.stringify(options)}.`));
else
{
this.context?.eventStream.post(new CommandExecutionNoStatusCodeWarning(`The command ${fullCommandString} with
result: ${commandResult.toString()} had no status or signal.`));
result: ${JSON.stringify(commandResult)} had no status or signal.`));
return '000751'; // Error code 000751 : The command did not report an exit code upon completion. This is never expected
}
}
@ -462,7 +466,7 @@ result: ${commandResult.toString()} had no status or signal.`));
}
}
private logCommandResult(commandResult : any, fullCommandStringForTelemetryOnly : string)
private logCommandResult(commandResult : proc.SpawnSyncReturns<string>, fullCommandStringForTelemetryOnly : string)
{
this.context?.eventStream.post(new CommandExecutionStatusEvent(`The command ${fullCommandStringForTelemetryOnly} exited
with status: ${commandResult.status?.toString()}.`));
@ -481,6 +485,9 @@ ${commandResult.stderr}`));
{
// 'permission' comes from an unlocalized string: https://github.com/bpasero/sudo-prompt/blob/21d9308edcf970f0a9ee0580c539b1457b3dc45b/index.js#L678
// if you reject on the password prompt on windows before SDK window pops up, no code will be set, so we need to check for this string.
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(error?.code === 126 || (error?.message as string)?.includes('permission'))
{
const cancelledErr = new CommandExecutionUserRejectedPasswordRequest(new EventCancellationError('CommandExecutionUserRejectedPasswordRequest',
@ -490,6 +497,8 @@ The user refused the password prompt.`),
this.context?.eventStream.post(cancelledErr);
return cancelledErr.error;
}
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
else if(error?.code === 111777)
{
const securityErr = new CommandExecutionUnknownCommandExecutionAttempt(new EventCancellationError('CommandExecutionUnknownCommandExecutionAttempt',
@ -632,15 +641,19 @@ Please report this at https://github.com/dotnet/vscode-dotnet-runtime/issues.`),
protected runPathCommand(pathCommand: string, troubleshootingUrl : string, displayWorker: IWindowDisplayWorker)
{
try {
try
{
proc.execSync(pathCommand);
} catch (error) {
displayWorker.showWarningMessage(`Unable to add SDK to the PATH: ${error}`,
async (response: string | undefined) => {
if (response === this.pathTroubleshootingOption) {
open(`${troubleshootingUrl}#unable-to-add-to-path`);
}
}, this.pathTroubleshootingOption);
}
catch (error : any)
{
displayWorker.showWarningMessage(`Unable to add SDK to the PATH: ${JSON.stringify(error)}`, (response: string | undefined) =>
{
if (response === this.pathTroubleshootingOption)
{
open(`${troubleshootingUrl}#unable-to-add-to-path`).catch(() => {});
}
}, this.pathTroubleshootingOption);
}
}
}

Просмотреть файл

@ -18,7 +18,6 @@ import { formatIssueUrl } from './IssueReporter';
import { IAcquisitionWorkerContext } from '../Acquisition/IAcquisitionWorkerContext';
import { GetDotnetInstallInfo } from '../Acquisition/DotnetInstall';
import { DotnetCoreAcquisitionWorker } from '../Acquisition/DotnetCoreAcquisitionWorker';
/* tslint:disable:no-any */
export enum AcquireErrorConfiguration {
DisplayAllErrorPopups = 0,
@ -54,11 +53,11 @@ Our CDN may be blocked in China or experience significant slowdown, in which cas
let showMessage = true;
export async function callWithErrorHandling<T>(callback: () => T, context: IIssueContext, requestingExtensionId?: string, acquireContext? : IAcquisitionWorkerContext): Promise<T | undefined> {
export function callWithErrorHandling<T>(callback: () => T, context: IIssueContext, requestingExtensionId?: string, acquireContext? : IAcquisitionWorkerContext): T | undefined {
const isAcquisitionError = acquireContext ? true : false;
try
{
const result = await callback();
const result = callback();
context.eventStream.post(new DotnetCommandSucceeded(context.commandName));
return result;
}
@ -76,6 +75,8 @@ export async function callWithErrorHandling<T>(callback: () => T, context: IIssu
if(acquireContext)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
context.eventStream.post(new DotnetAcquisitionFinalError(error, (caughtError?.eventType) ?? 'Unknown',
GetDotnetInstallInfo(acquireContext.acquisitionContext.version, acquireContext.acquisitionContext.mode!,
acquireContext.acquisitionContext.installType ?? 'local', acquireContext.acquisitionContext.architecture ??
@ -88,12 +89,13 @@ export async function callWithErrorHandling<T>(callback: () => T, context: IIssu
if ((error.message as string).includes(timeoutConstants.timeoutMessage))
{
context.displayWorker.showErrorMessage(`${errorConstants.errorMessage}${ context.version ? ` (${context.version})` : '' }: ${ error.message }`,
async (response: string | undefined) => {
if (response === timeoutConstants.moreInfoOption)
(response: string | undefined) =>
{
open(context.timeoutInfoUrl);
}
}, timeoutConstants.moreInfoOption);
if (response === timeoutConstants.moreInfoOption)
{
open(context.timeoutInfoUrl).catch(() => {});
}
}, timeoutConstants.moreInfoOption);
}
else if (!isCancellationStyleError(error) && showMessage)
{
@ -108,7 +110,7 @@ export async function callWithErrorHandling<T>(callback: () => T, context: IIssu
{
if (response === errorConstants.moreInfoOption)
{
open(context.moreInfoUrl);
open(context.moreInfoUrl).catch(() => {});
}
else if (response === errorConstants.hideOption)
{
@ -117,8 +119,8 @@ export async function callWithErrorHandling<T>(callback: () => T, context: IIssu
else if (response === errorConstants.reportOption)
{
const [url, issueBody] = formatIssueUrl(error, context);
context.displayWorker.copyToUserClipboard(issueBody);
open(url);
context.displayWorker.copyToUserClipboard(issueBody).catch(() => {});
open(url).catch(() => {});
}
else if (response === errorConstants.configureManuallyOption && requestingExtensionId)
{

Просмотреть файл

@ -21,7 +21,6 @@ import { DotnetCommandFallbackArchitectureEvent,
DotnetLockReleasedEvent,
SuppressedAcquisitionError
} from '../EventStream/EventStreamEvents';
/* tslint:disable:no-any */
export class FileUtilities extends IFileUtilities
{

Просмотреть файл

@ -3,8 +3,6 @@
* The .NET Foundation licenses this file to you under the MIT license.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
/*
tslint:disable:no-any */
import { CommandExecutorCommand } from './CommandExecutorCommand';
import { IAcquisitionWorkerContext } from '../Acquisition/IAcquisitionWorkerContext';

Просмотреть файл

@ -2,7 +2,6 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
/* tslint:disable:no-any */
import { IEventStream } from '../EventStream/EventStream';

Просмотреть файл

@ -4,8 +4,7 @@
* ------------------------------------------------------------------------------------------ */
import { DotnetCoreAcquisitionWorker } from '../Acquisition/DotnetCoreAcquisitionWorker';
import { looksLikeRuntimeVersion } from '../Acquisition/DotnetInstall';
import { DotnetInstall } from '../Acquisition/DotnetInstall';
import { looksLikeRuntimeVersion , DotnetInstall } from '../Acquisition/DotnetInstall';
import { DOTNET_INSTALL_MODE_LIST, DotnetInstallMode } from '../Acquisition/DotnetInstallMode';
import { IAcquisitionWorkerContext } from '../Acquisition/IAcquisitionWorkerContext';
import { DotnetInstallType } from '../IDotnetAcquireContext';

Просмотреть файл

@ -4,9 +4,11 @@
*--------------------------------------------------------------------------------------------*/
import { sanitize } from './ContentSantizer';
import { IIssueContext } from './IIssueContext';
// tslint:disable no-var-requires
const packageJson = require('../../package.json');
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
const packageJson = require('../../package.json');
const issuesUrl = `https://github.com/dotnet/vscode-dotnet-runtime/issues/new/choose`;
export function formatIssueUrl(error: Error | undefined, context: IIssueContext): [ string, string ] {
@ -14,11 +16,12 @@ export function formatIssueUrl(error: Error | undefined, context: IIssueContext)
const errorMessage = !error ? '' : `**Error Message:** ${ sanitize(error!.message) }
**Error Stack:** ${ error.stack === undefined ? '' : sanitize(error!.stack!) }`;
const issueBody = `<!-- IMPORTANT: Please be sure to remove any private information before submitting. -->
Please attach the log file located at ${ context.logger.getFileLocation() }. Note that this file may contain personal data.
**Extension Version:** ${ packageJson.version }
**Extension Version:** ${ packageJson?.version }
${ errorMessage }`;
return [issuesUrl, issueBody];

Просмотреть файл

@ -34,13 +34,12 @@ import {
DotnetOfflineFailure,
EventBasedError,
EventCancellationError,
OffilneDetectionLogicTriggered,
OfflineDetectionLogicTriggered,
SuppressedAcquisitionError,
WebRequestError,
WebRequestSent
} from '../EventStream/EventStreamEvents';
import { getInstallFromContext } from './InstallIdUtilities';
/* tslint:disable:no-any */
export class WebRequestWorker
{
@ -140,7 +139,7 @@ export class WebRequestWorker
return true;
}).catch((error : any) =>
{
eventStream.post(new OffilneDetectionLogicTriggered((error as EventCancellationError), `DNS resolution failed at microsoft.com, ${JSON.stringify(error)}.`));
eventStream.post(new OfflineDetectionLogicTriggered((error as EventCancellationError), `DNS resolution failed at microsoft.com, ${JSON.stringify(error)}.`));
return false;
});
return couldConnect;
@ -219,12 +218,16 @@ export class WebRequestWorker
await this.axiosGet(url, options)
.then(response =>
{
response.data.pipe(file);
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
response?.data?.pipe(file);
return finished(file);
});
}
catch(error : any)
{
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if(error?.message && (error?.message as string)?.includes('ENOSPC'))
{
const err = new DiskIsFullError(new EventBasedError('DiskIsFullError',
@ -235,19 +238,20 @@ export class WebRequestWorker
else
{
const err = new DotnetDownloadFailure(new EventBasedError('DotnetDownloadFailure',
`We failed to download the .NET Installer. Please try to install the .NET SDK manually.
Error: ${error.message}`), getInstallFromContext(this.context));
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
`We failed to download the .NET Installer. Please try to install the .NET SDK manually. Error: ${error?.message}`), getInstallFromContext(this.context));
this.context.eventStream.post(err);
throw err.error;
}
}
}
private async getAxiosOptions(numRetries: number, furtherOptions? : {}, keepAlive = true)
private async getAxiosOptions(numRetries: number, furtherOptions? : object, keepAlive = true) : Promise<object>
{
await this.ActivateProxyAgentIfFound();
const options = {
const options : object = {
timeout: this.websiteTimeoutMs,
'axios-retry': { retries: numRetries },
...(keepAlive && {headers: { 'Connection': 'keep-alive' }}),
@ -287,8 +291,10 @@ Error: ${error.message}`), getInstallFromContext(this.context));
if(isAxiosError(error))
{
const axiosBasedError = error as AxiosError;
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const summarizedError = new EventBasedError('WebRequestFailedFromAxios',
`Request to ${this.url} Failed: ${axiosBasedError.message}. Aborting.
`Request to ${this.url} Failed: ${axiosBasedError?.message}. Aborting.
${axiosBasedError.cause? `Error Cause: ${axiosBasedError.cause!.message}` : ``}
Please ensure that you are online.
@ -298,8 +304,9 @@ If you're on a proxy and disable registry access, you must set the proxy in our
}
else
{
const genericError = new EventBasedError('WebRequestFailedGenerically',
`Web Request to ${this.url} Failed: ${error.message}. Aborting. Stack: ${'stack' in error ? error?.stack : 'unavailable.'}`);
// Remove this when https://github.com/typescript-eslint/typescript-eslint/issues/2728 is done
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
const genericError = new EventBasedError('WebRequestFailedGenerically', `Web Request to ${this.url} Failed: ${error?.message}. Aborting. Stack: ${'stack' in error ? error?.stack : 'unavailable.'}`);
this.context.eventStream.post(new WebRequestError(genericError, getInstallFromContext(this.context)));
throw genericError;
}

Просмотреть файл

@ -3,7 +3,6 @@
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
/* tslint:disable:no-any */
export class MockEnvironmentVariableCollection implements vscode.EnvironmentVariableCollection {

Просмотреть файл

@ -41,7 +41,6 @@ import { InstallationGraveyard } from '../../Acquisition/InstallationGraveyard';
import { CommandExecutorResult } from '../../Utils/CommandExecutorResult';
const testDefaultTimeoutTimeMs = 60000;
/* tslint:disable:no-any */
export class MockExtensionContext implements IExtensionState {
private values: { [n: string]: any; } = {};

Просмотреть файл

@ -3,7 +3,6 @@
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
import { IWindowDisplayWorker } from '../../EventStream/IWindowDisplayWorker';
/* tslint:disable:no-any */
export class MockWindowDisplayWorker implements IWindowDisplayWorker {

Просмотреть файл

@ -1,3 +0,0 @@
{
"extends": "../tslint.json"
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -82,7 +82,7 @@
"test": "npm run compile --silent && node ./dist/test/functional/runTest.js",
"clean": "rimraf dist",
"compile-all": "cd ../vscode-dotnet-runtime-library && npm install && npm run compile && cd ../vscode-dotnet-sdk-extension && npm install && npm run compile",
"lint": "tslint -c ../tslint.json '../vscode-dotnet-runtime-library/src/**/*.ts' '../vscode-dotnet-sdk-extension/src/**/*.ts'",
"lint": "eslint -c .eslintrc.js --ext=.ts vscode-dotnet-runtime-library/src/**/*.ts vscode-dotnet-runtime-extension/src/**/*.ts --ignore-pattern \"**/test/\" --fix",
"webpack": "webpack --mode development"
},
"dependencies": {

Просмотреть файл

@ -42,7 +42,6 @@ import { dotnetCoreAcquisitionExtensionId } from './DotnetCoreAcquisitionId';
import { GlobalInstallerResolver } from 'vscode-dotnet-runtime-library/dist/Acquisition/GlobalInstallerResolver';
import { IAcquisitionWorkerContext } from 'vscode-dotnet-runtime-library/dist/Acquisition/IAcquisitionWorkerContext';
// tslint:disable no-var-requires
const packageJson = require('../package.json');
// Extension constants

Просмотреть файл

@ -2,8 +2,7 @@
* Licensed to the .NET Foundation under one or more agreements.
* The .NET Foundation licenses this file to you under the MIT license.
*--------------------------------------------------------------------------------------------*/
/* tslint:disable:no-any */
/* tslint:disable:only-arrow-functions */
import * as chai from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
import * as cp from 'child_process';
@ -38,13 +37,10 @@ import * as extension from '../../extension';
import { uninstallSDKExtension } from '../../ExtensionUninstall';
import { warn } from 'console';
import { InstallTrackerSingleton } from 'vscode-dotnet-runtime-library/dist/Acquisition/InstallTrackerSingleton';
import { mock } from 'node:test';
const standardTimeoutTime = 100000;
const assert = chai.assert;
chai.use(chaiAsPromised);
/* tslint:disable:no-any */
/* tslint:disable:no-unsafe-finally */
const currentSDKVersion = '7.0';
suite('DotnetCoreAcquisitionExtension End to End', function ()

Просмотреть файл

@ -1,3 +0,0 @@
{
"extends": "../tslint.json"
}

1976
yarn.lock

Разница между файлами не показана из-за своего большого размера Загрузить разницу