diff --git a/CHANGELOG.md b/CHANGELOG.md index 88142e20a..dd39cffa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ - Diagnostics related feature requests and improvements [#5951](/~https://github.com/dotnet/vscode-csharp/issues/5951) - Debug from .csproj and .sln [#5876](/~https://github.com/dotnet/vscode-csharp/issues/5876) +# 2.62.x +* Update Roslyn to 4.14.0-1.25060.2 (PR: [#7916](/~https://github.com/dotnet/vscode-csharp/pull/7916)) + * Support Extracting method with complex flow control cosntructs in them. (PR: [#76686](/~https://github.com/dotnet/roslyn/pull/76686)) + * Classify the langword attribute value in DocComments (PR: [#76678](/~https://github.com/dotnet/roslyn/pull/76678)) + * Fix FAR/rename with method type parameters (PR: [#76652](/~https://github.com/dotnet/roslyn/pull/76652)) + * Fix assembly load when file path contains URI reserved chars (PR: [#76617](/~https://github.com/dotnet/roslyn/pull/76617)) + * Reduce allocations during checksum creation. (PR: [#76524](/~https://github.com/dotnet/roslyn/pull/76524)) +* Bump xamlTools to 17.13.35709.178 (PR: [#7914](/~https://github.com/dotnet/vscode-csharp/pull/7914)) + + # 2.61.x * Update Razor to 9.0.0-preview.25052.3 (PR: [#7904](/~https://github.com/dotnet/vscode-csharp/pull/7904)) * Offer generate handler for `@bind-XX:after` and `:set` (#11350) (PR: [#11350](/~https://github.com/dotnet/razor/pull/11350)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d3d88a01f..b4d1092f1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,8 +35,8 @@ Follow these steps to build, run, and test the repository: #### Building -1. Run `npm i` - This command installs the project dependencies. -2. Run `vsts-npm-auth -config .npmrc` - This command will configure your credentials for the next command. +1. Run `npm install -g vsts-npm-auth`, then run `vsts-npm-auth -config .npmrc` - This command will configure your credentials for the next command. +2. Run `npm i` - This command installs the project dependencies. 3. Run `npm i -g gulp` - This command installs Gulp globally. 4. Run `gulp installDependencies` - This command downloads the various dependencies as specified by the version in the [package.json](package.json) file. 5. Run `code .` - This command opens the project in Visual Studio Code. diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index 30776dea7..9175e127f 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: CSharpTests: - npmCommand: 'test:unit' # Restore when integration test are stable: 'test:withoutDevKit' + npmCommand: test:withoutDevKit DevKitTests: npmCommand: test:integration:devkit pool: ${{ parameters.pool }} diff --git a/package-lock.json b/package-lock.json index 105bc1546..1e413f938 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@vscode/extension-telemetry": "^0.9.0", "@vscode/js-debug-browsers": "^1.1.0", "async-file": "2.0.2", - "cross-spawn": "6.0.5", + "cross-spawn": "6.0.6", "execa": "4.0.0", "fs-extra": "9.1.0", "http-proxy-agent": "7.0.0", @@ -56,8 +56,8 @@ "@types/uuid": "^9.0.1", "@types/vscode": "1.93.0", "@types/yauzl": "2.10.0", - "@typescript-eslint/eslint-plugin": "^8.5.0", - "@typescript-eslint/parser": "^8.5.0", + "@typescript-eslint/eslint-plugin": "^8.19.0", + "@typescript-eslint/parser": "^8.19.0", "@vscode/l10n-dev": "^0.0.35", "@vscode/test-electron": "2.3.8", "@vscode/vsce": "3.0.0", @@ -3222,21 +3222,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", - "integrity": "sha1-fBhjaTqYNxcDaG4cD6xk/8V2zbE=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz", + "integrity": "sha1-XybAqDOye8sapAK4LnbTuN2gskc=", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/type-utils": "8.5.0", - "@typescript-eslint/utils": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/type-utils": "8.19.1", + "@typescript-eslint/utils": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3247,25 +3247,21 @@ }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-8.5.0.tgz", - "integrity": "sha1-1ZDh758x8m1COZmtP2h3IyR+a8w=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-8.19.1.tgz", + "integrity": "sha1-uDb8/npwTIxl9aUOWw/4rPylwhs=", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4" }, "engines": { @@ -3276,23 +3272,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha1-OFNB3mW5dvArKVuKylS7T/1rXwc=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha1-eUz8it1PNzuc1voy42fnVloOIxs=", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3303,16 +3295,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", - "integrity": "sha1-YhWyOqOdu9jd4KTvnuD3RUEMKbE=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", + "integrity": "sha1-I3EKtSZDwZ90YBs/SgdsmPThWao=", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/utils": "8.19.1", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3321,16 +3313,15 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha1-RGXZkzHRJ2+PsgMOT5xz/gGgW/k=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha1-AVqZEoF1TtmG8uVJJjoRiNbtCow=", "dev": true, "license": "MIT", "engines": { @@ -3342,20 +3333,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", - "integrity": "sha1-bldYzy9jqobp3fpOKE4uC4G4dVc=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha1-wQlLsAvCUax2zyFVaconI2Q1A2s=", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3364,10 +3355,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -3410,16 +3399,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha1-TU/+2W0GVFRqN/qluEvc4W2VFjQ=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha1-3Y6r1GuSv2HlcyhuHAumvSQ6GFs=", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3429,18 +3418,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha1-EwKN87hm0uPi4sxBk88sHg4ExL8=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha1-/OVNfPpTUakjh9bAxb5ZjK7gcuA=", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.5.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3450,6 +3440,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha1-aHussq+IT83aim59ZcYG9GoUzUU=", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -5790,9 +5793,10 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha1-MNDvoHEt2361p24ehyG/+vprXVc=", + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -7459,9 +7463,9 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha1-qQRQHlfP3S/83tRemaVP71XkYSk=", + "version": "3.3.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha1-0G1YXOjbqQoWsFBcVDw8z7OuuBg=", "dev": true, "license": "MIT", "dependencies": { @@ -7469,7 +7473,7 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -14375,16 +14379,16 @@ "dev": true }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha1-S0kOJxKfHo5oa0XMSrY3FNxg7qE=", + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha1-udfV9+yfc29NDwl1i4YHl5BEqQA=", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-jest": { @@ -18319,77 +18323,77 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", - "integrity": "sha1-fBhjaTqYNxcDaG4cD6xk/8V2zbE=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz", + "integrity": "sha1-XybAqDOye8sapAK4LnbTuN2gskc=", "dev": true, "requires": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/type-utils": "8.5.0", - "@typescript-eslint/utils": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/type-utils": "8.19.1", + "@typescript-eslint/utils": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-8.5.0.tgz", - "integrity": "sha1-1ZDh758x8m1COZmtP2h3IyR+a8w=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-8.19.1.tgz", + "integrity": "sha1-uDb8/npwTIxl9aUOWw/4rPylwhs=", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", - "integrity": "sha1-OFNB3mW5dvArKVuKylS7T/1rXwc=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha1-eUz8it1PNzuc1voy42fnVloOIxs=", "dev": true, "requires": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0" + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" } }, "@typescript-eslint/type-utils": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", - "integrity": "sha1-YhWyOqOdu9jd4KTvnuD3RUEMKbE=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", + "integrity": "sha1-I3EKtSZDwZ90YBs/SgdsmPThWao=", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "8.5.0", - "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/utils": "8.19.1", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" } }, "@typescript-eslint/types": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-8.5.0.tgz", - "integrity": "sha1-RGXZkzHRJ2+PsgMOT5xz/gGgW/k=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha1-AVqZEoF1TtmG8uVJJjoRiNbtCow=", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", - "integrity": "sha1-bldYzy9jqobp3fpOKE4uC4G4dVc=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha1-wQlLsAvCUax2zyFVaconI2Q1A2s=", "dev": true, "requires": { - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/visitor-keys": "8.5.0", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "dependencies": { "brace-expansion": { @@ -18419,25 +18423,33 @@ } }, "@typescript-eslint/utils": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-8.5.0.tgz", - "integrity": "sha1-TU/+2W0GVFRqN/qluEvc4W2VFjQ=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha1-3Y6r1GuSv2HlcyhuHAumvSQ6GFs=", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.5.0", - "@typescript-eslint/types": "8.5.0", - "@typescript-eslint/typescript-estree": "8.5.0" + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1" } }, "@typescript-eslint/visitor-keys": { - "version": "8.5.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", - "integrity": "sha1-EwKN87hm0uPi4sxBk88sHg4ExL8=", + "version": "8.19.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha1-/OVNfPpTUakjh9bAxb5ZjK7gcuA=", "dev": true, "requires": { - "@typescript-eslint/types": "8.5.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha1-aHussq+IT83aim59ZcYG9GoUzUU=", + "dev": true + } } }, "@ungap/structured-clone": { @@ -20207,9 +20219,9 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha1-MNDvoHEt2361p24ehyG/+vprXVc=", "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -21427,16 +21439,16 @@ "dev": true }, "fast-glob": { - "version": "3.3.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha1-qQRQHlfP3S/83tRemaVP71XkYSk=", + "version": "3.3.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha1-0G1YXOjbqQoWsFBcVDw8z7OuuBg=", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" } }, "fast-json-stable-stringify": { @@ -26518,9 +26530,9 @@ "dev": true }, "ts-api-utils": { - "version": "1.3.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha1-S0kOJxKfHo5oa0XMSrY3FNxg7qE=", + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha1-udfV9+yfc29NDwl1i4YHl5BEqQA=", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index d41eedff3..eda5e2335 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ } }, "defaults": { - "roslyn": "4.13.0-3.25051.1", + "roslyn": "4.14.0-1.25060.2", "omniSharp": "1.39.12", "razor": "9.0.0-preview.25052.3", "razorOmnisharp": "7.0.0-preview.23363.1", - "xamlTools": "17.13.35703.12" + "xamlTools": "17.13.35709.178" }, "main": "./dist/extension", "l10n": "./l10n", @@ -96,7 +96,7 @@ "@vscode/extension-telemetry": "^0.9.0", "@vscode/js-debug-browsers": "^1.1.0", "async-file": "2.0.2", - "cross-spawn": "6.0.5", + "cross-spawn": "6.0.6", "execa": "4.0.0", "fs-extra": "9.1.0", "http-proxy-agent": "7.0.0", @@ -136,8 +136,8 @@ "@types/uuid": "^9.0.1", "@types/vscode": "1.93.0", "@types/yauzl": "2.10.0", - "@typescript-eslint/eslint-plugin": "^8.5.0", - "@typescript-eslint/parser": "^8.5.0", + "@typescript-eslint/eslint-plugin": "^8.19.0", + "@typescript-eslint/parser": "^8.19.0", "@vscode/l10n-dev": "^0.0.35", "@vscode/test-electron": "2.3.8", "@vscode/vsce": "3.0.0", diff --git a/src/lsptoolshost/onAutoInsertFeature.ts b/src/lsptoolshost/onAutoInsertFeature.ts index 0c3e03f21..88a1537b2 100644 --- a/src/lsptoolshost/onAutoInsertFeature.ts +++ b/src/lsptoolshost/onAutoInsertFeature.ts @@ -22,7 +22,7 @@ import { } from 'vscode-languageserver-protocol'; import * as RoslynProtocol from './roslynProtocol'; -import * as UUID from 'vscode-languageclient/lib/common/utils/uuid'; +import { generateUuid } from 'vscode-languageclient/lib/common/utils/uuid'; export class OnAutoInsertFeature implements DynamicFeature { private readonly _client: LanguageClient; @@ -92,7 +92,7 @@ export class OnAutoInsertFeature implements DynamicFeature { beforeAll(async () => { await integrationHelpers.activateCSharpExtension(); diff --git a/test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts b/test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts index 6c8549ac3..dcfaeb39e 100644 --- a/test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts +++ b/test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import { describe, test, beforeAll, afterAll, expect, beforeEach, afterEach } from '@jest/globals'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; import { AnalysisSetting } from '../../../src/lsptoolshost/buildDiagnosticsService'; -import path = require('path'); +import path from 'path'; import { getCode, setBackgroundAnalysisScopes, waitForExpectedDiagnostics } from './diagnosticsHelpers'; import { activateCSharpExtension, diff --git a/test/lsptoolshost/integrationTests/integrationHelpers.ts b/test/lsptoolshost/integrationTests/integrationHelpers.ts index 0ab9a02ac..2a5c686d2 100644 --- a/test/lsptoolshost/integrationTests/integrationHelpers.ts +++ b/test/lsptoolshost/integrationTests/integrationHelpers.ts @@ -118,6 +118,35 @@ export async function getCodeLensesAsync(): Promise { // The number of code lens items to resolve. Set to a high number so we get pretty much everything in the document. const resolvedItemCount = 100; + let tryCount = 0; + const maxRetryCount = 3; + do { + try { + const result = await executeCodeLensProviderAsync(activeEditor, resolvedItemCount); + return result; + } catch (e) { + tryCount++; + // It is totally possible that the code lens request is cancelled due to the server returning a content modified error. + // This is not an error condition - it just means that the server snapshot has moved on and we need to retry the request. + // + // This error is not thrown as an error type that matches ours, so we'll check the name of the error to determine if it was a cancellation. + if (Object.prototype.hasOwnProperty.call(e, 'name') && (e as any).name === 'Canceled') { + console.log('CodeLens provider was cancelled, retrying in 1 second'); + await sleep(1000); + } else { + console.log('CodeLens provider encountered unexpected error'); + console.log(JSON.stringify(e)); + throw e; + } + } + } while (tryCount < maxRetryCount); + throw new Error(`Failed to get code lenses after ${maxRetryCount} retries`); +} + +async function executeCodeLensProviderAsync( + activeEditor: vscode.TextEditor, + resolvedItemCount: number +): Promise { const codeLenses = ( await vscode.commands.executeCommand( 'vscode.executeCodeLensProvider', @@ -130,7 +159,6 @@ export async function getCodeLensesAsync(): Promise { if (rangeCompare !== 0) { return rangeCompare; } - return a.command!.title.localeCompare(b.command!.command); }); } diff --git a/test/lsptoolshost/unitTests/migrateOptions.test.ts b/test/lsptoolshost/unitTests/migrateOptions.test.ts index 4e75f3732..f1f4ecaf2 100644 --- a/test/lsptoolshost/unitTests/migrateOptions.test.ts +++ b/test/lsptoolshost/unitTests/migrateOptions.test.ts @@ -18,6 +18,9 @@ import { getVSCodeWithConfig } from '../../fakes'; import { CSharpExtensionId } from '../../../src/constants/csharpExtensionId'; import { ConfigurationTarget } from '../../../src/vscodeAdapter'; +// Necessary when spying on module members. +jest.mock('fs', () => ({ __esModule: true, ...(jest.requireActual('fs')) })); + describe('Migrate configurations', () => { const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); const configuration = packageJson.contributes.configuration; diff --git a/test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts b/test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts index ff305b40b..c281944d7 100644 --- a/test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts +++ b/test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts @@ -62,11 +62,7 @@ describe(`${reportIssue.name}`, () => { issueBody = rest[0].issueBody; return {} as any; }); - jest.replaceProperty(vscode, 'extensions', { - all: [extension1, extension2], - getExtension: jest.fn(), - onDidChange: jest.fn(), - } as typeof vscode.extensions); + jest.replaceProperty(vscode.extensions, 'all', [extension1, extension2] as readonly vscode.Extension[]); fakeMonoResolver = new FakeMonoResolver(); fakeDotnetResolver = new FakeDotnetResolver(); diff --git a/test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts b/test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts index 85423fd52..eb4c7173d 100644 --- a/test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts +++ b/test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts @@ -11,6 +11,9 @@ import { MockedFunction } from 'jest-mock'; import * as fs from 'fs'; import { join } from 'path'; +// Necessary when spying on module members. +jest.mock('fs', () => ({ __esModule: true, ...(jest.requireActual('fs')) })); + describe(`${getNotInstalledPackagesForPlatform.name}`, () => { let absolutePathPackages: AbsolutePathPackage[]; const extensionPath = '/ExtensionPath'; diff --git a/test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts b/test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts index cea2c21fe..6ed6ab256 100644 --- a/test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts +++ b/test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as fs from 'async-file'; -import * as getPort from 'get-port'; +import getPort from 'get-port'; // There are no typings for this library. // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/test/omnisharp/omnisharpUnitTests/testAssets/testZip.ts b/test/omnisharp/omnisharpUnitTests/testAssets/testZip.ts index be20f86f8..6fab10939 100644 --- a/test/omnisharp/omnisharpUnitTests/testAssets/testZip.ts +++ b/test/omnisharp/omnisharpUnitTests/testAssets/testZip.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as archiver from 'archiver'; +import archiver from 'archiver'; import { TestFile } from './testFile'; export default class TestZip { diff --git a/tsconfig.json b/tsconfig.json index b999e0341..ceea0ebff 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,8 @@ { "compilerOptions": { - "target": "es6", - "module": "commonjs", + "esModuleInterop": true, + "target": "ES2022", + "module": "CommonJS", "outDir": "out", "lib": [ "ES2021" @@ -20,7 +21,6 @@ "src", "tasks", "test", - "omnisharptest", "typings", "__mocks__", "jest.config.ts", diff --git a/version.json b/version.json index 1767f04e4..ae14a65b6 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "2.61", + "version": "2.62", "publicReleaseRefSpec": [ "^refs/heads/release$", "^refs/heads/prerelease$",