From 8533bdd00c3c1e7de12e5877cbe1984e997b16fb Mon Sep 17 00:00:00 2001 From: David Barbet Date: Thu, 20 Feb 2025 15:46:55 -0800 Subject: [PATCH 01/39] Miscellaneous activation improvements --- .vscodeignore | 1 + package.json | 2 +- src/main.ts | 25 +++++++++++++++++++------ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.vscodeignore b/.vscodeignore index 987329b208..b70d86a48f 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -9,6 +9,7 @@ !.razoromnisharp/** .rpt2_cache/** .config/** +.devcontainer/** .github/** .vscode/** .vscode-test/** diff --git a/package.json b/package.json index 5d791b1e0f..b90eedc0cc 100644 --- a/package.json +++ b/package.json @@ -1412,7 +1412,7 @@ "order": 9, "properties": { "dotnet.preferCSharpExtension": { - "scope": "resource", + "scope": "machine-overridable", "type": "boolean", "default": false, "description": "%configuration.dotnet.preferCSharpExtension%" diff --git a/src/main.ts b/src/main.ts index 9eb06d7a67..f2d93ca5f0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -47,7 +47,11 @@ import { getComponentFolder } from './lsptoolshost/extensions/builtInComponents' export async function activate( context: vscode.ExtensionContext ): Promise { + // Start measuring the activation time + const startActivation = process.hrtime(); + const csharpChannel = vscode.window.createOutputChannel('C#', { log: true }); + csharpChannel.trace('Activating C# Extension'); await MigrateOptions(vscode); const optionStream = createOptionStream(vscode); @@ -120,6 +124,7 @@ export async function activate( const useFramework = useOmnisharpServer && omnisharpOptions.useModernNet !== true; const installDependencies: IInstallDependencies = async (dependencies: AbsolutePathPackage[]) => downloadAndInstallPackages(dependencies, networkSettingsProvider, eventStream, isValidDownload); + const runtimeDependenciesExist = await ensureRuntimeDependencies( context.extension, eventStream, @@ -247,10 +252,7 @@ export async function activate( ); } - const activationProperties: { [key: string]: string } = { - serverKind: useOmnisharpServer ? 'OmniSharp' : 'Roslyn', - }; - reporter.sendTelemetryEvent(TelemetryEventNames.CSharpActivated, activationProperties); + let exports: CSharpExtensionExports | OmnisharpExtensionExports; if (!useOmnisharpServer) { debugSessionTracker.initializeDebugSessionHandlers(context); @@ -262,7 +264,7 @@ export async function activate( util.isNotNull(projectInitializationCompletePromise); const languageServerExport = new RoslynLanguageServerExport(roslynLanguageServerStartedPromise); - return { + exports = { initializationFinished: async () => { await coreClrDebugPromise; await razorLanguageServerStartedPromise; @@ -282,7 +284,7 @@ export async function activate( }, }; } else { - return { + exports = { initializationFinished: async () => { const langService = await omnisharpLangServicePromise; await langService!.server.waitForInitialize(); @@ -304,6 +306,17 @@ export async function activate( logDirectory: context.logUri.fsPath, }; } + + const timeTaken = process.hrtime(startActivation); + const timeTakenStr = (timeTaken[0] * 1000 + timeTaken[1] / 1000000).toFixed(3); + csharpChannel.trace('C# Extension activated in ' + timeTakenStr + 'ms.'); + const activationProperties: { [key: string]: string } = { + serverKind: useOmnisharpServer ? 'OmniSharp' : 'Roslyn', + timeTaken: timeTakenStr, + }; + reporter.sendTelemetryEvent(TelemetryEventNames.CSharpActivated, activationProperties); + + return exports; } /** From 2bfdeec12af67418edb00e1a341968c60434e0ba Mon Sep 17 00:00:00 2001 From: David Barbet Date: Thu, 20 Feb 2025 16:58:44 -0800 Subject: [PATCH 02/39] Use esbuild over webpack --- .eslintrc.js | 2 +- .vscode/launch.json | 14 +- .vscode/tasks.json | 14 +- .vscodeignore | 3 +- CONTRIBUTING.md | 4 +- azure-pipelines/prereqs.yml | 3 - azure-pipelines/test-matrix.yml | 8 +- azure-pipelines/test-prereqs.yml | 3 - esbuild.js | 76 + package-lock.json | 1447 ++++++++++------- package.json | 44 +- tasks/testTasks.ts | 15 +- .../README.md | 4 +- tsconfig.json | 2 +- webpack.config.js | 44 - 15 files changed, 967 insertions(+), 716 deletions(-) create mode 100644 esbuild.js delete mode 100644 webpack.config.js diff --git a/.eslintrc.js b/.eslintrc.js index 01e9bb373d..25df10a173 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -58,8 +58,8 @@ module.exports = { "out/", "dist/", "wallaby.js", - "webpack.config.js", ".eslintrc.js", + "esbuild.js", "**/*.d.ts" ], }; diff --git a/.vscode/launch.json b/.vscode/launch.json index bc19cb0ddd..0ff34475ef 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "args": ["--extensionDevelopmentPath=${workspaceRoot}"], "sourceMaps": true, "outFiles": ["${workspaceRoot}/dist/*.js"], - "preLaunchTask": "buildDev" + "preLaunchTask": "packageDev" }, { "name": "[Roslyn] Run Current File Integration Tests", @@ -35,7 +35,7 @@ "sourceMaps": true, "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], - "preLaunchTask": "buildDev", + "preLaunchTask": "packageDev", "internalConsoleOptions": "openOnSessionStart" }, { @@ -62,7 +62,7 @@ "sourceMaps": true, "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], - "preLaunchTask": "buildDev", + "preLaunchTask": "packageDev", "internalConsoleOptions": "openOnSessionStart" }, { @@ -89,7 +89,7 @@ "sourceMaps": true, "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], - "preLaunchTask": "buildTest", + "preLaunchTask": "packageDev", "internalConsoleOptions": "openOnSessionStart" }, { @@ -115,7 +115,7 @@ "sourceMaps": true, "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], - "preLaunchTask": "buildTest" + "preLaunchTask": "packageDev" }, { "name": "[O# LSP] Run Current File Integration Tests", @@ -140,7 +140,7 @@ "sourceMaps": true, "outFiles": ["${workspaceRoot}/dist/*.js", "${workspaceRoot}/out/test/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], - "preLaunchTask": "buildTest" + "preLaunchTask": "packageDev" }, { "type": "node", @@ -195,7 +195,7 @@ "name": "Razor integration tests", "preLaunchTask": "build", "program": "${workspaceFolder}/node_modules/gulp/bin/gulp.js", - "args": ["test:razorintegration"], + "args": ["test:integration:razor"], "cwd": "${workspaceFolder}" } ], diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 4f5d773473..6934c47c45 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -28,10 +28,20 @@ } }, { - "label": "buildTest", + "label": "package", "command": "npm", "type": "shell", - "args": ["run", "compileTest"], + "args": ["run", "package"], + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "packageDev", + "command": "npm", + "type": "shell", + "args": ["run", "packageDev"], "group": { "kind": "build", "isDefault": true diff --git a/.vscodeignore b/.vscodeignore index b70d86a48f..665e0c0d74 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -52,8 +52,7 @@ package.json tsconfig.json version.json wallaby.js -webpack.config.js - +esbuild.js !src/razor/language-configuration.json !src/razor/syntaxes/* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f505d375a7..0a11c920b2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,6 +36,7 @@ Follow these steps to build, run, and test the repository: #### Building 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. + a. If you have already authenticated before, but the token expired, you may need to run `vsts-npm-auth -config .npmrc -f` instead. 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. @@ -51,7 +52,8 @@ After completing the build steps: #### Testing -To run all tests, execute `npm run test`. +To run all unit tests, execute `npm run test:unit`. +To run all integration tests execute `npm run test:integration` To debug unit tests locally, press F5 in VS Code with the "Launch Tests" debug configuration selected. diff --git a/azure-pipelines/prereqs.yml b/azure-pipelines/prereqs.yml index 167de5da6e..3932f029d8 100644 --- a/azure-pipelines/prereqs.yml +++ b/azure-pipelines/prereqs.yml @@ -40,6 +40,3 @@ steps: npm ci npm i -g gulp displayName: 'Install dependencies' - -- script: npm run compile - displayName: 'Compile' diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index 9175e127fc..51cea0fb34 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -16,10 +16,14 @@ jobs: - job: strategy: matrix: - CSharpTests: - npmCommand: test:withoutDevKit + UnitTests: + npmCommand: test:unit + CSharpIntegrationTests: + npmCommand: test:integration:csharp DevKitTests: npmCommand: test:integration:devkit + RazorTests: + npmCommand: test:integration:razor pool: ${{ parameters.pool }} ${{ if parameters.containerName }}: container: ${{ parameters.containerName }} diff --git a/azure-pipelines/test-prereqs.yml b/azure-pipelines/test-prereqs.yml index c86649a347..ee918b2128 100644 --- a/azure-pipelines/test-prereqs.yml +++ b/azure-pipelines/test-prereqs.yml @@ -1,8 +1,5 @@ steps: -- script: npm run vscode:prepublish - displayName: 'Prepublish VSIXs' - # We need to download the roslyn language server for the current platform to run integration tests against it. - script: gulp installDependencies displayName: 'Install Roslyn Language Server' diff --git a/esbuild.js b/esbuild.js new file mode 100644 index 0000000000..54ff1c1803 --- /dev/null +++ b/esbuild.js @@ -0,0 +1,76 @@ +const esbuild = require("esbuild"); +const fs = require('fs/promises'); + +const production = process.argv.includes('--production'); +const watch = process.argv.includes('--watch'); + +/** + * @type {import('esbuild').Plugin} + */ +const esbuildProblemMatcherPlugin = { + name: 'esbuild-problem-matcher', + + setup(build) { + build.onStart(() => { + console.log('[watch] build started'); + }); + build.onEnd((result) => { + result.errors.forEach(({ text, location }) => { + console.error(`✘ [ERROR] ${text}`); + console.error(` ${location.file}:${location.line}:${location.column}:`); + }); + console.log('[watch] build finished'); + }); + }, +}; + +/** + * Some VSCode libraries include UMD versions that are not esbuild compatible, and also have broken ESM packages. + * This plugin replaces the UMD imports with the ESM imports. + * See https://github.com/microsoft/vscode/issues/192144 + */ +const umdEsmLoaderPlugin = { + name: 'umdEsmLoaderPlugin', + + setup(build) { + build.onLoad({ filter: /(vscode-html-languageservice|jsonc-parser).*lib[\/\\]umd/ }, async (moduleArgs) => { + // replace the umd path with the esm path from the package. + const newPath = moduleArgs.path.replace(/(.*)lib([\/\\])umd(.*)/, '$1lib$2esm$3'); + const contents = await fs.readFile(newPath, 'utf8'); + return { contents: contents }; + }); + }, +}; + +async function main() { + const ctx = await esbuild.context({ + entryPoints: [ + 'src/main.ts' + ], + bundle: true, + format: 'cjs', + minify: production, + sourcemap: !production, + sourcesContent: false, + platform: 'node', + outfile: 'dist/extension.js', + external: ['vscode', 'applicationinsights-native-metrics', '@opentelemetry/tracing'], + logLevel: 'info', + plugins: [ + umdEsmLoaderPlugin, + /* add to the end of plugins array */ + esbuildProblemMatcherPlugin, + ], + }); + if (watch) { + await ctx.watch(); + } else { + await ctx.rebuild(); + await ctx.dispose(); + } +} + +main().catch(e => { + console.error(e); + process.exit(1); +}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1e413f9388..d1b6791c51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "strip-bom-buf": "2.0.0", "tmp": "0.0.33", "uuid": "^9.0.0", - "vscode-html-languageservice": "^5.0.1", + "vscode-html-languageservice": "^5.3.1", "vscode-jsonrpc": "8.2.0-next.0", "vscode-languageclient": "8.2.0-next.1", "vscode-languageserver-protocol": "3.17.4-next.1", @@ -63,6 +63,7 @@ "@vscode/vsce": "3.0.0", "archiver": "5.3.0", "del": "3.0.0", + "esbuild": "^0.25.0", "eslint": "^8.43.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-header": "^3.1.1", @@ -92,9 +93,7 @@ "unzipper": "0.10.11", "vscode-oniguruma": "^1.6.1", "vscode-textmate": "^6.0.0", - "vscode-uri": "^3.0.7", - "webpack": "5.94.0", - "webpack-cli": "4.6.0" + "vscode-uri": "^3.0.7" }, "engines": { "vscode": "^1.93.0" @@ -1021,13 +1020,429 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha1-SZYAxeF1elJJkNXZJgHwrDzof2Q=", + "cpu": [ + "ppc64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=10.0.0" + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha1-ym54iJQlBfE+iKyfX30qcvn6zSs=", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha1-ubgjFWGh37lOsx9O4Fa5KphcMk8=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha1-52XqdTusRC38nLU2Us6L050z4WM=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha1-+jlBZLDYnU/cOoohmJr3DvV5+iw=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha1-kZedmNMLpufWmyLGF8yCva1g5Ho=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha1-uX6XBzMQc2tDCgewmdg3CEuF6c4=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha1-87aU0Nph2ZEOx97/eU1ETPvztuc=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha1-zEkwWzxtoxfJAGiJlaQFDmzJHKM=", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha1-+SH2mfFi8zIDbVZXytkDb3qZP3M=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha1-Pgc2/PqxbP8ELeyAYkfix24Qnhk=", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha1-6iv3MIg83bnfuFEkIytah1uAIMc=", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha1-TKursU7t4JJImAotLYuWZGQpT/E=", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha1-iGCkYJkUwGU3OnckLphReWWOGVE=", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha1-uvJuILstOM+4buKC3/hAwE9O2Yc=", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha1-gyOvwNbLG23G6f0h79nhVCw2QKQ=", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha1-CPz2DLQA7SOC6fjg9VkLrIgQRpo=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha1-k1xsdOIPciSRj74ubG/oZbbG6ls=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha1-QUZ3zvZtFsWk0hB1HrKIG7nBtis=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha1-j9VaTQjSXNxXKETxPIjWeMhNE/c=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha1-DEjdsUlLvC1ry6oUKaf0Zfod7d4=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha1-hv+Qddd5YrYN0mID1zUvkmhMjJI=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha1-hJxiMnwyKUZ/W1zWgb9QWIRC6Ww=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha1-9i60gM18ygiMtlu0am2yW3JdwHk=", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha1-yOEZowp8jWC50uItIHNyLd47cQs=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2082,6 +2497,7 @@ "integrity": "sha1-nXHKiG4yUC65NiyadKRnh8Nt+Bo=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -2990,7 +3406,8 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha1-ps4+VW4A/ZiV3Yct0XKtDUvWh/Q=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/expect": { "version": "1.20.4", @@ -3075,7 +3492,8 @@ "version": "7.0.11", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -3570,6 +3988,12 @@ "node": ">= 8" } }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha1-kW06XpYNurR8HFb1iny1CHsTXJU=", + "license": "MIT" + }, "node_modules/@vscode/l10n-dev": { "version": "0.0.35", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n-dev/-/l10n-dev-0.0.35.tgz", @@ -4121,6 +4545,7 @@ "integrity": "sha1-uxag6LGRT5efRYZMI4Gcw+Pw1Ls=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -4131,21 +4556,24 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha1-2svLla/xNcgmD3f6O0xf6mAKZDE=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha1-YTL2jErNWdzRQcRLGMvrvZ8vp2g=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha1-bfINJy6lQ5vyCrNJK3+3Dpv8s/Y=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", @@ -4153,6 +4581,7 @@ "integrity": "sha1-y85efgwb0yz0kFrkRO9kzqkZ8bU=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -4164,7 +4593,8 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha1-uy69s7g6om2bqtTEbUMVKDrNUek=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", @@ -4172,6 +4602,7 @@ "integrity": "sha1-PaYjIzrhpgQJtQmlKt6bwio3978=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4185,6 +4616,7 @@ "integrity": "sha1-u2ZckdCxT//OsOOCmMMprwQ8bjo=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -4195,6 +4627,7 @@ "integrity": "sha1-cOYOXoL5rIERi8JTgaCyg4kyQNc=", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -4204,7 +4637,8 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha1-kPi8NMVhWV/hVmA75yU8280Pq1o=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", @@ -4212,6 +4646,7 @@ "integrity": "sha1-n58/9SoUyYCTm+DvnV3568Z4rjs=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4229,6 +4664,7 @@ "integrity": "sha1-plIGAdobVwBEgnNmanGtCkXXhUc=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -4243,6 +4679,7 @@ "integrity": "sha1-nm6BR138+2LatXSsLdo4ImwjK8U=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4256,6 +4693,7 @@ "integrity": "sha1-xHrLkObwgzkeP6YdETZQ7qHpWTc=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -4271,60 +4709,27 @@ "integrity": "sha1-vOz2YdfRq9r5idg0Gkgz4z4rMaw=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, - "node_modules/@webpack-cli/configtest": { - "version": "1.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webpack-cli/configtest/-/configtest-1.0.2.tgz", - "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.2.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webpack-cli/info/-/info-1.2.3.tgz", - "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.3.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webpack-cli/serve/-/serve-1.3.1.tgz", - "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/acorn": { "version": "8.12.1", @@ -4345,6 +4750,7 @@ "integrity": "sha1-frFVexugXvGLXtDsZ1kb+rBGiO8=", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "acorn": "^8" } @@ -4406,6 +4812,7 @@ "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -5477,6 +5884,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, + "peer": true, "dependencies": { "tslib": "^1.9.0" }, @@ -5549,20 +5957,6 @@ "node": ">=0.8" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/clone-stats": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/clone-stats/-/clone-stats-1.0.0.tgz", @@ -5611,12 +6005,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5635,7 +6023,8 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-2.20.3.tgz", "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/compress-commons": { "version": "4.1.0", @@ -6256,27 +6645,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-2.2.0.tgz", @@ -6286,18 +6654,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/error-ex/-/error-ex-1.3.2.tgz", @@ -6383,7 +6739,8 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-1.5.4.tgz", "integrity": "sha1-qO/sOj2pkeYO+mtjOnytarjSa3g=", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -6425,6 +6782,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha1-DeF4encgbFp57rY0piPTm1AGzpI=", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/escalade/-/escalade-3.1.1.tgz", @@ -6942,6 +7340,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -6955,6 +7354,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "peer": true, "engines": { "node": ">=4.0" } @@ -8132,7 +8532,8 @@ "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=", "dev": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "peer": true }, "node_modules/glob-watcher": { "version": "6.0.0", @@ -9043,18 +9444,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-regex/-/is-regex-1.1.4.tgz", @@ -11150,6 +11539,7 @@ "integrity": "sha1-jRRvCQDolzsQa29zzB6ajLhvjbA=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -11165,6 +11555,7 @@ "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -11175,6 +11566,7 @@ "integrity": "sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11336,15 +11728,6 @@ "prebuild-install": "^7.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/kleur/-/kleur-3.0.3.tgz", @@ -11473,6 +11856,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/loader-runner/-/loader-runner-4.2.0.tgz", "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, + "peer": true, "engines": { "node": ">=6.11.5" } @@ -11968,7 +12352,8 @@ "version": "2.6.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/nerdbank-gitversioning": { "version": "3.6.79-alpha", @@ -13144,6 +13529,7 @@ "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -13578,6 +13964,7 @@ "integrity": "sha1-9QqIh3w8AWUqFbYirp6Xld96YP4=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -13636,6 +14023,7 @@ "integrity": "sha1-3voeBVyDv21Z6oBdjahiJU62psI=", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -13670,18 +14058,6 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-command/-/shebang-command-1.2.0.tgz", @@ -14233,6 +14609,7 @@ "integrity": "sha1-xjhYoPBwOYjQJmqC/L8te6dkIrE=", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -14252,6 +14629,7 @@ "integrity": "sha1-kE9MkZPG/SoD9pOiFQxiqS9A0Zk=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -14918,12 +15296,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/v8-to-istanbul": { "version": "9.1.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", @@ -15123,20 +15495,22 @@ "license": "MIT" }, "node_modules/vscode-html-languageservice": { - "version": "5.0.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-html-languageservice/-/vscode-html-languageservice-5.0.4.tgz", - "integrity": "sha512-tvrySfpglu4B2rQgWGVO/IL+skvU7kBkQotRlxA7ocSyRXOZUd6GA13XHkxo8LPe07KWjeoBlN1aVGqdfTK4xA==", + "version": "5.3.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz", + "integrity": "sha1-k8rBzrtCFltSoVIg8CxH0TIPxDo=", + "license": "MIT", "dependencies": { - "@vscode/l10n": "^0.0.11", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-languageserver-types": "^3.17.2", - "vscode-uri": "^3.0.7" + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.0.8" } }, - "node_modules/vscode-html-languageservice/node_modules/@vscode/l10n": { - "version": "0.0.11", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n/-/l10n-0.0.11.tgz", - "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" + "node_modules/vscode-html-languageservice/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha1-MnNnbwzy6rQLP0TQhay7fwijnYo=", + "license": "MIT" }, "node_modules/vscode-jsonrpc": { "version": "8.2.0-next.0", @@ -15193,9 +15567,10 @@ "integrity": "sha512-2FPKboHnT04xYjfM8JpJVBz4a/tryMw58jmzucaabZMZN5hzoFBrhc97jNG4n6edr9JUb9+QSwwcAcYpDTAoag==" }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.8", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", - "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==" + "version": "1.0.12", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha1-RX7gQnGrOJmKCTxowjQvU/bkpjE=", + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.2", @@ -15220,9 +15595,10 @@ "dev": true }, "node_modules/vscode-uri": { - "version": "3.0.7", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-uri/-/vscode-uri-3.0.7.tgz", - "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==" + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha1-3QnsWmaji1w//8d0AVcTSW0U4Jw=", + "license": "MIT" }, "node_modules/walker": { "version": "1.0.8", @@ -15239,6 +15615,7 @@ "integrity": "sha1-L+6u1nQS58MxhOWnnKc4+9OFZNo=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -15259,6 +15636,7 @@ "integrity": "sha1-d6YInHFuerkMHGdXSijaUYoglw8=", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", @@ -15300,193 +15678,12 @@ } } }, - "node_modules/webpack-cli": { - "version": "4.6.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-cli/-/webpack-cli-4.6.0.tgz", - "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.2", - "@webpack-cli/info": "^1.2.3", - "@webpack-cli/serve": "^1.3.1", - "colorette": "^1.2.1", - "commander": "^7.0.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/webpack-cli/node_modules/execa": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/webpack-cli/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/which": { - "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": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/webpack-merge": { - "version": "5.7.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/webpack-sources": { "version": "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": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "peer": true, "engines": { "node": ">=10.13.0" } @@ -15536,13 +15733,7 @@ }, "funding": { "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true + } }, "node_modules/word-wrap": { "version": "1.2.5", @@ -16545,11 +16736,180 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", - "dev": true + "@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha1-SZYAxeF1elJJkNXZJgHwrDzof2Q=", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha1-ym54iJQlBfE+iKyfX30qcvn6zSs=", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha1-ubgjFWGh37lOsx9O4Fa5KphcMk8=", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha1-52XqdTusRC38nLU2Us6L050z4WM=", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha1-+jlBZLDYnU/cOoohmJr3DvV5+iw=", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha1-kZedmNMLpufWmyLGF8yCva1g5Ho=", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha1-uX6XBzMQc2tDCgewmdg3CEuF6c4=", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha1-87aU0Nph2ZEOx97/eU1ETPvztuc=", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha1-zEkwWzxtoxfJAGiJlaQFDmzJHKM=", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha1-+SH2mfFi8zIDbVZXytkDb3qZP3M=", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha1-Pgc2/PqxbP8ELeyAYkfix24Qnhk=", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha1-6iv3MIg83bnfuFEkIytah1uAIMc=", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha1-TKursU7t4JJImAotLYuWZGQpT/E=", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha1-iGCkYJkUwGU3OnckLphReWWOGVE=", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha1-uvJuILstOM+4buKC3/hAwE9O2Yc=", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha1-gyOvwNbLG23G6f0h79nhVCw2QKQ=", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha1-CPz2DLQA7SOC6fjg9VkLrIgQRpo=", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha1-k1xsdOIPciSRj74ubG/oZbbG6ls=", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha1-QUZ3zvZtFsWk0hB1HrKIG7nBtis=", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha1-j9VaTQjSXNxXKETxPIjWeMhNE/c=", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha1-DEjdsUlLvC1ry6oUKaf0Zfod7d4=", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha1-hv+Qddd5YrYN0mID1zUvkmhMjJI=", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha1-hJxiMnwyKUZ/W1zWgb9QWIRC6Ww=", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha1-9i60gM18ygiMtlu0am2yW3JdwHk=", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha1-yOEZowp8jWC50uItIHNyLd47cQs=", + "dev": true, + "optional": true }, "@eslint-community/eslint-utils": { "version": "4.4.0", @@ -17327,6 +17687,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha1-nXHKiG4yUC65NiyadKRnh8Nt+Bo=", "dev": true, + "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -18094,7 +18455,8 @@ "version": "1.0.5", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha1-ps4+VW4A/ZiV3Yct0XKtDUvWh/Q=", - "dev": true + "dev": true, + "peer": true }, "@types/expect": { "version": "1.20.4", @@ -18179,7 +18541,8 @@ "version": "7.0.11", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "dev": true, + "peer": true }, "@types/json5": { "version": "0.0.29", @@ -18540,6 +18903,11 @@ } } }, + "@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha1-kW06XpYNurR8HFb1iny1CHsTXJU=" + }, "@vscode/l10n-dev": { "version": "0.0.35", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n-dev/-/l10n-dev-0.0.35.tgz", @@ -18923,6 +19291,7 @@ "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=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -18932,25 +19301,29 @@ "version": "1.11.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha1-2svLla/xNcgmD3f6O0xf6mAKZDE=", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha1-YTL2jErNWdzRQcRLGMvrvZ8vp2g=", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha1-bfINJy6lQ5vyCrNJK3+3Dpv8s/Y=", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha1-y85efgwb0yz0kFrkRO9kzqkZ8bU=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -18961,13 +19334,15 @@ "version": "1.11.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha1-uy69s7g6om2bqtTEbUMVKDrNUek=", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha1-PaYjIzrhpgQJtQmlKt6bwio3978=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -18980,6 +19355,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha1-u2ZckdCxT//OsOOCmMMprwQ8bjo=", "dev": true, + "peer": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -18989,6 +19365,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha1-cOYOXoL5rIERi8JTgaCyg4kyQNc=", "dev": true, + "peer": true, "requires": { "@xtuc/long": "4.2.2" } @@ -18997,13 +19374,15 @@ "version": "1.11.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha1-kPi8NMVhWV/hVmA75yU8280Pq1o=", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha1-n58/9SoUyYCTm+DvnV3568Z4rjs=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -19020,6 +19399,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha1-plIGAdobVwBEgnNmanGtCkXXhUc=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -19033,6 +19413,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha1-nm6BR138+2LatXSsLdo4ImwjK8U=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -19045,6 +19426,7 @@ "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=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -19059,45 +19441,25 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha1-vOz2YdfRq9r5idg0Gkgz4z4rMaw=", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, - "@webpack-cli/configtest": { - "version": "1.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webpack-cli/configtest/-/configtest-1.0.2.tgz", - "integrity": "sha512-3OBzV2fBGZ5TBfdW50cha1lHDVf9vlvRXnjpVbJBa20pSZQaSkMJZiwA8V2vD9ogyeXn8nU5s5A6mHyf5jhMzA==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.2.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webpack-cli/info/-/info-1.2.3.tgz", - "integrity": "sha512-lLek3/T7u40lTqzCGpC6CAbY6+vXhdhmwFRxZLMnRm6/sIF/7qMpT8MocXCRQfz0JAh63wpbXLMnsQ5162WS7Q==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.3.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webpack-cli/serve/-/serve-1.3.1.tgz", - "integrity": "sha512-0qXvpeYO6vaNoRBI52/UsbcaBydJCggoBBnIo/ovQQdn6fug0BgwsjorV1hVS7fMqGVTZGcVxv8334gjmbj5hw==", - "dev": true, - "requires": {} - }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", - "dev": true + "dev": true, + "peer": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", - "dev": true + "dev": true, + "peer": true }, "acorn": { "version": "8.12.1", @@ -19110,6 +19472,7 @@ "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=", "dev": true, + "peer": true, "requires": {} }, "acorn-jsx": { @@ -19154,6 +19517,7 @@ "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=", "dev": true, + "peer": true, "requires": {} }, "ansi-escapes": { @@ -19968,6 +20332,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, + "peer": true, "requires": { "tslib": "^1.9.0" } @@ -20016,17 +20381,6 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, "clone-stats": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/clone-stats/-/clone-stats-1.0.0.tgz", @@ -20066,12 +20420,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colorette": { - "version": "1.2.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/combined-stream/-/combined-stream-1.0.8.tgz", @@ -20085,7 +20433,8 @@ "version": "2.20.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-2.20.3.tgz", "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", - "dev": true + "dev": true, + "peer": true }, "compress-commons": { "version": "4.1.0", @@ -20549,35 +20898,12 @@ "tapable": "^2.2.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } - } - }, "entities": { "version": "2.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/error-ex/-/error-ex-1.3.2.tgz", @@ -20648,7 +20974,8 @@ "version": "1.5.4", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-1.5.4.tgz", "integrity": "sha1-qO/sOj2pkeYO+mtjOnytarjSa3g=", - "dev": true + "dev": true, + "peer": true }, "es-set-tostringtag": { "version": "2.0.1", @@ -20681,6 +21008,39 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.25.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha1-DeF4encgbFp57rY0piPTm1AGzpI=", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/escalade/-/escalade-3.1.1.tgz", @@ -21220,6 +21580,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "peer": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -21229,7 +21590,8 @@ "version": "4.3.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "peer": true } } }, @@ -21929,7 +22291,8 @@ "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=", - "dev": true + "dev": true, + "peer": true }, "glob-watcher": { "version": "6.0.0", @@ -22554,15 +22917,6 @@ "path-is-inside": "^1.0.1" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "is-regex": { "version": "1.1.4", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-regex/-/is-regex-1.1.4.tgz", @@ -24106,6 +24460,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha1-jRRvCQDolzsQa29zzB6ajLhvjbA=", "dev": true, + "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -24116,13 +24471,15 @@ "version": "4.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "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=", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -24259,12 +24616,6 @@ "prebuild-install": "^7.0.1" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "kleur": { "version": "3.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/kleur/-/kleur-3.0.3.tgz", @@ -24365,7 +24716,8 @@ "version": "4.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/loader-runner/-/loader-runner-4.2.0.tgz", "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true + "dev": true, + "peer": true }, "loader-utils": { "version": "2.0.4", @@ -24765,7 +25117,8 @@ "version": "2.6.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "peer": true }, "nerdbank-gitversioning": { "version": "3.6.79-alpha", @@ -25621,6 +25974,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", "dev": true, + "peer": true, "requires": { "safe-buffer": "^5.1.0" } @@ -25946,6 +26300,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha1-9QqIh3w8AWUqFbYirp6Xld96YP4=", "dev": true, + "peer": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -25980,6 +26335,7 @@ "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=", "dev": true, + "peer": true, "requires": { "randombytes": "^2.1.0" } @@ -26010,15 +26366,6 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-command/-/shebang-command-1.2.0.tgz", @@ -26433,6 +26780,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.31.6.tgz", "integrity": "sha1-xjhYoPBwOYjQJmqC/L8te6dkIrE=", "dev": true, + "peer": true, "requires": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -26445,6 +26793,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha1-kE9MkZPG/SoD9pOiFQxiqS9A0Zk=", "dev": true, + "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -26906,12 +27255,6 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "v8-to-istanbul": { "version": "9.1.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", @@ -27064,20 +27407,20 @@ } }, "vscode-html-languageservice": { - "version": "5.0.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-html-languageservice/-/vscode-html-languageservice-5.0.4.tgz", - "integrity": "sha512-tvrySfpglu4B2rQgWGVO/IL+skvU7kBkQotRlxA7ocSyRXOZUd6GA13XHkxo8LPe07KWjeoBlN1aVGqdfTK4xA==", + "version": "5.3.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz", + "integrity": "sha1-k8rBzrtCFltSoVIg8CxH0TIPxDo=", "requires": { - "@vscode/l10n": "^0.0.11", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-languageserver-types": "^3.17.2", - "vscode-uri": "^3.0.7" + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.0.8" }, "dependencies": { - "@vscode/l10n": { - "version": "0.0.11", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n/-/l10n-0.0.11.tgz", - "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" + "vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha1-MnNnbwzy6rQLP0TQhay7fwijnYo=" } } }, @@ -27131,9 +27474,9 @@ } }, "vscode-languageserver-textdocument": { - "version": "1.0.8", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", - "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==" + "version": "1.0.12", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha1-RX7gQnGrOJmKCTxowjQvU/bkpjE=" }, "vscode-languageserver-types": { "version": "3.17.2", @@ -27158,9 +27501,9 @@ "dev": true }, "vscode-uri": { - "version": "3.0.7", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-uri/-/vscode-uri-3.0.7.tgz", - "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==" + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha1-3QnsWmaji1w//8d0AVcTSW0U4Jw=" }, "walker": { "version": "1.0.8", @@ -27176,6 +27519,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha1-L+6u1nQS58MxhOWnnKc4+9OFZNo=", "dev": true, + "peer": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -27192,6 +27536,7 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.94.0.tgz", "integrity": "sha1-d6YInHFuerkMHGdXSijaUYoglw8=", "dev": true, + "peer": true, "requires": { "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", @@ -27218,130 +27563,12 @@ "webpack-sources": "^3.2.3" } }, - "webpack-cli": { - "version": "4.6.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-cli/-/webpack-cli-4.6.0.tgz", - "integrity": "sha512-9YV+qTcGMjQFiY7Nb1kmnupvb1x40lfpj8pwdO/bom+sQiP4OBMKjHq29YQrlDWDPZO9r/qWaRRywKaRDKqBTA==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.2", - "@webpack-cli/info": "^1.2.3", - "@webpack-cli/serve": "^1.3.1", - "colorette": "^1.2.1", - "commander": "^7.0.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "rechoir": { - "version": "0.7.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "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": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "webpack-merge": { - "version": "5.7.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, "webpack-sources": { "version": "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": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "dev": true, + "peer": true }, "which": { "version": "1.3.1", @@ -27378,12 +27605,6 @@ "is-typed-array": "^1.1.10" } }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, "word-wrap": { "version": "1.2.5", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/word-wrap/-/word-wrap-1.2.5.tgz", diff --git a/package.json b/package.json index b90eedc0cc..46aea14829 100644 --- a/package.json +++ b/package.json @@ -60,28 +60,25 @@ } ], "scripts": { - "vscode:prepublish": "tsc -p ./ && webpack --mode production && gulp signJs", - "l10nDevGenerateLocalizationBundle": "npx @vscode/l10n-dev export --outDir ./l10n ./src", + "vscode:prepublish": "npm run package", "compile": "tsc -p ./ && npx eslint ./ && npm run l10nDevGenerateLocalizationBundle && npm run compile:razorTextMate", + "compileDev": "tsc -p ./ && npm run l10nDevGenerateLocalizationBundle && npm run compile:razorTextMate", + "package": "npm run compile && node esbuild.js --production && gulp signJs", + "packageDev": "npm run compileDev && node esbuild.js", + "l10nDevGenerateLocalizationBundle": "npx @vscode/l10n-dev export --outDir ./l10n ./src", "compile:razorTextMate": "npx js-yaml src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml > src/razor/syntaxes/aspnetcorerazor.tmLanguage.json", - "compileDev": "tsc -p ./ && npx eslint ./ && webpack --mode development && npm run l10nDevGenerateLocalizationBundle", - "compileTest": "tsc -p ./ && webpack --mode development", - "watch": "tsc -watch -p ./", - "test": "tsc -p ./ && gulp test", - "test:unit": "tsc -p ./ && gulp test:unit", - "test:withoutDevKit": "tsc -p ./ && gulp test:withoutDevKit", - "test:integration:devkit": "tsc -p ./ && gulp test:integration:devkit", - "test:razor": "tsc -p ./ && npm run compile:razorTextMate && gulp test:razor", - "test:razorintegration": "tsc -p ./ && gulp test:razorintegration", - "profiling": "tsc -p ./ && gulp profiling", - "test:artifacts": "tsc -p ./ && gulp test:artifacts", - "omnisharptest": "tsc -p ./ && gulp omnisharptest", - "omnisharptest:unit": "tsc -p ./ && gulp omnisharptest:unit", - "omnisharptest:integration": "tsc -p ./ && gulp omnisharptest:integration", - "omnisharptest:integration:singleCsproj": "tsc -p ./ && gulp omnisharptest:integration:singleCsproj", - "omnisharptest:integration:slnWithCsproj": "tsc -p ./ && gulp omnisharptest:integration:slnWithCsproj", - "omnisharptest:integration:slnFilterWithCsproj": "tsc -p ./ && gulp omnisharptest:integration:slnFilterWithCsproj", - "unpackage:vsix": "gulp vsix:release:unpackage", + "test:unit": "npm run compileDev && gulp test:unit", + "test:integration:csharp": "npm run package && gulp test:integration:csharp", + "test:integration:razor": "npm run package && gulp test:integration:razor", + "test:integration:devkit": "npm run package && gulp test:integration:devkit", + "profiling": "npm run package && gulp profiling", + "test:artifacts": "npm run compileDev && gulp test:artifacts", + "omnisharptest": "npm run package && gulp omnisharptest", + "omnisharptest:unit": "npm run compileDev && gulp omnisharptest:unit", + "omnisharptest:integration": "npm run package && gulp omnisharptest:integration", + "omnisharptest:integration:singleCsproj": "npm run package && gulp omnisharptest:integration:singleCsproj", + "omnisharptest:integration:slnWithCsproj": "npm run package && gulp omnisharptest:integration:slnWithCsproj", + "omnisharptest:integration:slnFilterWithCsproj": "npm run package && gulp omnisharptest:integration:slnFilterWithCsproj", "updatePackageDependencies": "gulp updatePackageDependencies", "l10nDevGenerateXlf": "npx @vscode/l10n-dev generate-xlf ./package.nls.json ./l10n/bundle.l10n.json --outFile ./loc/vscode-csharp.xlf", "l10nDevImportXlf": "npx @vscode/l10n-dev import-xlf ./loc/vscode-csharp.*.xlf --outDir ./l10n && move l10n\\package.nls.*.json ." @@ -115,7 +112,7 @@ "strip-bom-buf": "2.0.0", "tmp": "0.0.33", "uuid": "^9.0.0", - "vscode-html-languageservice": "^5.0.1", + "vscode-html-languageservice": "^5.3.1", "vscode-jsonrpc": "8.2.0-next.0", "vscode-languageclient": "8.2.0-next.1", "vscode-languageserver-protocol": "3.17.4-next.1", @@ -144,6 +141,7 @@ "@vscode/vsce": "3.0.0", "archiver": "5.3.0", "del": "3.0.0", + "esbuild": "^0.25.0", "eslint": "^8.43.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-header": "^3.1.1", @@ -173,9 +171,7 @@ "unzipper": "0.10.11", "vscode-oniguruma": "^1.6.1", "vscode-textmate": "^6.0.0", - "vscode-uri": "^3.0.7", - "webpack": "5.94.0", - "webpack-cli": "4.6.0" + "vscode-uri": "^3.0.7" }, "runtimeDependencies": [ { diff --git a/tasks/testTasks.ts b/tasks/testTasks.ts index 49d2d6b1e2..98c3e256cb 100644 --- a/tasks/testTasks.ts +++ b/tasks/testTasks.ts @@ -33,13 +33,6 @@ gulp.task('test:artifacts', async () => { // Overall test command that runs everything except O# tests. gulp.task('test', gulp.series('test:unit', 'test:integration')); -// Bit of a special task for CI. We want to generally combine test runs to save preparation time. -// However the Dev Kit integration tests are much slower than everything else (VSCode restarts on each test file). -// So we can have one run for all of the general C# extension tests, and then another for Dev Kit integration tests. -gulp.task('test:withoutDevKit', gulp.series('test:unit', 'test:integration:csharp', 'test:razorintegration')); - -gulp.task('test:razor', gulp.series('test:unit:razor', 'test:razorintegration')); - // OmniSharp tests are run separately in CI, so we have separate tasks for these. // TODO: Enable lsp integration tests once tests for unimplemented features are disabled. gulp.task('omnisharptest', gulp.series('omnisharptest:unit', 'omnisharptest:integration:stdio')); @@ -82,7 +75,7 @@ function createIntegrationTestSubTasks() { ); for (const projectName of razorIntegrationTestProjects) { - gulp.task(`test:razorintegration:${projectName}`, async () => + gulp.task(`test:integration:razor:${projectName}`, async () => runIntegrationTest( projectName, path.join('razor', 'razorIntegrationTests'), @@ -92,13 +85,13 @@ function createIntegrationTestSubTasks() { } gulp.task( - 'test:razorintegration', - gulp.series(razorIntegrationTestProjects.map((projectName) => `test:razorintegration:${projectName}`)) + 'test:integration:razor', + gulp.series(razorIntegrationTestProjects.map((projectName) => `test:integration:razor:${projectName}`)) ); gulp.task( 'test:integration', - gulp.series('test:integration:csharp', 'test:integration:devkit', 'test:razorintegration') + gulp.series('test:integration:csharp', 'test:integration:devkit', 'test:integration:razor') ); } diff --git a/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md index 056f0779b6..29a18c3969 100644 --- a/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md +++ b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md @@ -13,7 +13,7 @@ Run the following from the root of the repo: ```bash -npm run test:razor +npm run test:unit:razor ``` ### Directory Structure @@ -29,7 +29,7 @@ npm run test:razor 1. Add new test suite file in `./tests` (you can copy an existing test suite as a template). 2. Update `./tests/grammarTests.test.ts` with the new test suite. -3. In `testTasks.ts`, modify `runJestTest`'s call to `jest.runCLI` function to include `updateSnapshot: true`. Afterwards, run `npm run test:razor`. +3. In `testTasks.ts`, modify `runJestTest`'s call to `jest.runCLI` function to include `updateSnapshot: true`. Afterwards, run `npm run test:unit:razor`. ### Adding / Updating a Test in an Existing Test Suite diff --git a/tsconfig.json b/tsconfig.json index ceea0ebff7..5184135577 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,5 +25,5 @@ "__mocks__", "jest.config.ts", "baseJestConfig.ts", - ] + ], } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 2ed9ce853a..0000000000 --- a/webpack.config.js +++ /dev/null @@ -1,44 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -//@ts-check - -// Import statements do not work outside of modules. -// eslint-disable-next-line @typescript-eslint/no-var-requires -const path = require('path'); -/**@type {import('webpack').Configuration}*/ -const config = { - target: 'node', // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ - entry: './src/main.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'extension.js', - libraryTarget: "commonjs2", - devtoolModuleFilenameTemplate: "../[resource-path]", - }, - devtool: 'source-map', - externals: { - vscode: "commonjs vscode", // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ - 'applicationinsights-native-metrics': 'commonjs applicationinsights-native-metrics', // we're not native - '@opentelemetry/tracing': 'commonjs @opentelemetry/tracing', // optional - }, - resolve: { // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader - extensions: ['.ts', '.js'] - }, - node: { - __dirname: false //preserve the default node.js behavior for __dirname - }, - module: { - rules: [{ - test: /\.ts$/, - exclude: /node_modules/, - use: [{ - loader: 'ts-loader', - }] - }] - }, -}; - -module.exports = config; From cc6f71f5a8caf167db80db8f509d1eaf1630493b Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 21 Feb 2025 14:55:12 -0800 Subject: [PATCH 03/39] scope to window --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 46aea14829..9b8cce26f6 100644 --- a/package.json +++ b/package.json @@ -1408,7 +1408,7 @@ "order": 9, "properties": { "dotnet.preferCSharpExtension": { - "scope": "machine-overridable", + "scope": "window", "type": "boolean", "default": false, "description": "%configuration.dotnet.preferCSharpExtension%" From baae72a3c9d23d32a8917dccc23b73c995dda62b Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 21 Feb 2025 15:32:59 -0800 Subject: [PATCH 04/39] respond to main changes for bundling --- .../autoInsert/onAutoInsertFeature.ts | 2 +- .../diagnostics/fixAllCodeAction.ts | 2 +- .../diagnostics/nestedCodeAction.ts | 2 +- src/omnisharp/engines/lspEngine.ts | 20 +++++++++---------- .../src/document/razorDocumentManager.ts | 2 +- tsconfig.json | 12 +++++++++++ 6 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts b/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts index 3ec67c5cb4..5e489e37bc 100644 --- a/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts +++ b/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts @@ -22,7 +22,7 @@ import { } from 'vscode-languageserver-protocol'; import * as RoslynProtocol from '../server/roslynProtocol'; -import { generateUuid } from 'vscode-languageclient/lib/common/utils/uuid'; +import { generateUuid } from 'vscode-languageclient/uuid'; export class OnAutoInsertFeature implements DynamicFeature { private readonly _client: LanguageClient; diff --git a/src/lsptoolshost/diagnostics/fixAllCodeAction.ts b/src/lsptoolshost/diagnostics/fixAllCodeAction.ts index af79dadc28..13c17aa204 100644 --- a/src/lsptoolshost/diagnostics/fixAllCodeAction.ts +++ b/src/lsptoolshost/diagnostics/fixAllCodeAction.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import * as RoslynProtocol from '../server/roslynProtocol'; import { LSPAny } from 'vscode-languageserver-protocol'; import { RoslynLanguageServer } from '../server/roslynLanguageServer'; -import { URIConverter, createConverter } from 'vscode-languageclient/lib/common/protocolConverter'; +import { URIConverter, createConverter } from 'vscode-languageclient/protocolConverter'; import { UriConverter } from '../utils/uriConverter'; export function registerCodeActionFixAllCommands( diff --git a/src/lsptoolshost/diagnostics/nestedCodeAction.ts b/src/lsptoolshost/diagnostics/nestedCodeAction.ts index 7727db2fe0..81341a653d 100644 --- a/src/lsptoolshost/diagnostics/nestedCodeAction.ts +++ b/src/lsptoolshost/diagnostics/nestedCodeAction.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import { CodeAction, CodeActionResolveRequest, LSPAny } from 'vscode-languageserver-protocol'; import { RoslynLanguageServer } from '../server/roslynLanguageServer'; -import { URIConverter, createConverter } from 'vscode-languageclient/lib/common/protocolConverter'; +import { URIConverter, createConverter } from 'vscode-languageclient/protocolConverter'; import { UriConverter } from '../utils/uriConverter'; import { getFixAllResponse } from './fixAllCodeAction'; diff --git a/src/omnisharp/engines/lspEngine.ts b/src/omnisharp/engines/lspEngine.ts index ee9ab5dfdd..d3b1898b61 100644 --- a/src/omnisharp/engines/lspEngine.ts +++ b/src/omnisharp/engines/lspEngine.ts @@ -23,16 +23,16 @@ import { Command } from 'vscode-languageserver-protocol'; import { DynamicFeature, LanguageClientOptions, StaticFeature } from 'vscode-languageclient'; import { RequestType, Trace } from 'vscode-jsonrpc'; import { LanguageClient, ServerOptions } from 'vscode-languageclient/node'; -import { SelectionRangeFeature } from 'vscode-languageclient/lib/common/selectionRange'; -import { ColorProviderFeature } from 'vscode-languageclient/lib/common/colorProvider'; -import { WorkspaceFoldersFeature } from 'vscode-languageclient/lib/common/workspaceFolder'; -import { DeclarationFeature } from 'vscode-languageclient/lib/common/declaration'; -import { DocumentLinkFeature } from 'vscode-languageclient/lib/common/documentLink'; -import { InlineValueFeature } from 'vscode-languageclient/lib/common/inlineValue'; -import { DiagnosticFeature } from 'vscode-languageclient/lib/common/diagnostic'; -import { NotebookDocumentSyncFeature } from 'vscode-languageclient/lib/common/notebook'; -import { TypeHierarchyFeature } from 'vscode-languageclient/lib/common/typeHierarchy'; -import { CallHierarchyFeature } from 'vscode-languageclient/lib/common/callHierarchy'; +import { SelectionRangeFeature } from 'vscode-languageclient/selectionRange'; +import { ColorProviderFeature } from 'vscode-languageclient/colorProvider'; +import { WorkspaceFoldersFeature } from 'vscode-languageclient/workspaceFolder'; +import { DeclarationFeature } from 'vscode-languageclient/declaration'; +import { DocumentLinkFeature } from 'vscode-languageclient/documentLink'; +import { InlineValueFeature } from 'vscode-languageclient/inlineValue'; +import { DiagnosticFeature } from 'vscode-languageclient/diagnostic'; +import { NotebookDocumentSyncFeature } from 'vscode-languageclient/notebook'; +import { TypeHierarchyFeature } from 'vscode-languageclient/typeHierarchy'; +import { CallHierarchyFeature } from 'vscode-languageclient/callHierarchy'; import { Advisor } from '../features/diagnosticsProvider'; import dotnetTest from '../features/dotnetTest'; diff --git a/src/razor/src/document/razorDocumentManager.ts b/src/razor/src/document/razorDocumentManager.ts index 3d5adf0872..3c0c29ffb6 100644 --- a/src/razor/src/document/razorDocumentManager.ts +++ b/src/razor/src/document/razorDocumentManager.ts @@ -19,7 +19,7 @@ import { RazorDocumentChangeKind } from './razorDocumentChangeKind'; import { createDocument } from './razorDocumentFactory'; import { razorInitializeCommand } from '../../../lsptoolshost/razor/razorCommands'; import { PlatformInformation } from '../../../shared/platform'; -import { generateUuid } from 'vscode-languageclient/lib/common/utils/uuid'; +import { generateUuid } from 'vscode-languageclient/uuid'; export class RazorDocumentManager implements IRazorDocumentManager { public roslynActivated = false; diff --git a/tsconfig.json b/tsconfig.json index 6fa787fa46..fb076b55f5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,18 @@ ], "paths": { "vscode-languageclient": ["./node_modules/vscode-languageclient/lib/common/api"], + "vscode-languageclient/callHierarchy": ["./node_modules/vscode-languageclient/lib/common/callHierarchy"], + "vscode-languageclient/typeHierarchy": ["./node_modules/vscode-languageclient/lib/common/typeHierarchy"], + "vscode-languageclient/notebook": ["./node_modules/vscode-languageclient/lib/common/notebook"], + "vscode-languageclient/diagnostic": ["./node_modules/vscode-languageclient/lib/common/diagnostic"], + "vscode-languageclient/inlineValue": ["./node_modules/vscode-languageclient/lib/common/inlineValue"], + "vscode-languageclient/documentLink": ["./node_modules/vscode-languageclient/lib/common/documentLink"], + "vscode-languageclient/declaration": ["./node_modules/vscode-languageclient/lib/common/declaration"], + "vscode-languageclient/workspaceFolder": ["./node_modules/vscode-languageclient/lib/common/workspaceFolder"], + "vscode-languageclient/colorProvider": ["./node_modules/vscode-languageclient/lib/common/colorProvider"], + "vscode-languageclient/selectionRange": ["./node_modules/vscode-languageclient/lib/common/selectionRange"], + "vscode-languageclient/protocolConverter": ["./node_modules/vscode-languageclient/lib/common/protocolConverter"], + "vscode-languageclient/uuid": ["./node_modules/vscode-languageclient/lib/common/utils/uuid"], "vscode-languageclient/node": ["./node_modules/vscode-languageclient/lib/node/main"], "vscode-languageserver-protocol": ["./node_modules/vscode-languageserver-protocol/lib/common/api"], "vscode-languageserver-protocol/node": ["./node_modules/vscode-languageserver-protocol/lib/node/main"], From ab4ad7a23c78143ae513fbae03efe22ec8000f09 Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 21 Feb 2025 15:41:36 -0800 Subject: [PATCH 05/39] remove unnecessary uuid import --- src/lsptoolshost/autoInsert/onAutoInsertFeature.ts | 4 ++-- src/razor/src/document/razorDocumentManager.ts | 4 ++-- tsconfig.json | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts b/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts index 5e489e37bc..eefbe729eb 100644 --- a/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts +++ b/src/lsptoolshost/autoInsert/onAutoInsertFeature.ts @@ -22,7 +22,7 @@ import { } from 'vscode-languageserver-protocol'; import * as RoslynProtocol from '../server/roslynProtocol'; -import { generateUuid } from 'vscode-languageclient/uuid'; +import { v4 as uuidv4 } from 'uuid'; export class OnAutoInsertFeature implements DynamicFeature { private readonly _client: LanguageClient; @@ -92,7 +92,7 @@ export class OnAutoInsertFeature implements DynamicFeature Date: Sat, 22 Feb 2025 00:01:30 +0000 Subject: [PATCH 06/39] Update main version --- CHANGELOG.md | 2 ++ version.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72420d9b56..78663adcc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ - 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.68.x + # 2.67.x * Bump xamlTools to 17.14.35821.62 (PR: [#8001](https://github.com/dotnet/vscode-csharp/pull/8001)) * Update Roslyn to 4.14.0-2.25120.5 (PR: [#7984](https://github.com/dotnet/vscode-csharp/pull/7984)) diff --git a/version.json b/version.json index 2398741e21..6073215a58 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.67", + "version": "2.68", "publicReleaseRefSpec": [ "^refs/heads/release$", "^refs/heads/prerelease$", From a4aa2a34538bbd39f8f726ff67596b907a5dcfc2 Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 21 Feb 2025 14:21:36 -0800 Subject: [PATCH 07/39] Copy CPU profiles generated in tests to logs folder for upload --- azure-pipelines/test.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 6df8301926..ce51f1504f 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -33,6 +33,13 @@ steps: DISPLAY: :99.0 CODE_VERSION: ${{ parameters.testVSCodeVersion }} +- powershell: | + $tempPath = [System.IO.Path]::GetTempPath() + echo "Temp Path: $tempPath" + Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" + displayName: 'Copy .cpuprofile files to out/logs' + condition: succeededOrFailed() + - task: PublishTestResults@2 condition: succeededOrFailed() displayName: 'Publish Test Results' @@ -46,14 +53,14 @@ steps: - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: failed() + condition: succeededOrFailed() displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: failed() + condition: succeededOrFailed() displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From 7512cff02be4af2fd4da99274e44563670c5cfa1 Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 21 Feb 2025 16:26:08 -0800 Subject: [PATCH 08/39] update log section in issue template --- .github/ISSUE_TEMPLATE/bug_report.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4a5c1cc1f8..e0ef141f1c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -20,8 +20,10 @@ If the `CSharp: Report an issue` command doesn't appear, make sure that you have VS Code version: C# Extension version: -## OmniSharp log +## C# logs +C# output window contents: +See [this page](https://github.com/dotnet/vscode-csharp/blob/main/SUPPORT.md#collecting-general-logs) for collecting more detailed logs ## Steps to reproduce From ca3ca3b4b02dfe05fd8e8b08a3cc3476127c1847 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Sun, 23 Feb 2025 12:12:35 +0000 Subject: [PATCH 09/39] Localization result of 26d9a55bed777e813f0a8cc6e5a40710d0cd05bf. --- package.nls.fr.json | 2 +- package.nls.ja.json | 2 +- package.nls.ko.json | 2 +- package.nls.pt-br.json | 2 +- package.nls.tr.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.nls.fr.json b/package.nls.fr.json index 70812255d9..1795294ff7 100644 --- a/package.nls.fr.json +++ b/package.nls.fr.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Effectuez la complétion automatique du nom d’objet pour les membres que vous avez récemment sélectionnés.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Afficher automatiquement la liste de complétion dans les listes d'arguments", "configuration.dotnet.defaultSolution.description": "Le chemin d’accès de la solution par défaut à ouvrir dans l’espace de travail, ou la valeur ’disable’ pour l’ignorer. (Précédemment `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Activez ce paramètre pour réduire les distractions visuelles dans votre éditeur. Les problèmes d’information seront signalés sous forme de suggestions et seront visibles uniquement lorsque la fenêtre contextuelle des actions de code est ouverte.", "configuration.dotnet.enableXamlTools": "Active les outils XAML lors de l’utilisation du Kit de développement C#", "configuration.dotnet.formatting.organizeImportsOnFormat": "Spécifie si les directives « using » doivent être regroupées et triées lors de la mise en forme d’un document. (Anciennement `omnisharp.organizeImportsOnFormat`)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Mettez en surbrillance les composants JSON associés sous le curseur.", diff --git a/package.nls.ja.json b/package.nls.ja.json index a9e1082bba..0a47fabc6a 100644 --- a/package.nls.ja.json +++ b/package.nls.ja.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "最近選択したメンバーの自動オブジェクト名の完了を実行します。", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "引数リストに入力候補一覧を自動的に表示する", "configuration.dotnet.defaultSolution.description": "ワークスペースで開く既定のソリューションのパス。スキップするには 'disable' に設定します。(以前の `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "この設定を有効にすると、エディター内の視覚的な注意がそがれるものを減らすことができます。情報の問題はヒントとして報告され、コード アクション ポップアップが開いているときにのみ表示されます。", "configuration.dotnet.enableXamlTools": "C# 開発キットを使用するときに XAML ツールを有効にします", "configuration.dotnet.formatting.organizeImportsOnFormat": "ドキュメントの書式設定中に 'using' ディレクティブをグループ化して並べ替える必要があるかどうかを指定します。(以前の 'omnisharp.organizeImportsOnFormat')", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "カーソルの下にある関連する JSON コンポーネントをハイライトします。", diff --git a/package.nls.ko.json b/package.nls.ko.json index 702fd1dc40..26fe1888aa 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "최근에 선택한 멤버에 대해 자동 개체 이름 완성을 수행합니다.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "인수 목록에 자동으로 완성 목록 표시", "configuration.dotnet.defaultSolution.description": "작업 영역에서 열릴 기본 솔루션의 경로, 건너뛰려면 '비활성화'로 설정하세요(이전 `omnisharp.defaultLaunchSolution`).", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "이 설정을 활성화하면 편집기에서 시각적 방해 요소를 줄일 수 있습니다. 정보 문제는 힌트로 보고되며 코드 작업 팝업이 열려 있을 때만 표시됩니다.", "configuration.dotnet.enableXamlTools": "C# 개발자 키트를 사용할 때 XAML 도구 사용", "configuration.dotnet.formatting.organizeImportsOnFormat": "문서 서식을 지정하는 동안 'using' 지시문을 그룹화하고 정렬할지 여부를 지정합니다. (Previously `omnisharp.organizeImportsOnFormat`)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "커서 아래에서 관련 JSON 구성 요소를 강조 표시합니다.", diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json index 0f41c4c170..f6f4348c9b 100644 --- a/package.nls.pt-br.json +++ b/package.nls.pt-br.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Execute a conclusão automática do nome do objeto para os membros que você selecionou recentemente.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostrar automaticamente a lista de conclusão nas listas de argumentos", "configuration.dotnet.defaultSolution.description": "O caminho da solução padrão a ser aberta no workspace ou definido como 'desabilitado' para ignorá-la. (Anteriormente `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Habilite essa configuração para reduzir as distrações visuais no seu editor. Problemas de informações serão relatados como dicas e só ficarão visíveis quando o pop-up de ações de código estiver aberto.", "configuration.dotnet.enableXamlTools": "Habilita ferramentas XAML ao usar o Kit de Desenvolvimento em C#", "configuration.dotnet.formatting.organizeImportsOnFormat": "Especifica se as diretivas 'usando' devem ser agrupadas e classificadas durante a formatação do documento. (Anteriormente `omnisharp.organizeImportsOnFormat`)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Destaque os componentes JSON relacionados sob o cursor.", diff --git a/package.nls.tr.json b/package.nls.tr.json index 2740d5301c..1201e02462 100644 --- a/package.nls.tr.json +++ b/package.nls.tr.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Yakın zamanda seçtiğiniz üyeler için otomatik nesne adı tamamlama gerçekleştirin.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Bağımsız değişken listelerinde tamamlama listesini otomatik olarak göster", "configuration.dotnet.defaultSolution.description": "Varsayılan çözümün yolu, çalışma alanında açılacak veya atlamak için 'devre dışı' olarak ayarlanacak. (Daha önce 'omnisharp.defaultLaunchSolution')", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Düzenleyicinizdeki görsel dikkat dağıtıcı öğeleri azaltmak için bu ayarı etkinleştirin. Bilgi sorunları ipucu olarak bildirilecek ve yalnızca kod eylemleri açılır penceresi açıkken görülebilecektir.", "configuration.dotnet.enableXamlTools": "C# Geliştirme Setini kullanırken XAML araçlarını etkinleştirir", "configuration.dotnet.formatting.organizeImportsOnFormat": "'using' yönergelerinin belge biçimlendirmesi sırasında gruplandırılarak sıralanıp sıralanmayacağını belirtir. (Önceki adıyla `omnisharp.organizeImportsOnFormat`)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "İmlecin altındaki ilgili JSON bileşenlerini vurgula.", From 335c1dafddc437794a0fe3d53e744c793baae164 Mon Sep 17 00:00:00 2001 From: dotnet-bot Date: Mon, 24 Feb 2025 14:31:43 +0000 Subject: [PATCH 10/39] Localization result of 0a8f22553099c18081ddbe00e7e402bc313d4500. --- package.nls.cs.json | 2 +- package.nls.de.json | 2 +- package.nls.es.json | 2 +- package.nls.it.json | 2 +- package.nls.pl.json | 2 +- package.nls.ru.json | 2 +- package.nls.zh-cn.json | 2 +- package.nls.zh-tw.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.nls.cs.json b/package.nls.cs.json index 270797a83f..491c6f5a42 100644 --- a/package.nls.cs.json +++ b/package.nls.cs.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Pro členy, které jste nedávno vybrali, proveďte automatické dokončování názvů objektů.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automaticky zobrazovat seznam dokončení v seznamech argumentů", "configuration.dotnet.defaultSolution.description": "Cesta výchozího řešení, které se má otevřít v pracovním prostoru. Můžete přeskočit nastavením na „zakázat“. (Dříve omnisharp.defaultLaunchSolution)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Povolením tohoto nastavení snížíte množství vizuálních rušivých prvků v editoru. Informační problémy budou hlášeny jako nápovědy a budou viditelné pouze tehdy, když je otevřeno místní okno akcí kódu.", "configuration.dotnet.enableXamlTools": "Povolí nástroje XAML při použití sady C# Dev Kit", "configuration.dotnet.formatting.organizeImportsOnFormat": "Určuje, zda mají být během formátování dokumentu seskupeny a seřazeny direktivy using. (dříve omnisharp.organizeImportsOnFormat)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Zvýrazněte související komponenty JSON pod kurzorem.", diff --git a/package.nls.de.json b/package.nls.de.json index 1c20abe8e2..392c50e35f 100644 --- a/package.nls.de.json +++ b/package.nls.de.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Führen Sie die automatische Vervollständigung des Objektnamens für die Elemente aus, die Sie kürzlich ausgewählt haben.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Vervollständigungsliste in Argumentlisten automatisch anzeigen", "configuration.dotnet.defaultSolution.description": "Der Pfad der Standardlösung, die im Arbeitsbereich geöffnet werden soll, oder auf \"deaktivieren\" festlegen, um sie zu überspringen. (Zuvor \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Aktivieren Sie diese Einstellung, um visuelle Ablenkungen in Ihrem Editor zu reduzieren. Informationsprobleme werden als Hinweise gemeldet und sind nur sichtbar, wenn das Popupfenster für Codeaktionen geöffnet ist.", "configuration.dotnet.enableXamlTools": "Aktiviert XAML-Tools bei Verwendung des C#-Dev Kit", "configuration.dotnet.formatting.organizeImportsOnFormat": "Gibt an, ob „using“-Anweisungen während der Dokumentformatierung gruppiert und sortiert werden sollen. (Zuvor „omnisharp.organizeImportsOnFormat“)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Zugehörige JSON-Komponenten unter dem Cursor markieren.", diff --git a/package.nls.es.json b/package.nls.es.json index 383af39d18..16502545b4 100644 --- a/package.nls.es.json +++ b/package.nls.es.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Realice la finalización automática del nombre de objeto para los miembros que ha seleccionado recientemente.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostrar automáticamente la lista de finalización en las listas de argumentos", "configuration.dotnet.defaultSolution.description": "Ruta de acceso de la solución predeterminada que se va a abrir en el área de trabajo o se establece en \"deshabilitar\" para omitirla. (Anteriormente \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Habilite esta opción para reducir las distracciones visuales en el editor. Los problemas de información se notificarán como sugerencias y solo serán visibles cuando el elemento emergente de acciones de código esté abierto.", "configuration.dotnet.enableXamlTools": "Habilita las herramientas XAML al usar el Kit de desarrollo de C#", "configuration.dotnet.formatting.organizeImportsOnFormat": "Especifica si las directivas \"using\" deben agruparse y ordenarse durante el formato del documento. (Anteriormente \"omnisharp.organizeImportsOnFormat\")", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Resaltar los componentes JSON relacionados bajo el cursor.", diff --git a/package.nls.it.json b/package.nls.it.json index f88803600f..b532683f66 100644 --- a/package.nls.it.json +++ b/package.nls.it.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Consente di eseguire il completamento automatico del nome dell'oggetto per i membri selezionati di recente.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostra automaticamente l'elenco di completamento negli elenchi di argomenti", "configuration.dotnet.defaultSolution.description": "Percorso della soluzione predefinita da aprire nell'area di lavoro o impostare su 'disabilita' per ignorarla. (In precedenza “omnisharp.defaultLaunchSolution”)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Abilitare questa impostazione per ridurre le distrazioni visive nell'Editor. I problemi informativi verranno segnalati come suggerimenti e saranno visibili solo quando la finestra popup Azioni codice è aperta.", "configuration.dotnet.enableXamlTools": "Abilita gli strumenti XAML quando si usa il kit di sviluppo C#", "configuration.dotnet.formatting.organizeImportsOnFormat": "Specifica se le direttive \"using\" devono essere raggruppate e ordinate durante la formattazione del documento. (In precedenza `omnisharp.organizeImportsOnFormat`)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Evidenziare i componenti JSON correlati sotto il cursore.", diff --git a/package.nls.pl.json b/package.nls.pl.json index 166f63adec..24209c8cd2 100644 --- a/package.nls.pl.json +++ b/package.nls.pl.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Wykonaj automatyczne uzupełnianie nazw obiektów dla elementów członkowskich, które zostały ostatnio wybrane.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatycznie pokaż listę uzupełniania na listach argumentów", "configuration.dotnet.defaultSolution.description": "Ścieżka domyślnego rozwiązania, która ma zostać otwarta w obszarze roboczym, lub ustawiona na wartość „wyłącz”, aby je pominąć. (Poprzednio „omnisharp.defaultLaunchSolution”)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Włącz to ustawienie, aby ograniczyć wizualne elementy rozpraszające uwagę w edytorze. Problemy z informacjami będą zgłaszane jako wskazówki i będą widoczne tylko wtedy, gdy jest otwarte wyskakujące okno akcji kodu.", "configuration.dotnet.enableXamlTools": "Włącza narzędzia XAML podczas korzystania z zestawu deweloperskiego języka C#", "configuration.dotnet.formatting.organizeImportsOnFormat": "Określa, czy dyrektywy „using” mają być grupowane i sortowane podczas formatowania dokumentu. (Poprzednio „omnisharp.organizeImportsOnFormat”)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Wyróżnij powiązane składniki JSON pod kursorem.", diff --git a/package.nls.ru.json b/package.nls.ru.json index a6e8c5624b..e6d2d3bc50 100644 --- a/package.nls.ru.json +++ b/package.nls.ru.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Выполните автоматическое завершение имен объектов для выбранных элементов.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Автоматически показывать список завершения в списках аргументов", "configuration.dotnet.defaultSolution.description": "Путь к решению по умолчанию, которое будет открыто в рабочей области. Или задайте значение \"Отключить\", чтобы пропустить его. (Ранее — \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "Включите этот параметр, чтобы уменьшить количество визуальных отвлекающих факторов в редакторе. Информационные проблемы будут отображаться в виде подсказок и видны только при открытии всплывающего окна действий кода.", "configuration.dotnet.enableXamlTools": "Включает инструменты XAML при использовании комплекта разработки C# Dev Kit.", "configuration.dotnet.formatting.organizeImportsOnFormat": "Указывает, следует ли группировать и сортировать директивы \"using\" во время форматирования документов. (Ранее — \"omnisharp.organizeImportsOnFormat\")", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Выделить связанные компоненты JSON под курсором.", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index acec89f24a..521195bf3f 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "对最近选择的成员执行自动对象名称完成。", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自动显示参数列表中的补全列表", "configuration.dotnet.defaultSolution.description": "要在工作区中打开的默认解决方案的路径,或者设置为“禁用”以跳过它。(之前为 \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "启用此设置可减少编辑器中的视觉干扰。信息问题将报告为提示,并且仅在代码操作弹出窗口打开时可见。", "configuration.dotnet.enableXamlTools": "使用 C# 开发工具包时启用 XAML 工具", "configuration.dotnet.formatting.organizeImportsOnFormat": "指定在设置文档格式期间是否应对 “using” 指令进行分组和排序。(以前为 `omnisharp.organizeImportsOnFormat`)", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "突出显示光标下的相关 JSON 组件。", diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 80af4da5d3..88d3aa0306 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -44,7 +44,7 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "為您最近選取的成員執行自動物件名稱完成。", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自動在引數清單中顯示自動完成清單", "configuration.dotnet.defaultSolution.description": "要在工作區中開啟的預設解決方案路徑,或設為 [停用] 以略過它。(先前為 `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.diagnostics.reportInformationAsHint": "Enable this setting to reduce visual distractions in your editor. Information problems will be reported as hints and only be visible when the code actions popup is open.", + "configuration.dotnet.diagnostics.reportInformationAsHint": "啟用此設定以減少您編輯器中的視覺干擾。資訊問題將以提示的形式回報,並且僅在程式碼動作快顯視窗開啟時顯示。", "configuration.dotnet.enableXamlTools": "使用 C# 開發套件時啟用 XAML 工具", "configuration.dotnet.formatting.organizeImportsOnFormat": "指定在文件格式化期間,是否應該將 'using' 指示詞分組和排序。(先前為 'omnisharp.organizeImportsOnFormat')", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "反白資料指標下的相關 JSON 元件。", From 90c6d4d8dd09d2c3336ad9f469256d2a00da545f Mon Sep 17 00:00:00 2001 From: David Barbet Date: Mon, 24 Feb 2025 15:48:36 -0800 Subject: [PATCH 11/39] Cleanup activation to remove dead code and improve readability --- l10n/bundle.l10n.json | 6 +- src/activateOmniSharp.ts | 80 ++++ src/activateRoslyn.ts | 157 ++++++++ src/checkDotNetRuntimeExtensionVersion.ts | 38 ++ src/checkSupportedPlatform.ts | 64 +++ src/dotnetPack.ts | 24 -- .../dotnetRuntimeExtensionResolver.ts | 3 +- src/main.ts | 375 +++--------------- 8 files changed, 396 insertions(+), 351 deletions(-) create mode 100644 src/activateOmniSharp.ts create mode 100644 src/activateRoslyn.ts create mode 100644 src/checkDotNetRuntimeExtensionVersion.ts create mode 100644 src/checkSupportedPlatform.ts delete mode 100644 src/dotnetPack.ts diff --git a/l10n/bundle.l10n.json b/l10n/bundle.l10n.json index de04c7137e..371ec86e52 100644 --- a/l10n/bundle.l10n.json +++ b/l10n/bundle.l10n.json @@ -1,12 +1,12 @@ { + "How to setup Remote Debugging": "How to setup Remote Debugging", + "The C# extension for Visual Studio Code is incompatible on {0} {1} with the VS Code Remote Extensions. To see avaliable workarounds, click on '{2}'.": "The C# extension for Visual Studio Code is incompatible on {0} {1} with the VS Code Remote Extensions. To see avaliable workarounds, click on '{2}'.", + "The C# extension for Visual Studio Code is incompatible on {0} {1}.": "The C# extension for Visual Studio Code is incompatible on {0} {1}.", "Update and reload": "Update and reload", "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", ".NET Test Log": ".NET Test Log", ".NET NuGet Restore": ".NET NuGet Restore", - "How to setup Remote Debugging": "How to setup Remote Debugging", - "The C# extension for Visual Studio Code is incompatible on {0} {1} with the VS Code Remote Extensions. To see avaliable workarounds, click on '{2}'.": "The C# extension for Visual Studio Code is incompatible on {0} {1} with the VS Code Remote Extensions. To see avaliable workarounds, click on '{2}'.", - "The C# extension for Visual Studio Code is incompatible on {0} {1}.": "The C# extension for Visual Studio Code is incompatible on {0} {1}.", "Cannot create .NET debug configurations. No workspace folder was selected.": "Cannot create .NET debug configurations. No workspace folder was selected.", "Cannot create .NET debug configurations. The server is still initializing or has exited unexpectedly.": "Cannot create .NET debug configurations. The server is still initializing or has exited unexpectedly.", "Cannot create .NET debug configurations. The active C# project is not within folder '{0}'.": "Cannot create .NET debug configurations. The active C# project is not within folder '{0}'.", diff --git a/src/activateOmniSharp.ts b/src/activateOmniSharp.ts new file mode 100644 index 0000000000..30e25b3345 --- /dev/null +++ b/src/activateOmniSharp.ts @@ -0,0 +1,80 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { OmnisharpExtensionExports } from './csharpExtensionExports'; +import { PlatformInformation } from './shared/platform'; +import { Observable } from 'rxjs'; +import { NetworkSettingsProvider } from './networkSettings'; +import TelemetryReporter from '@vscode/extension-telemetry'; +import { activateOmniSharpLanguageServer } from './omnisharp/omnisharpLanguageServer'; +import { EventStream } from './eventStream'; +import { razorOptions } from './shared/options'; +import { activateRazorExtension } from './razor/razor'; + +export function activateOmniSharp( + context: vscode.ExtensionContext, + platformInfo: PlatformInformation, + optionStream: Observable, + networkSettingsProvider: NetworkSettingsProvider, + eventStream: EventStream, + csharpChannel: vscode.OutputChannel, + reporter: TelemetryReporter, + getCoreClrDebugPromise: (languageServerStarted: Promise) => Promise +): OmnisharpExtensionExports { + // activate language services + const dotnetTestChannel = vscode.window.createOutputChannel(vscode.l10n.t('.NET Test Log')); + const dotnetChannel = vscode.window.createOutputChannel(vscode.l10n.t('.NET NuGet Restore')); + const omnisharpLangServicePromise = activateOmniSharpLanguageServer( + context, + platformInfo, + optionStream, + networkSettingsProvider, + eventStream, + csharpChannel, + dotnetTestChannel, + dotnetChannel, + reporter + ); + + let omnisharpRazorPromise: Promise | undefined = undefined; + if (!razorOptions.razorDevMode) { + omnisharpRazorPromise = activateRazorExtension( + context, + context.extension.extensionPath, + eventStream, + reporter, + undefined, + platformInfo, + /* useOmnisharpServer */ true + ); + } + + const coreClrDebugPromise = getCoreClrDebugPromise(omnisharpLangServicePromise); + + const exports: OmnisharpExtensionExports = { + initializationFinished: async () => { + const langService = await omnisharpLangServicePromise; + await langService!.server.waitForInitialize(); + await coreClrDebugPromise; + + if (omnisharpRazorPromise) { + await omnisharpRazorPromise; + } + }, + getAdvisor: async () => { + const langService = await omnisharpLangServicePromise; + return langService!.advisor; + }, + getTestManager: async () => { + const langService = await omnisharpLangServicePromise; + return langService!.testManager; + }, + eventStream, + logDirectory: context.logUri.fsPath, + }; + + return exports; +} diff --git a/src/activateRoslyn.ts b/src/activateRoslyn.ts new file mode 100644 index 0000000000..7742dd93ee --- /dev/null +++ b/src/activateRoslyn.ts @@ -0,0 +1,157 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { CSharpExtensionExports } from './csharpExtensionExports'; +import { activateRazorExtension } from './razor/razor'; +import { PlatformInformation } from './shared/platform'; +import { Observable } from 'rxjs'; +import { EventStream } from './eventStream'; +import TelemetryReporter from '@vscode/extension-telemetry'; +import { RoslynLanguageServer } from './lsptoolshost/server/roslynLanguageServer'; +import { CSharpDevKitExports } from './csharpDevKitExports'; +import { RoslynLanguageServerEvents, ServerState } from './lsptoolshost/server/languageServerEvents'; +import { activateRoslynLanguageServer } from './lsptoolshost/activate'; +import Descriptors from './lsptoolshost/solutionSnapshot/descriptors'; +import { getBrokeredServiceContainer } from './lsptoolshost/serviceBroker/brokeredServicesHosting'; +import { debugSessionTracker } from './coreclrDebug/provisionalDebugSessionTracker'; +import { RoslynLanguageServerExport } from './lsptoolshost/extensions/roslynLanguageServerExportChannel'; +import { BlazorDebugConfigurationProvider } from './razor/src/blazorDebug/blazorDebugConfigurationProvider'; +import { languageServerOptions } from './shared/options'; +import { csharpDevkitExtensionId } from './utils/getCSharpDevKit'; +import { GlobalBrokeredServiceContainer } from '@microsoft/servicehub-framework'; +import { SolutionSnapshotProvider } from './lsptoolshost/solutionSnapshot/solutionSnapshotProvider'; +import { BuildResultDiagnostics } from './lsptoolshost/diagnostics/buildResultReporterService'; +import { getComponentFolder } from './lsptoolshost/extensions/builtInComponents'; + +export function activateRoslyn( + context: vscode.ExtensionContext, + platformInfo: PlatformInformation, + optionStream: Observable, + eventStream: EventStream, + csharpChannel: vscode.LogOutputChannel, + reporter: TelemetryReporter, + csharpDevkitExtension: vscode.Extension | undefined, + getCoreClrDebugPromise: (languageServerStarted: Promise) => Promise +): CSharpExtensionExports { + const roslynLanguageServerEvents = new RoslynLanguageServerEvents(); + context.subscriptions.push(roslynLanguageServerEvents); + + // Activate Razor. Needs to be activated before Roslyn so commands are registered in the correct order. + // Otherwise, if Roslyn starts up first, they could execute commands that don't yet exist on Razor's end. + // + // Flow: + // Razor starts up and registers dynamic file info commands -> + // Roslyn starts up and registers Razor-specific didOpen/didClose/didChange commands and sends request to Razor + // for dynamic file info once project system is ready -> + // Razor sends didOpen commands to Roslyn for generated docs and responds to request with dynamic file info + const razorLanguageServerStartedPromise = activateRazorExtension( + context, + context.extension.extensionPath, + eventStream, + reporter, + csharpDevkitExtension, + platformInfo, + /* useOmnisharpServer */ false + ); + + // Setup a listener for project initialization complete before we start the server. + const projectInitializationCompletePromise = new Promise((resolve, _) => { + roslynLanguageServerEvents.onServerStateChange(async (e) => { + if (e.state === ServerState.ProjectInitializationComplete) { + resolve(); + } + }); + }); + + // Start the server, but do not await the completion to avoid blocking activation. + const roslynLanguageServerStartedPromise = activateRoslynLanguageServer( + context, + platformInfo, + optionStream, + csharpChannel, + reporter, + roslynLanguageServerEvents + ); + + debugSessionTracker.initializeDebugSessionHandlers(context); + tryGetCSharpDevKitExtensionExports(csharpDevkitExtension, csharpChannel); + const coreClrDebugPromise = getCoreClrDebugPromise(roslynLanguageServerStartedPromise); + + const languageServerExport = new RoslynLanguageServerExport(roslynLanguageServerStartedPromise); + const exports: CSharpExtensionExports = { + initializationFinished: async () => { + await coreClrDebugPromise; + await razorLanguageServerStartedPromise; + await roslynLanguageServerStartedPromise; + await projectInitializationCompletePromise; + }, + profferBrokeredServices: (container) => + profferBrokeredServices(context, container, roslynLanguageServerStartedPromise!), + logDirectory: context.logUri.fsPath, + determineBrowserType: BlazorDebugConfigurationProvider.determineBrowserType, + experimental: { + sendServerRequest: async (t, p, ct) => await languageServerExport.sendRequest(t, p, ct), + languageServerEvents: roslynLanguageServerEvents, + }, + getComponentFolder: (componentName) => { + return getComponentFolder(componentName, languageServerOptions); + }, + }; + + return exports; +} + +/** + * This method will try to get the CSharpDevKitExports through a thenable promise, + * awaiting `activate` will cause this extension's activation to hang. + */ +function tryGetCSharpDevKitExtensionExports( + csharpDevKit: vscode.Extension | undefined, + csharpChannel: vscode.LogOutputChannel +): void { + csharpDevKit?.activate().then( + async (exports: CSharpDevKitExports) => { + if (exports && exports.serviceBroker) { + // When proffering this IServiceBroker into our own container, + // we list the monikers of the brokered services we expect to find there. + // This list must be a subset of the monikers previously registered with our own container + // as defined in the getBrokeredServiceContainer function. + getBrokeredServiceContainer().profferServiceBroker(exports.serviceBroker, [ + Descriptors.dotnetDebugConfigurationService.moniker, + ]); + + // Notify the vsdbg configuration provider that C# dev kit has been loaded. + exports.serverProcessLoaded(async () => { + await debugSessionTracker.onCsDevKitInitialized(await exports.getBrokeredServiceServerPipeName()); + }); + + await vscode.commands.executeCommand('setContext', 'dotnet.debug.serviceBrokerAvailable', true); + } else { + csharpChannel.error(`'${csharpDevkitExtensionId}' activated but did not return expected Exports.`); + } + }, + () => { + csharpChannel.error(`Failed to activate '${csharpDevkitExtensionId}'`); + } + ); +} + +function profferBrokeredServices( + context: vscode.ExtensionContext, + serviceContainer: GlobalBrokeredServiceContainer, + languageServerPromise: Promise +) { + context.subscriptions.push( + serviceContainer.profferServiceFactory( + Descriptors.solutionSnapshotProviderRegistration, + (_mk, _op, _sb) => new SolutionSnapshotProvider(languageServerPromise) + ), + serviceContainer.profferServiceFactory( + Descriptors.csharpExtensionBuildResultService, + (_mk, _op, _sb) => new BuildResultDiagnostics(languageServerPromise) + ) + ); +} diff --git a/src/checkDotNetRuntimeExtensionVersion.ts b/src/checkDotNetRuntimeExtensionVersion.ts new file mode 100644 index 0000000000..6cdbab79be --- /dev/null +++ b/src/checkDotNetRuntimeExtensionVersion.ts @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { lt } from 'semver'; + +export const DotNetRuntimeExtensionId = 'ms-dotnettools.vscode-dotnet-runtime'; +const requiredDotNetRuntimeExtensionVersion = '2.2.3'; + +export async function checkDotNetRuntimeExtensionVersion(context: vscode.ExtensionContext): Promise { + const dotnetRuntimeExtension = vscode.extensions.getExtension(DotNetRuntimeExtensionId); + const dotnetRuntimeExtensionVersion = dotnetRuntimeExtension?.packageJSON.version; + if (lt(dotnetRuntimeExtensionVersion, requiredDotNetRuntimeExtensionVersion)) { + const button = vscode.l10n.t('Update and reload'); + const prompt = vscode.l10n.t( + 'The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue', + context.extension.packageJSON.displayName, + requiredDotNetRuntimeExtensionVersion, + DotNetRuntimeExtensionId + ); + const selection = await vscode.window.showErrorMessage(prompt, button); + if (selection === button) { + await vscode.commands.executeCommand('workbench.extensions.installExtension', DotNetRuntimeExtensionId); + await vscode.commands.executeCommand('workbench.action.reloadWindow'); + } else { + throw new Error( + vscode.l10n.t( + 'Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.', + requiredDotNetRuntimeExtensionVersion, + DotNetRuntimeExtensionId, + context.extension.packageJSON.displayName + ) + ); + } + } +} diff --git a/src/checkSupportedPlatform.ts b/src/checkSupportedPlatform.ts new file mode 100644 index 0000000000..aaaa111669 --- /dev/null +++ b/src/checkSupportedPlatform.ts @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { PlatformInformation } from './shared/platform'; +import { ActionOption, showErrorMessage } from './shared/observers/utils/showMessage'; + +export function checkIsSupportedPlatform(context: vscode.ExtensionContext, platformInfo: PlatformInformation): boolean { + if (!isSupportedPlatform(platformInfo)) { + // Check to see if VS Code is running remotely + if (context.extension.extensionKind === vscode.ExtensionKind.Workspace) { + const setupButton: ActionOption = { + title: vscode.l10n.t('How to setup Remote Debugging'), + action: async () => { + const remoteDebugInfoURL = + 'https://github.com/dotnet/vscode-csharp/wiki/Remote-Debugging-On-Linux-Arm'; + await vscode.env.openExternal(vscode.Uri.parse(remoteDebugInfoURL)); + }, + }; + const errorMessage = vscode.l10n.t( + `The C# extension for Visual Studio Code is incompatible on {0} {1} with the VS Code Remote Extensions. To see avaliable workarounds, click on '{2}'.`, + platformInfo.platform, + platformInfo.architecture, + setupButton.title + ); + showErrorMessage(vscode, errorMessage, setupButton); + } else { + const errorMessage = vscode.l10n.t( + 'The C# extension for Visual Studio Code is incompatible on {0} {1}.', + platformInfo.platform, + platformInfo.architecture + ); + showErrorMessage(vscode, errorMessage); + } + + // Unsupported platform + return false; + } + + return true; +} + +function isSupportedPlatform(platform: PlatformInformation): boolean { + if (platform.isWindows()) { + return platform.architecture === 'x86_64' || platform.architecture === 'arm64'; + } + + if (platform.isMacOS()) { + return true; + } + + if (platform.isLinux()) { + return ( + platform.architecture === 'x86_64' || + platform.architecture === 'x86' || + platform.architecture === 'i686' || + platform.architecture === 'arm64' + ); + } + + return false; +} diff --git a/src/dotnetPack.ts b/src/dotnetPack.ts deleted file mode 100644 index 2e6447e000..0000000000 --- a/src/dotnetPack.ts +++ /dev/null @@ -1,24 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as vscode from 'vscode'; - -const dotnetPackExtensionId = 'ms-dotnettools.vscode-dotnet-pack'; - -export interface DotnetPackExtensionExports { - getDotnetPath(version?: string): Promise; -} - -export async function getDotnetPackApi(): Promise { - const dotnetExtension = vscode.extensions.getExtension(dotnetPackExtensionId); - if (dotnetExtension === undefined) { - return undefined; - } - - if (!dotnetExtension.isActive) { - await dotnetExtension.activate(); - } - - return dotnetExtension.exports; -} diff --git a/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts b/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts index a72b243901..b2d34ed332 100644 --- a/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts +++ b/src/lsptoolshost/dotnetRuntime/dotnetRuntimeExtensionResolver.ts @@ -13,6 +13,7 @@ import { existsSync } from 'fs'; import { CSharpExtensionId } from '../../constants/csharpExtensionId'; import { readFile } from 'fs/promises'; import { IDotnetAcquireResult, IDotnetFindPathContext } from './dotnetRuntimeExtensionApi'; +import { DotNetRuntimeExtensionId } from '../../checkDotNetRuntimeExtensionVersion'; const DotNetMajorVersion = '9'; const DotNetMinorVersion = '0'; @@ -57,7 +58,7 @@ export class DotnetRuntimeExtensionResolver implements IHostExecutableResolver { ); if (acquireResult === undefined) { this.channel.appendLine( - `Did not find .NET ${DotNetRuntimeVersion} on path, falling back to acquire runtime via ms-dotnettools.vscode-dotnet-runtime` + `Did not find .NET ${DotNetRuntimeVersion} on path, falling back to acquire runtime via ${DotNetRuntimeExtensionId}` ); acquireResult = await this.acquireDotNetProcessDependencies(); } diff --git a/src/main.ts b/src/main.ts index f2d93ca5f0..71a40187fd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -15,34 +15,20 @@ import { PlatformInformation } from './shared/platform'; import TelemetryReporter from '@vscode/extension-telemetry'; import { vscodeNetworkSettingsProvider } from './networkSettings'; import createOptionStream from './shared/observables/createOptionStream'; -import { activateRazorExtension } from './razor/razor'; import { AbsolutePathPackage } from './packageManager/absolutePathPackage'; import { downloadAndInstallPackages } from './packageManager/downloadAndInstallPackages'; import IInstallDependencies from './packageManager/IInstallDependencies'; import { installRuntimeDependencies } from './installRuntimeDependencies'; import { isValidDownload } from './packageManager/isValidDownload'; -import { getDotnetPackApi } from './dotnetPack'; -import { RoslynLanguageServer } from './lsptoolshost/server/roslynLanguageServer'; import { MigrateOptions } from './shared/migrateOptions'; -import { getBrokeredServiceContainer } from './lsptoolshost/serviceBroker/brokeredServicesHosting'; -import { CSharpDevKitExports } from './csharpDevKitExports'; -import Descriptors from './lsptoolshost/solutionSnapshot/descriptors'; -import { GlobalBrokeredServiceContainer } from '@microsoft/servicehub-framework'; import { CSharpExtensionExports, OmnisharpExtensionExports } from './csharpExtensionExports'; -import { csharpDevkitExtensionId, getCSharpDevKit } from './utils/getCSharpDevKit'; -import { BlazorDebugConfigurationProvider } from './razor/src/blazorDebug/blazorDebugConfigurationProvider'; -import { SolutionSnapshotProvider } from './lsptoolshost/solutionSnapshot/solutionSnapshotProvider'; -import { commonOptions, languageServerOptions, omnisharpOptions, razorOptions } from './shared/options'; -import { BuildResultDiagnostics } from './lsptoolshost/diagnostics/buildResultReporterService'; -import { debugSessionTracker } from './coreclrDebug/provisionalDebugSessionTracker'; -import { activateOmniSharpLanguageServer, ActivationResult } from './omnisharp/omnisharpLanguageServer'; -import { ActionOption, showErrorMessage } from './shared/observers/utils/showMessage'; -import { lt } from 'semver'; +import { getCSharpDevKit } from './utils/getCSharpDevKit'; +import { commonOptions, omnisharpOptions } from './shared/options'; import { TelemetryEventNames } from './shared/telemetryEventNames'; -import { RoslynLanguageServerEvents, ServerState } from './lsptoolshost/server/languageServerEvents'; -import { activateRoslynLanguageServer } from './lsptoolshost/activate'; -import { RoslynLanguageServerExport } from './lsptoolshost/extensions/roslynLanguageServerExportChannel'; -import { getComponentFolder } from './lsptoolshost/extensions/builtInComponents'; +import { checkDotNetRuntimeExtensionVersion } from './checkDotNetRuntimeExtensionVersion'; +import { checkIsSupportedPlatform } from './checkSupportedPlatform'; +import { activateOmniSharp } from './activateOmniSharp'; +import { activateRoslyn } from './activateRoslyn'; export async function activate( context: vscode.ExtensionContext @@ -53,12 +39,18 @@ export async function activate( const csharpChannel = vscode.window.createOutputChannel('C#', { log: true }); csharpChannel.trace('Activating C# Extension'); - await MigrateOptions(vscode); - const optionStream = createOptionStream(vscode); + util.setExtensionPath(context.extension.extensionPath); - const eventStream = new EventStream(); + const aiKey = context.extension.packageJSON.contributes.debuggers[0].aiKey; + const reporter = new TelemetryReporter(aiKey); + // ensure it gets properly disposed. Upon disposal the events will be flushed. + context.subscriptions.push(reporter); - util.setExtensionPath(context.extension.extensionPath); + const eventStream = new EventStream(); + const csharpchannelObserver = new CsharpChannelObserver(csharpChannel); + const csharpLogObserver = new CsharpLoggerObserver(csharpChannel); + eventStream.subscribe(csharpchannelObserver.post); + eventStream.subscribe(csharpLogObserver.post); let platformInfo: PlatformInformation; try { @@ -68,19 +60,17 @@ export async function activate( throw error; } - const aiKey = context.extension.packageJSON.contributes.debuggers[0].aiKey; - const reporter = new TelemetryReporter(aiKey); - // ensure it gets properly disposed. Upon disposal the events will be flushed. - context.subscriptions.push(reporter); + // Verify that the current platform is supported by the extension and inform the user if not. + if (!checkIsSupportedPlatform(context, platformInfo)) { + return null; + } - const csharpchannelObserver = new CsharpChannelObserver(csharpChannel); - const csharpLogObserver = new CsharpLoggerObserver(csharpChannel); - eventStream.subscribe(csharpchannelObserver.post); - eventStream.subscribe(csharpLogObserver.post); + await checkDotNetRuntimeExtensionVersion(context); - const requiredPackageIds: string[] = ['Debugger']; + await MigrateOptions(vscode); + const optionStream = createOptionStream(vscode); - requiredPackageIds.push('Razor'); + const requiredPackageIds: string[] = ['Debugger', 'Razor']; const csharpDevkitExtension = getCSharpDevKit(); const useOmnisharpServer = !csharpDevkitExtension && commonOptions.useOmnisharpServer; @@ -88,225 +78,63 @@ export async function activate( requiredPackageIds.push('OmniSharp'); } - const dotnetRuntimeExtensionId = 'ms-dotnettools.vscode-dotnet-runtime'; - const requiredDotnetRuntimeExtensionVersion = '2.2.3'; - - const dotnetRuntimeExtension = vscode.extensions.getExtension(dotnetRuntimeExtensionId); - const dotnetRuntimeExtensionVersion = dotnetRuntimeExtension?.packageJSON.version; - if (lt(dotnetRuntimeExtensionVersion, requiredDotnetRuntimeExtensionVersion)) { - const button = vscode.l10n.t('Update and reload'); - const prompt = vscode.l10n.t( - 'The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue', - context.extension.packageJSON.displayName, - requiredDotnetRuntimeExtensionVersion, - dotnetRuntimeExtensionId - ); - const selection = await vscode.window.showErrorMessage(prompt, button); - if (selection === button) { - await vscode.commands.executeCommand('workbench.extensions.installExtension', dotnetRuntimeExtensionId); - await vscode.commands.executeCommand('workbench.action.reloadWindow'); - } else { - throw new Error( - vscode.l10n.t( - 'Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.', - requiredDotnetRuntimeExtensionVersion, - dotnetRuntimeExtensionId, - context.extension.packageJSON.displayName - ) - ); - } - } - - // If the dotnet bundle is installed, this will ensure the dotnet CLI is on the path. - await initializeDotnetPath(); - const networkSettingsProvider = vscodeNetworkSettingsProvider(vscode); const useFramework = useOmnisharpServer && omnisharpOptions.useModernNet !== true; const installDependencies: IInstallDependencies = async (dependencies: AbsolutePathPackage[]) => downloadAndInstallPackages(dependencies, networkSettingsProvider, eventStream, isValidDownload); - const runtimeDependenciesExist = await ensureRuntimeDependencies( - context.extension, + const runtimeDependenciesExist = await installRuntimeDependencies( + context.extension.packageJSON, + context.extension.extensionPath, + installDependencies, eventStream, platformInfo, - installDependencies, useFramework, requiredPackageIds ); - let omnisharpLangServicePromise: Promise | undefined = undefined; - let omnisharpRazorPromise: Promise | undefined = undefined; - const roslynLanguageServerEvents = new RoslynLanguageServerEvents(); - context.subscriptions.push(roslynLanguageServerEvents); - let roslynLanguageServerStartedPromise: Promise | undefined = undefined; - let razorLanguageServerStartedPromise: Promise | undefined = undefined; - let projectInitializationCompletePromise: Promise | undefined = undefined; - - if (!useOmnisharpServer) { - // Activate Razor. Needs to be activated before Roslyn so commands are registered in the correct order. - // Otherwise, if Roslyn starts up first, they could execute commands that don't yet exist on Razor's end. - // - // Flow: - // Razor starts up and registers dynamic file info commands -> - // Roslyn starts up and registers Razor-specific didOpen/didClose/didChange commands and sends request to Razor - // for dynamic file info once project system is ready -> - // Razor sends didOpen commands to Roslyn for generated docs and responds to request with dynamic file info - razorLanguageServerStartedPromise = activateRazorExtension( - context, - context.extension.extensionPath, - eventStream, - reporter, - csharpDevkitExtension, - platformInfo, - /* useOmnisharpServer */ false - ); + const getCoreClrDebugPromise = async (languageServerStartedPromise: Promise) => { + let coreClrDebugPromise = Promise.resolve(); + if (runtimeDependenciesExist) { + // activate coreclr-debug + coreClrDebugPromise = coreclrdebug.activate( + context.extension, + context, + platformInfo, + eventStream, + csharpChannel, + languageServerStartedPromise + ); + } - // Setup a listener for project initialization complete before we start the server. - projectInitializationCompletePromise = new Promise((resolve, _) => { - roslynLanguageServerEvents.onServerStateChange(async (e) => { - if (e.state === ServerState.ProjectInitializationComplete) { - resolve(); - } - }); - }); + return coreClrDebugPromise; + }; - // Start the server, but do not await the completion to avoid blocking activation. - roslynLanguageServerStartedPromise = activateRoslynLanguageServer( + let exports: CSharpExtensionExports | OmnisharpExtensionExports; + if (!useOmnisharpServer) { + exports = activateRoslyn( context, platformInfo, optionStream, + eventStream, csharpChannel, reporter, - roslynLanguageServerEvents + csharpDevkitExtension, + getCoreClrDebugPromise ); } else { - // activate language services - const dotnetTestChannel = vscode.window.createOutputChannel(vscode.l10n.t('.NET Test Log')); - const dotnetChannel = vscode.window.createOutputChannel(vscode.l10n.t('.NET NuGet Restore')); - omnisharpLangServicePromise = activateOmniSharpLanguageServer( + exports = activateOmniSharp( context, platformInfo, optionStream, networkSettingsProvider, eventStream, csharpChannel, - dotnetTestChannel, - dotnetChannel, - reporter - ); - - if (!razorOptions.razorDevMode) { - omnisharpRazorPromise = activateRazorExtension( - context, - context.extension.extensionPath, - eventStream, - reporter, - undefined, - platformInfo, - /* useOmnisharpServer */ true - ); - } - } - - if (!isSupportedPlatform(platformInfo)) { - // Check to see if VS Code is running remotely - if (context.extension.extensionKind === vscode.ExtensionKind.Workspace) { - const setupButton: ActionOption = { - title: vscode.l10n.t('How to setup Remote Debugging'), - action: async () => { - const remoteDebugInfoURL = - 'https://github.com/dotnet/vscode-csharp/wiki/Remote-Debugging-On-Linux-Arm'; - await vscode.env.openExternal(vscode.Uri.parse(remoteDebugInfoURL)); - }, - }; - const errorMessage = vscode.l10n.t( - `The C# extension for Visual Studio Code is incompatible on {0} {1} with the VS Code Remote Extensions. To see avaliable workarounds, click on '{2}'.`, - platformInfo.platform, - platformInfo.architecture, - setupButton.title - ); - showErrorMessage(vscode, errorMessage, setupButton); - } else { - const errorMessage = vscode.l10n.t( - 'The C# extension for Visual Studio Code is incompatible on {0} {1}.', - platformInfo.platform, - platformInfo.architecture - ); - showErrorMessage(vscode, errorMessage); - } - - // Unsupported platform - return null; - } - - let coreClrDebugPromise = Promise.resolve(); - if (runtimeDependenciesExist) { - // activate coreclr-debug - coreClrDebugPromise = coreclrdebug.activate( - context.extension, - context, - platformInfo, - eventStream, - csharpChannel, - roslynLanguageServerStartedPromise ?? omnisharpLangServicePromise + reporter, + getCoreClrDebugPromise ); } - let exports: CSharpExtensionExports | OmnisharpExtensionExports; - - if (!useOmnisharpServer) { - debugSessionTracker.initializeDebugSessionHandlers(context); - - tryGetCSharpDevKitExtensionExports(csharpLogObserver); - - // If we got here, the server should definitely have been created. - util.isNotNull(roslynLanguageServerStartedPromise); - util.isNotNull(projectInitializationCompletePromise); - - const languageServerExport = new RoslynLanguageServerExport(roslynLanguageServerStartedPromise); - exports = { - initializationFinished: async () => { - await coreClrDebugPromise; - await razorLanguageServerStartedPromise; - await roslynLanguageServerStartedPromise; - await projectInitializationCompletePromise; - }, - profferBrokeredServices: (container) => - profferBrokeredServices(context, container, roslynLanguageServerStartedPromise!), - logDirectory: context.logUri.fsPath, - determineBrowserType: BlazorDebugConfigurationProvider.determineBrowserType, - experimental: { - sendServerRequest: async (t, p, ct) => await languageServerExport.sendRequest(t, p, ct), - languageServerEvents: roslynLanguageServerEvents, - }, - getComponentFolder: (componentName) => { - return getComponentFolder(componentName, languageServerOptions); - }, - }; - } else { - exports = { - initializationFinished: async () => { - const langService = await omnisharpLangServicePromise; - await langService!.server.waitForInitialize(); - await coreClrDebugPromise; - - if (omnisharpRazorPromise) { - await omnisharpRazorPromise; - } - }, - getAdvisor: async () => { - const langService = await omnisharpLangServicePromise; - return langService!.advisor; - }, - getTestManager: async () => { - const langService = await omnisharpLangServicePromise; - return langService!.testManager; - }, - eventStream, - logDirectory: context.logUri.fsPath, - }; - } - const timeTaken = process.hrtime(startActivation); const timeTakenStr = (timeTaken[0] * 1000 + timeTaken[1] / 1000000).toFixed(3); csharpChannel.trace('C# Extension activated in ' + timeTakenStr + 'ms.'); @@ -318,102 +146,3 @@ export async function activate( return exports; } - -/** - * This method will try to get the CSharpDevKitExports through a thenable promise, - * awaiting `activate` will cause this extension's activation to hang. - */ -function tryGetCSharpDevKitExtensionExports(csharpLogObserver: CsharpLoggerObserver): void { - const ext = getCSharpDevKit(); - ext?.activate().then( - async (exports: CSharpDevKitExports) => { - if (exports && exports.serviceBroker) { - // When proffering this IServiceBroker into our own container, - // we list the monikers of the brokered services we expect to find there. - // This list must be a subset of the monikers previously registered with our own container - // as defined in the getBrokeredServiceContainer function. - getBrokeredServiceContainer().profferServiceBroker(exports.serviceBroker, [ - Descriptors.dotnetDebugConfigurationService.moniker, - ]); - - // Notify the vsdbg configuration provider that C# dev kit has been loaded. - exports.serverProcessLoaded(async () => { - await debugSessionTracker.onCsDevKitInitialized(await exports.getBrokeredServiceServerPipeName()); - }); - - await vscode.commands.executeCommand('setContext', 'dotnet.debug.serviceBrokerAvailable', true); - } else { - csharpLogObserver.logger.appendLine( - `[ERROR] '${csharpDevkitExtensionId}' activated but did not return expected Exports.` - ); - } - }, - () => { - csharpLogObserver.logger.appendLine(`[ERROR] Failed to activate '${csharpDevkitExtensionId}'`); - } - ); -} - -function profferBrokeredServices( - context: vscode.ExtensionContext, - serviceContainer: GlobalBrokeredServiceContainer, - languageServerPromise: Promise -) { - context.subscriptions.push( - serviceContainer.profferServiceFactory( - Descriptors.solutionSnapshotProviderRegistration, - (_mk, _op, _sb) => new SolutionSnapshotProvider(languageServerPromise) - ), - serviceContainer.profferServiceFactory( - Descriptors.csharpExtensionBuildResultService, - (_mk, _op, _sb) => new BuildResultDiagnostics(languageServerPromise) - ) - ); -} - -function isSupportedPlatform(platform: PlatformInformation): boolean { - if (platform.isWindows()) { - return platform.architecture === 'x86_64' || platform.architecture === 'arm64'; - } - - if (platform.isMacOS()) { - return true; - } - - if (platform.isLinux()) { - return ( - platform.architecture === 'x86_64' || - platform.architecture === 'x86' || - platform.architecture === 'i686' || - platform.architecture === 'arm64' - ); - } - - return false; -} - -async function ensureRuntimeDependencies( - extension: vscode.Extension, - eventStream: EventStream, - platformInfo: PlatformInformation, - installDependencies: IInstallDependencies, - useFramework: boolean, - requiredPackageIds: string[] -): Promise { - return installRuntimeDependencies( - extension.packageJSON, - extension.extensionPath, - installDependencies, - eventStream, - platformInfo, - useFramework, - requiredPackageIds - ); -} - -async function initializeDotnetPath(): Promise { - const dotnetPackApi = await getDotnetPackApi(); - if (dotnetPackApi !== undefined) { - await dotnetPackApi.getDotnetPath(); - } -} From eabd8a0ff38fb39be0a328eca40ddba65a2cae4a Mon Sep 17 00:00:00 2001 From: Andrew Hall Date: Mon, 24 Feb 2025 17:14:37 -0800 Subject: [PATCH 12/39] Always set fuse --- src/razor/src/razorLanguageServerClient.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/razor/src/razorLanguageServerClient.ts b/src/razor/src/razorLanguageServerClient.ts index b1c60e8837..ab94304193 100644 --- a/src/razor/src/razorLanguageServerClient.ts +++ b/src/razor/src/razorLanguageServerClient.ts @@ -268,10 +268,8 @@ export class RazorLanguageServerClient implements vscode.Disposable { args.push('--SingleServerCompletionSupport'); args.push('true'); - if (options.forceRuntimeCodeGeneration) { - args.push('--ForceRuntimeCodeGeneration'); - args.push('true'); - } + args.push('--ForceRuntimeCodeGeneration'); + args.push(options.forceRuntimeCodeGeneration ? 'true' : 'false'); if (options.useNewFormattingEngine) { args.push('--UseNewFormattingEngine'); From 5a5d5c775e8da11c4aba1ddd84c5a2c3655b7ae5 Mon Sep 17 00:00:00 2001 From: David Barbet Date: Mon, 24 Feb 2025 17:52:33 -0800 Subject: [PATCH 13/39] Add backport bot to vscode-csharp --- .github/workflows/backport.yml | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/backport.yml diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml new file mode 100644 index 0000000000..ee4eceb1f7 --- /dev/null +++ b/.github/workflows/backport.yml @@ -0,0 +1,40 @@ +name: Backport PR to branch +on: + issue_comment: + types: [created] + schedule: + # once a day at 13:00 UTC to cleanup old runs + - cron: '0 13 * * *' + +permissions: + contents: write + issues: write + pull-requests: write + actions: write + +jobs: + backport: + if: ${{ contains(github.event.comment.body, '/backport to') || github.event_name == 'schedule' }} + uses: dotnet/arcade/.github/workflows/backport-base.yml@main + with: + pr_description_template: | + Backport of #%source_pr_number% to %target_branch% + + /cc %cc_users% + + ## Customer Impact + + ## Regression + + - [ ] Yes + - [ ] No + + [If yes, specify when the regression was introduced. Provide the PR or commit if known.] + + ## Testing + + [How was the fix verified? How was the issue missed previously? What tests were added?] + + ## Risk + + [High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.] \ No newline at end of file From d64a301d36321262f94bdf133f4f8afaf8b2ce19 Mon Sep 17 00:00:00 2001 From: David Wengier Date: Thu, 27 Feb 2025 13:37:42 +1100 Subject: [PATCH 14/39] Bump Razor to 9.0.0-preview.25125.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d8542e047f..2a90e5bad9 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "defaults": { "roslyn": "4.14.0-2.25120.5", "omniSharp": "1.39.12", - "razor": "9.0.0-preview.25121.2", + "razor": "9.0.0-preview.25125.9", "razorOmnisharp": "7.0.0-preview.23363.1", "xamlTools": "17.14.35821.62" }, From 420c9316f531c51b589aef8f1990033af6ab0933 Mon Sep 17 00:00:00 2001 From: David Wengier Date: Thu, 27 Feb 2025 13:40:16 +1100 Subject: [PATCH 15/39] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5a2c09941..935eef163a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - Debug from .csproj and .sln [#5876](https://github.com/dotnet/vscode-csharp/issues/5876) # 2.68.x +* Update Razor to 9.0.0-preview.25125.9 (PR: [#8027](https://github.com/dotnet/vscode-csharp/pull/8027)) + * Don't send invalid ranges for diagnostics if they do not map (#11555) (PR: [#11555](https://github.com/dotnet/razor/pull/11555)) + * Fix file path service, and integration tests (#11556) (PR: [#11556](https://github.com/dotnet/razor/pull/11556)) + * Add ParserOptions and CodeGenerationOptions properties to RazorCodeDocument and rationalize options configuration (#11526) (PR: [#11526](https://github.com/dotnet/razor/pull/11526)) + * Fix parsing of quotes in attribute names (#11543) (PR: [#11543](https://github.com/dotnet/razor/pull/11543)) # 2.67.x * Bump xamlTools to 17.14.35821.62 (PR: [#8001](https://github.com/dotnet/vscode-csharp/pull/8001)) From 9229324c4190c2ed441d990c4c4d186cf3ed5b18 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 21:30:45 -0800 Subject: [PATCH 16/39] Only publish cpuprofile logs for integration tests. --- azure-pipelines/test.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index ce51f1504f..7dbfc236e1 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -33,12 +33,13 @@ steps: DISPLAY: :99.0 CODE_VERSION: ${{ parameters.testVSCodeVersion }} -- powershell: | - $tempPath = [System.IO.Path]::GetTempPath() - echo "Temp Path: $tempPath" - Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" - displayName: 'Copy .cpuprofile files to out/logs' - condition: succeededOrFailed() +- ${{ if contains(parameters.npmCommand, ':integration') }}: + - powershell: | + $tempPath = [System.IO.Path]::GetTempPath() + echo "Temp Path: $tempPath" + Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" + displayName: 'Copy .cpuprofile files to out/logs' + condition: succeededOrFailed() - task: PublishTestResults@2 condition: succeededOrFailed() From b8c71415a2bad28e5043c1872eebe4f9e08a38a1 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 21:40:52 -0800 Subject: [PATCH 17/39] Make integration test logging conditional as well --- azure-pipelines/test.yml | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 7dbfc236e1..f58c78e9c1 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -33,14 +33,6 @@ steps: DISPLAY: :99.0 CODE_VERSION: ${{ parameters.testVSCodeVersion }} -- ${{ if contains(parameters.npmCommand, ':integration') }}: - - powershell: | - $tempPath = [System.IO.Path]::GetTempPath() - echo "Temp Path: $tempPath" - Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" - displayName: 'Copy .cpuprofile files to out/logs' - condition: succeededOrFailed() - - task: PublishTestResults@2 condition: succeededOrFailed() displayName: 'Publish Test Results' @@ -52,17 +44,25 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - task: 1ES.PublishPipelineArtifact@1 - condition: succeededOrFailed() - displayName: 'Upload integration test logs' - inputs: - path: '$(Build.SourcesDirectory)/out/logs' - artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' -- ${{ else }}: - - task: PublishPipelineArtifact@1 +- ${{ if contains(parameters.npmCommand, ':integration') }}: + - powershell: | + $tempPath = [System.IO.Path]::GetTempPath() + echo "Temp Path: $tempPath" + Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" + displayName: 'Copy .cpuprofile files to out/logs' condition: succeededOrFailed() - displayName: 'Upload integration test logs' - inputs: - targetPath: '$(Build.SourcesDirectory)/out/logs' - artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' + + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: 1ES.PublishPipelineArtifact@1 + condition: succeededOrFailed() + displayName: 'Upload integration test logs' + inputs: + path: '$(Build.SourcesDirectory)/out/logs' + artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' + - ${{ else }}: + - task: PublishPipelineArtifact@1 + condition: succeededOrFailed() + displayName: 'Upload integration test logs' + inputs: + targetPath: '$(Build.SourcesDirectory)/out/logs' + artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' From 5dca2ebade7b0c00e472bb97fe7c9154e50d88de Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:14:40 -0800 Subject: [PATCH 18/39] Use parameter --- azure-pipelines/test-matrix.yml | 5 +++-- azure-pipelines/test.yml | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index 51cea0fb34..c7f9453af4 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -31,6 +31,7 @@ jobs: - template: /azure-pipelines/test.yml@self parameters: dotnetVersion: ${{ parameters.dotnetVersion }} - installAdditionalLinuxDependencies: true + installAdditionalLinuxDependencies: ${{ parameters.installAdditionalLinuxDependencies }} npmCommand: $(npmCommand) - testVSCodeVersion: ${{ parameters.testVSCodeVersion }} \ No newline at end of file + testVSCodeVersion: ${{ parameters.testVSCodeVersion }} + isIntegrationTest: $[ startsWith(variables.npmCommand, 'test:integration') ] \ No newline at end of file diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index f58c78e9c1..593fd486c2 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -8,6 +8,8 @@ parameters: type: string - name: testVSCodeVersion type: string + - name: isIntegrationTest + type: boolean steps: - checkout: self @@ -44,7 +46,7 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- ${{ if contains(parameters.npmCommand, ':integration') }}: +- ${{ if eq(parameters.isIntegrationTest, true) }}: - powershell: | $tempPath = [System.IO.Path]::GetTempPath() echo "Temp Path: $tempPath" From 300295ae7f97c82ddc559faff050d9dc99d583fc Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:17:34 -0800 Subject: [PATCH 19/39] yml --- azure-pipelines/test-matrix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index c7f9453af4..1f30cb8a70 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -34,4 +34,4 @@ jobs: installAdditionalLinuxDependencies: ${{ parameters.installAdditionalLinuxDependencies }} npmCommand: $(npmCommand) testVSCodeVersion: ${{ parameters.testVSCodeVersion }} - isIntegrationTest: $[ startsWith(variables.npmCommand, 'test:integration') ] \ No newline at end of file + isIntegrationTest: $[ eq(startsWith(variables.npmCommand, 'test:integration'), true) ] \ No newline at end of file From 64aab6526068e9e87755caece2495151ea5abef4 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:18:51 -0800 Subject: [PATCH 20/39] Try compile time expression --- azure-pipelines/test-matrix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index 1f30cb8a70..261a18ebba 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -34,4 +34,4 @@ jobs: installAdditionalLinuxDependencies: ${{ parameters.installAdditionalLinuxDependencies }} npmCommand: $(npmCommand) testVSCodeVersion: ${{ parameters.testVSCodeVersion }} - isIntegrationTest: $[ eq(startsWith(variables.npmCommand, 'test:integration'), true) ] \ No newline at end of file + isIntegrationTest: ${{ startsWith(variables.npmCommand, 'test:integration') }} \ No newline at end of file From 8b69c086a459591c2b1b456fee70156541dcd6ef Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:28:23 -0800 Subject: [PATCH 21/39] Try using the matrix --- azure-pipelines/test-matrix.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index 261a18ebba..9c3fe9424c 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -18,12 +18,16 @@ jobs: matrix: UnitTests: npmCommand: test:unit + integration: false CSharpIntegrationTests: npmCommand: test:integration:csharp + integration: true DevKitTests: npmCommand: test:integration:devkit + integration: true RazorTests: npmCommand: test:integration:razor + integration: true pool: ${{ parameters.pool }} ${{ if parameters.containerName }}: container: ${{ parameters.containerName }} @@ -34,4 +38,4 @@ jobs: installAdditionalLinuxDependencies: ${{ parameters.installAdditionalLinuxDependencies }} npmCommand: $(npmCommand) testVSCodeVersion: ${{ parameters.testVSCodeVersion }} - isIntegrationTest: ${{ startsWith(variables.npmCommand, 'test:integration') }} \ No newline at end of file + isIntegrationTest: ${{ eq(variables.integration, 'true') }} \ No newline at end of file From b4a00d6a7afcd1684c9c8cdced9965794982a8ec Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:33:22 -0800 Subject: [PATCH 22/39] Don't pass a boolean --- azure-pipelines/test-matrix.yml | 10 +++++----- azure-pipelines/test.yml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index 9c3fe9424c..c37f9ac859 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -18,16 +18,16 @@ jobs: matrix: UnitTests: npmCommand: test:unit - integration: false + isIntegration: false CSharpIntegrationTests: npmCommand: test:integration:csharp - integration: true + isIntegration: true DevKitTests: npmCommand: test:integration:devkit - integration: true + isIntegration: true RazorTests: npmCommand: test:integration:razor - integration: true + isIntegration: true pool: ${{ parameters.pool }} ${{ if parameters.containerName }}: container: ${{ parameters.containerName }} @@ -38,4 +38,4 @@ jobs: installAdditionalLinuxDependencies: ${{ parameters.installAdditionalLinuxDependencies }} npmCommand: $(npmCommand) testVSCodeVersion: ${{ parameters.testVSCodeVersion }} - isIntegrationTest: ${{ eq(variables.integration, 'true') }} \ No newline at end of file + isIntegration: $(isIntegration) \ No newline at end of file diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 593fd486c2..e237974518 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -8,8 +8,8 @@ parameters: type: string - name: testVSCodeVersion type: string - - name: isIntegrationTest - type: boolean + - name: isIntegration + type: string steps: - checkout: self @@ -46,7 +46,7 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- ${{ if eq(parameters.isIntegrationTest, true) }}: +- ${{ if eq(parameters.isIntegration, 'true') }}: - powershell: | $tempPath = [System.IO.Path]::GetTempPath() echo "Temp Path: $tempPath" From 46a595c7297e18916052224d921aa880bebf268b Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:37:17 -0800 Subject: [PATCH 23/39] Use condition --- azure-pipelines/test.yml | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index e237974518..3b09c24f5f 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -46,25 +46,24 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- ${{ if eq(parameters.isIntegration, 'true') }}: - - powershell: | - $tempPath = [System.IO.Path]::GetTempPath() - echo "Temp Path: $tempPath" - Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" - displayName: 'Copy .cpuprofile files to out/logs' - condition: succeededOrFailed() +- powershell: | + $tempPath = [System.IO.Path]::GetTempPath() + echo "Temp Path: $tempPath" + Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" + displayName: 'Copy .cpuprofile files to out/logs' + condition: eq(parameters.isIntegration, 'true') - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - task: 1ES.PublishPipelineArtifact@1 - condition: succeededOrFailed() - displayName: 'Upload integration test logs' - inputs: - path: '$(Build.SourcesDirectory)/out/logs' - artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - - ${{ else }}: - - task: PublishPipelineArtifact@1 - condition: succeededOrFailed() - displayName: 'Upload integration test logs' - inputs: - targetPath: '$(Build.SourcesDirectory)/out/logs' - artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' +- ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: 1ES.PublishPipelineArtifact@1 + condition: eq(parameters.isIntegration, 'true') + displayName: 'Upload integration test logs' + inputs: + path: '$(Build.SourcesDirectory)/out/logs' + artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' +- ${{ else }}: + - task: PublishPipelineArtifact@1 + condition: eq(parameters.isIntegration, 'true') + displayName: 'Upload integration test logs' + inputs: + targetPath: '$(Build.SourcesDirectory)/out/logs' + artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' From a4465f0ea749f80aa60d41d09023961fb8aba778 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:39:15 -0800 Subject: [PATCH 24/39] Use compile time expression --- azure-pipelines/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 3b09c24f5f..6da56a220a 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -51,18 +51,18 @@ steps: echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: eq(parameters.isIntegration, 'true') + condition: ${{ eq(parameters.isIntegration, 'true') }} - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: eq(parameters.isIntegration, 'true') + condition: ${{ eq(parameters.isIntegration, 'true') }} displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: eq(parameters.isIntegration, 'true') + condition: ${{ eq(parameters.isIntegration, 'true') }} displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From 927c7d8580454a0d023c84c703ffef4207980c72 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 22:55:50 -0800 Subject: [PATCH 25/39] Use it as a variable --- azure-pipelines/test.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 6da56a220a..cb087a3031 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -11,6 +11,9 @@ parameters: - name: isIntegration type: string +variables: + isIntegration: ${{ parameters.isIntegration }} + steps: - checkout: self clean: true @@ -51,18 +54,18 @@ steps: echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: ${{ eq(parameters.isIntegration, 'true') }} + condition: eq(variables['isIntegration'], 'true') - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: ${{ eq(parameters.isIntegration, 'true') }} + condition: eq(variables['isIntegration'], 'true') displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: ${{ eq(parameters.isIntegration, 'true') }} + condition: eq(variables['isIntegration'], 'true') displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From fe908b83a78dfcfd4e2501caa939be3ec4391136 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:06:27 -0800 Subject: [PATCH 26/39] Add logging --- azure-pipelines/test.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index cb087a3031..1770d8686e 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -11,9 +11,6 @@ parameters: - name: isIntegration type: string -variables: - isIntegration: ${{ parameters.isIntegration }} - steps: - checkout: self clean: true @@ -21,6 +18,8 @@ steps: fetchTags: false fetchDepth: 1 +- script: echo eq(${{ parameters.isIntegration }}, 'true') evaluates to ${{ eq(parameters.isIntegration, 'true)' }} + - template: prereqs.yml parameters: dotnetVersion: ${{ parameters.dotnetVersion }} @@ -54,18 +53,18 @@ steps: echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: eq(variables['isIntegration'], 'true') + condition: ${{ eq(parameters.isIntegration, 'true') }} - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: eq(variables['isIntegration'], 'true') + condition: ${{ eq(parameters.isIntegration, 'true') }} displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: eq(variables['isIntegration'], 'true') + condition: ${{ eq(parameters.isIntegration, 'true') }} displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From c180e264f491af8036f5cad2af401ca94630fb8c Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:07:11 -0800 Subject: [PATCH 27/39] fix typo --- azure-pipelines/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 1770d8686e..c5a02e40f4 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -18,7 +18,7 @@ steps: fetchTags: false fetchDepth: 1 -- script: echo eq(${{ parameters.isIntegration }}, 'true') evaluates to ${{ eq(parameters.isIntegration, 'true)' }} +- script: echo eq(${{ parameters.isIntegration }}, 'true') evaluates to ${{ eq(parameters.isIntegration, 'true') }} - template: prereqs.yml parameters: From fbcf5385fb65e6e4409fcfe64b23614238892276 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:12:11 -0800 Subject: [PATCH 28/39] Try again --- azure-pipelines/test.yml | 45 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index c5a02e40f4..03166ccfbf 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -9,7 +9,7 @@ parameters: - name: testVSCodeVersion type: string - name: isIntegration - type: string + type: boolean steps: - checkout: self @@ -18,8 +18,6 @@ steps: fetchTags: false fetchDepth: 1 -- script: echo eq(${{ parameters.isIntegration }}, 'true') evaluates to ${{ eq(parameters.isIntegration, 'true') }} - - template: prereqs.yml parameters: dotnetVersion: ${{ parameters.dotnetVersion }} @@ -48,24 +46,25 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- powershell: | - $tempPath = [System.IO.Path]::GetTempPath() - echo "Temp Path: $tempPath" - Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" - displayName: 'Copy .cpuprofile files to out/logs' - condition: ${{ eq(parameters.isIntegration, 'true') }} +- ${{ if parameters.isIntegration }}: + - powershell: | + $tempPath = [System.IO.Path]::GetTempPath() + echo "Temp Path: $tempPath" + Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" + displayName: 'Copy .cpuprofile files to out/logs' + condition: succeededOrFailed() -- ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - task: 1ES.PublishPipelineArtifact@1 - condition: ${{ eq(parameters.isIntegration, 'true') }} - displayName: 'Upload integration test logs' - inputs: - path: '$(Build.SourcesDirectory)/out/logs' - artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' -- ${{ else }}: - - task: PublishPipelineArtifact@1 - condition: ${{ eq(parameters.isIntegration, 'true') }} - displayName: 'Upload integration test logs' - inputs: - targetPath: '$(Build.SourcesDirectory)/out/logs' - artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: 1ES.PublishPipelineArtifact@1 + condition: succeededOrFailed() + displayName: 'Upload integration test logs' + inputs: + path: '$(Build.SourcesDirectory)/out/logs' + artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' + - ${{ else }}: + - task: PublishPipelineArtifact@1 + condition: succeededOrFailed() + displayName: 'Upload integration test logs' + inputs: + targetPath: '$(Build.SourcesDirectory)/out/logs' + artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' From d5d85fd1722726301591a6dc1b42efb4258f8815 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:13:45 -0800 Subject: [PATCH 29/39] once more --- azure-pipelines/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 03166ccfbf..e3d28d79a8 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -9,7 +9,7 @@ parameters: - name: testVSCodeVersion type: string - name: isIntegration - type: boolean + type: string steps: - checkout: self From d14046d32a68071eae2e16b5f99e8d1f20636f58 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:17:17 -0800 Subject: [PATCH 30/39] yml --- azure-pipelines/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index e3d28d79a8..61b4c18010 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -46,7 +46,7 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- ${{ if parameters.isIntegration }}: +- ${{ if eq(parameters.isIntegration, true) }}: - powershell: | $tempPath = [System.IO.Path]::GetTempPath() echo "Temp Path: $tempPath" From 50090274a13ddbd62762d79f403d098337b8b46b Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:26:35 -0800 Subject: [PATCH 31/39] Try conditions again but differently --- azure-pipelines/test.yml | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 61b4c18010..ec11a4b9e6 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -46,25 +46,24 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) -- ${{ if eq(parameters.isIntegration, true) }}: - - powershell: | - $tempPath = [System.IO.Path]::GetTempPath() - echo "Temp Path: $tempPath" - Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" - displayName: 'Copy .cpuprofile files to out/logs' - condition: succeededOrFailed() +- powershell: | + $tempPath = [System.IO.Path]::GetTempPath() + echo "Temp Path: $tempPath" + Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" + displayName: 'Copy .cpuprofile files to out/logs' + condition: eq(${{ parameters.isIntegration }}, true) - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - task: 1ES.PublishPipelineArtifact@1 - condition: succeededOrFailed() - displayName: 'Upload integration test logs' - inputs: - path: '$(Build.SourcesDirectory)/out/logs' - artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - - ${{ else }}: - - task: PublishPipelineArtifact@1 - condition: succeededOrFailed() - displayName: 'Upload integration test logs' - inputs: - targetPath: '$(Build.SourcesDirectory)/out/logs' - artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' +- ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: 1ES.PublishPipelineArtifact@1 + condition: eq(${{ parameters.isIntegration }}, true) + displayName: 'Upload integration test logs' + inputs: + path: '$(Build.SourcesDirectory)/out/logs' + artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' +- ${{ else }}: + - task: PublishPipelineArtifact@1 + condition: eq(${{ parameters.isIntegration }}, true) + displayName: 'Upload integration test logs' + inputs: + targetPath: '$(Build.SourcesDirectory)/out/logs' + artifactName: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' From d0f58a9f28c8f70eb84087a21268c9803603c393 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:28:36 -0800 Subject: [PATCH 32/39] Fix new typo --- azure-pipelines/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index ec11a4b9e6..a74d728247 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -51,18 +51,18 @@ steps: echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: eq(${{ parameters.isIntegration }}, true) + condition: eq({{ parameters.isIntegration }}, true) - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: eq(${{ parameters.isIntegration }}, true) + condition: eq({{ parameters.isIntegration }}, true) displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: eq(${{ parameters.isIntegration }}, true) + condition: eq({{ parameters.isIntegration }}, true) displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From 3bb3993e546136d5d0057e1b70184e9f143d8c7b Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:30:28 -0800 Subject: [PATCH 33/39] take 3 --- azure-pipelines/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index a74d728247..8de2a68aeb 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -51,18 +51,18 @@ steps: echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: eq({{ parameters.isIntegration }}, true) + condition: eq( ${{ parameters.isIntegration }}, 'true') - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: eq({{ parameters.isIntegration }}, true) + condition: eq( ${{ parameters.isIntegration }}, 'true') displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: eq({{ parameters.isIntegration }}, true) + condition: eq( ${{ parameters.isIntegration }}, 'true') displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From deff1daa6d8716af4096dd2a6c2492927fd504e7 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:48:14 -0800 Subject: [PATCH 34/39] take 4 --- azure-pipelines/test.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 8de2a68aeb..9bb3371fa1 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -46,23 +46,26 @@ steps: mergeTestResults: true testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) +- powershell: | + Write-Host "##vso[task.setvariable variable=isIntegration;]${{ parameters.isIntegration }}" + - powershell: | $tempPath = [System.IO.Path]::GetTempPath() echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: eq( ${{ parameters.isIntegration }}, 'true') + condition: eq(variables.isIntegration, true) - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: eq( ${{ parameters.isIntegration }}, 'true') + condition: eq(variables.isIntegration, true) displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: eq( ${{ parameters.isIntegration }}, 'true') + condition: eq(variables.isIntegration, true) displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From e35d7b5a25d945110fc27dcc9f45ecaf238480ad Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:53:22 -0800 Subject: [PATCH 35/39] Try different name --- azure-pipelines/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 9bb3371fa1..1df029a39e 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -47,25 +47,25 @@ steps: testRunTitle: $(System.StageDisplayName) $(Agent.JobName) (Attempt $(System.JobAttempt)) - powershell: | - Write-Host "##vso[task.setvariable variable=isIntegration;]${{ parameters.isIntegration }}" + Write-Host "##vso[task.setvariable variable=isIntegrationVar;]${{ parameters.isIntegration }}" - powershell: | $tempPath = [System.IO.Path]::GetTempPath() echo "Temp Path: $tempPath" Get-ChildItem -Path $tempPath -Filter *.cpuprofile | Copy-Item -Destination "$(Build.SourcesDirectory)/out/logs" displayName: 'Copy .cpuprofile files to out/logs' - condition: eq(variables.isIntegration, true) + condition: eq(variables.isIntegrationVar, true) - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - task: 1ES.PublishPipelineArtifact@1 - condition: eq(variables.isIntegration, true) + condition: eq(variables.isIntegrationVar, true) displayName: 'Upload integration test logs' inputs: path: '$(Build.SourcesDirectory)/out/logs' artifact: 'Test Logs ($(System.StageDisplayName)-$(Agent.JobName)-$(System.JobAttempt))' - ${{ else }}: - task: PublishPipelineArtifact@1 - condition: eq(variables.isIntegration, true) + condition: eq(variables.isIntegrationVar, true) displayName: 'Upload integration test logs' inputs: targetPath: '$(Build.SourcesDirectory)/out/logs' From 3bc238d0face360a5ddf1d20ebc1dbca13554e81 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Wed, 26 Feb 2025 23:59:33 -0800 Subject: [PATCH 36/39] Cleanup --- azure-pipelines/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/azure-pipelines/test.yml b/azure-pipelines/test.yml index 1df029a39e..8a5ced7660 100644 --- a/azure-pipelines/test.yml +++ b/azure-pipelines/test.yml @@ -48,6 +48,8 @@ steps: - powershell: | Write-Host "##vso[task.setvariable variable=isIntegrationVar;]${{ parameters.isIntegration }}" + displayName: 'Set IsIntegration Variable' + condition: succeededOrFailed() - powershell: | $tempPath = [System.IO.Path]::GetTempPath() From fa63af7635bf9ac5c9b6c9c35de0f5ff92b00155 Mon Sep 17 00:00:00 2001 From: David Barbet Date: Fri, 28 Feb 2025 12:14:49 -0800 Subject: [PATCH 37/39] fix profiling yml --- azure-pipelines/profiling.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/azure-pipelines/profiling.yml b/azure-pipelines/profiling.yml index 7171b16e38..f3edf29fdc 100644 --- a/azure-pipelines/profiling.yml +++ b/azure-pipelines/profiling.yml @@ -56,4 +56,5 @@ extends: parameters: dotnetVersion: $(defaultDotnetVersion) npmCommand: profiling - testVSCodeVersion: stable \ No newline at end of file + testVSCodeVersion: stable + isIntegration: true \ No newline at end of file From 8bacdc914c70b07be0c225b0acb693d241276071 Mon Sep 17 00:00:00 2001 From: "REDMOND\\anchimna" Date: Fri, 28 Feb 2025 14:34:47 -0800 Subject: [PATCH 38/39] Bump xamltools --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2a90e5bad9..f716623e9c 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "omniSharp": "1.39.12", "razor": "9.0.0-preview.25125.9", "razorOmnisharp": "7.0.0-preview.23363.1", - "xamlTools": "17.14.35821.62" + "xamlTools": "17.14.35828.13" }, "main": "./dist/extension", "l10n": "./l10n", From e73c69ae1f2982101592b9f90a23d34c56ba17d4 Mon Sep 17 00:00:00 2001 From: "REDMOND\\anchimna" Date: Fri, 28 Feb 2025 14:47:44 -0800 Subject: [PATCH 39/39] Update changleog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 935eef163a..c80ae3f629 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * Fix file path service, and integration tests (#11556) (PR: [#11556](https://github.com/dotnet/razor/pull/11556)) * Add ParserOptions and CodeGenerationOptions properties to RazorCodeDocument and rationalize options configuration (#11526) (PR: [#11526](https://github.com/dotnet/razor/pull/11526)) * Fix parsing of quotes in attribute names (#11543) (PR: [#11543](https://github.com/dotnet/razor/pull/11543)) + * Bump xamlTools to 17.14.35828.13 (PR: [#8032](https://github.com/dotnet/vscode-csharp/pull/8032)) # 2.67.x * Bump xamlTools to 17.14.35821.62 (PR: [#8001](https://github.com/dotnet/vscode-csharp/pull/8001))