diff --git a/CHANGELOG.md b/CHANGELOG.md index dda016dd5..5a6229539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,23 @@ - Debug from .csproj and .sln [#5876](https://github.com/dotnet/vscode-csharp/issues/5876) # Latest +* Update Roslyn to 4.12.0-3.24430.2 (PR: [#7496](https://github.com/dotnet/vscode-csharp/pull/7496)) +* Bump Razor to 9.0.0-preview.24427.2 (PR: [#7471](https://github.com/dotnet/vscode-csharp/pull/7471)) + * Suppress unique ids (#10791) (PR: [#10791](https://github.com/dotnet/razor/pull/10791)) + * Self-versioned documents (#10747) (PR: [#10747](https://github.com/dotnet/razor/pull/10747)) + * Remove ItemCollection from CodeRenderingContext (#10764) (PR: [#10764](https://github.com/dotnet/razor/pull/10764)) + * Moving formatting service to common layer (#10761) (PR: [#10761](https://github.com/dotnet/razor/pull/10761)) + * Allow LSP and cohosting to provide specialized methods to get a syntax tree (#10765) (PR: [#10765](https://github.com/dotnet/razor/pull/10765)) + * Update NOTICE.txt (#10768) (PR: [#10768](https://github.com/dotnet/razor/pull/10768)) + * Allow @@ as a fallback (#10752) (PR: [#10752](https://github.com/dotnet/razor/pull/10752)) + * Support component rename from an end tag (#10762) (PR: [#10762](https://github.com/dotnet/razor/pull/10762)) +* Bump xamltools to 17.12.35230.10 (PR: [#7493](https://github.com/dotnet/vscode-csharp/pull/7493)) + +# 2.45.17 * Fix check for rzls being present (PR: [#7462](https://github.com/dotnet/vscode-csharp/pull/7462)) * Bump Razor to 9.0.0-preview.24418.1 (PR: [#7456](https://github.com/dotnet/vscode-csharp/pull/7456)) * Don't add already known documents to the misc files project (#10753) (PR: [#10753](https://github.com/dotnet/razor/pull/10753)) * Remove ItemCollection from TagHelperDescriptorProviderContext (#10720) (PR: [#10720](https://github.com/dotnet/razor/pull/10720)) - * Cohost inlay hint support (#10672) (PR: [#10672](https://github.com/dotnet/razor/pull/10672)) * Fix excerpt service to allow for multi line verbatim strings (#10675) (PR: [#10675](https://github.com/dotnet/razor/pull/10675)) * Fix attribute parsing recovery (#10620) (PR: [#10620](https://github.com/dotnet/razor/pull/10620)) * Turn off trailing whitespace triming in strings (#10646) (PR: [#10646](https://github.com/dotnet/razor/pull/10646)) @@ -24,7 +36,7 @@ * Bump xamltools to 17.12.35223.16 (PR: [#7464](https://github.com/dotnet/vscode-csharp/pull/7464)) * Added XAML Hot Reload support for x:FactoryMethod and x:Arguments -# 2.44.x +# 2.44.19 * Bump Roslyn to 4.12.0-2.24416.3 (PR: [#7448](https://github.com/dotnet/vscode-csharp/pull/7448)) * Use EnableCodeStyleSeverity instead of AnalysisLevel to control new diagnostic severity behavior (PR: [#73843](https://github.com/dotnet/roslyn/pull/73843)) * Cleanup LSP error reporting (PR: [#74530](https://github.com/dotnet/roslyn/pull/74530)) @@ -51,7 +63,7 @@ * Task 2187810: [VS Code] Add OnEnter rules to indent tags (PR: [#7426](https://github.com/dotnet/vscode-csharp/pull/7426)) * Fix completion handler bug that causes language server to crash (#7401) (PR: [#7406](https://github.com/dotnet/vscode-csharp/pull/7406)) -# 2.41.x +# 2.41.26 * Bump Roslyn to 4.12.0-1.24376.3 (PR: [#7393](https://github.com/dotnet/vscode-csharp/pull/7393)) * Fix race condition in LSP FindAllReferences when linked files were involved.(PR: [#74566](https://github.com/dotnet/roslyn/pull/74566)) * Fix dll load issue when loading Razor projects in VSCode (PR: [#74570](https://github.com/dotnet/roslyn/pull/74570)) @@ -78,7 +90,7 @@ * `dotnet.implementType.insertionBehavior` to `dotnet.typeMembers.memberInsertionLocation` * `dotnet.implementType.propertyGenerationBehavior` to `dotnet.typeMembers.propertyGenerationBehavior` -# 2.39.x +# 2.39.29 * Add language status bar item displaying project context for open files (PR: [#7321](https://github.com/dotnet/vscode-csharp/pull/7321), PR: [#7333](https://github.com/dotnet/vscode-csharp/pull/7333)) * Add language status bar item for workspace status (C# standalone) (PR: [#7254](https://github.com/dotnet/vscode-csharp/pull/7254), PR: [#7329])https://github.com/dotnet/vscode-csharp/pull/7329)) * Update Razor to 9.0.0-preview.24365.1 (PR: [#7354](https://github.com/dotnet/vscode-csharp/pull/7354)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93b8c2810..26cf4ddec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ Setting up your local development environment for the vscode-csharp repository i Before you start, make sure you have the following software installed on your machine: -* Node.js v18 ([v18.17.0 LTS](https://nodejs.org/en/blog/release/v18.17.0)). +* Node.js v18 ([v18.17.0 LTS](https://nodejs.org/en/blog/release/v20.17.0)). * Note - Building with higher major versions of Node.js is not advised - it may work but we do not test it. * Npm (The version shipped with node is fine) * .NET 8.0 SDK (dotnet should be on your path) @@ -141,6 +141,11 @@ Or, in VSCode settings (`Ctrl+,`): 3. Enable `razor.languageServer.debug`. 4. Set `razor.server.trace` to `Debug`. This gives you more detailed log messages in the output window. +### Updating NPM packages +We use the .NET eng AzDo artifacts feed https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet-public-npm/npm/registry/ with upstreams to the public npm registry. +Auth is required in order to pull new packages from the upstream. This can be done by running `vsts-npm-auth -config .npmrc`. +If you need to renew authorization, you can force it via `vsts-npm-auth -config .npmrc -F` + ## Creating VSIX Packages for the Extension To package this extension, we need to create VSIX Packages. The VSIX packages can be created using the gulp command `gulp vsix:release:package`. This will create all the platform specific VSIXs that you can then install manually in VSCode. diff --git a/azure-pipelines/install-node.yml b/azure-pipelines/install-node.yml new file mode 100644 index 000000000..72aaac84b --- /dev/null +++ b/azure-pipelines/install-node.yml @@ -0,0 +1,5 @@ +steps: +- task: NodeTool@0 + displayName: 'Install Node.js 20.x' + inputs: + versionSpec: '20.x' \ No newline at end of file diff --git a/azure-pipelines/prereqs.yml b/azure-pipelines/prereqs.yml index 0b8ce6cf1..09285359e 100644 --- a/azure-pipelines/prereqs.yml +++ b/azure-pipelines/prereqs.yml @@ -11,10 +11,7 @@ steps: # The server package is downloaded from NuGet - task: NuGetAuthenticate@1 -- task: NodeTool@0 - displayName: 'Install Node.js 18.x' - inputs: - versionSpec: '18.x' +- template: /azure-pipelines/install-node.yml@self # Some tests use predefined docker images with a specific version of .NET installed. # So we avoid installing .NET in those cases. diff --git a/azure-pipelines/release.yml b/azure-pipelines/release.yml index 9bbf100e9..3f8fa66ab 100644 --- a/azure-pipelines/release.yml +++ b/azure-pipelines/release.yml @@ -7,8 +7,6 @@ parameters: default: true variables: -# This is expected to provide VisualStudioMarketplacePAT to the release (https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token) -- group: vscode-csharp release secrets # This is expected to provide pat to tag release. - group: DncEng-Partners-Tokens @@ -55,59 +53,63 @@ extends: buildVersionToDownload: 'specific' buildId: '$(resources.pipeline.officialBuildCI.runID)' branchName: '$(resources.pipeline.officialBuildCI.sourceBranch)' + - template: /azure-pipelines/install-node.yml@self - pwsh: | - npm install --global vsce + npm install --global @vscode/vsce displayName: 'Install vsce' - - pwsh: | - # Choose whether to upload to prerelease or release based on the artifacts generated by the build pipeline. - $artifactFolder = "" - $uploadPrerelease = $true - if (Test-Path -Path "VSIX_Prerelease") { - $artifactFolder = "VSIX_Prerelease" - $uploadPrerelease = $true - } elseif (Test-Path -Path "VSIX_Release") { - $artifactFolder = "VSIX_Release" - $uploadPrerelease = $false - } else { - throw "No artifacts are downloaded." - } + - task: AzureCLI@2 + displayName: '🚀 Publish to Marketplace' + inputs: + azureSubscription: 'VSCode Marketplace Publishing' + scriptType: "pscore" + scriptLocation: 'inlineScript' + workingDirectory: $(Pipeline.Workspace) + inlineScript: | + # Choose whether to upload to prerelease or release based on the artifacts generated by the build pipeline. + $artifactFolder = "" + $uploadPrerelease = $true + if (Test-Path -Path "VSIX_Prerelease") { + $artifactFolder = "VSIX_Prerelease" + $uploadPrerelease = $true + } elseif (Test-Path -Path "VSIX_Release") { + $artifactFolder = "VSIX_Release" + $uploadPrerelease = $false + } else { + throw "No artifacts are downloaded." + } - Write-Host "Uploading artifacts from $artifactFolder with prerelease=$uploadPrerelease" + Write-Host "Uploading artifacts from $artifactFolder with prerelease=$uploadPrerelease" - # Our build pipeline would generated build based on attempt number. Publishing the latest attempt. - $allArtifacts = Get-ChildItem -Path "$artifactFolder*" | Sort-Object -Descending - if ($allArtifacts.Length -eq 0) { - throw "No artifacts in $artifactFolder" - } + # Our build pipeline would generated build based on attempt number. Publishing the latest attempt. + $allArtifacts = Get-ChildItem -Path "$artifactFolder*" | Sort-Object -Descending + if ($allArtifacts.Length -eq 0) { + throw "No artifacts in $artifactFolder" + } - $publishArtifacts = $allArtifacts[0] - Write-Host "All artifacts: $($allArtifacts). Publishing $($publishArtifacts)." + $publishArtifacts = $allArtifacts[0] + Write-Host "All artifacts: $($allArtifacts). Publishing $($publishArtifacts)." - $basePublishArgs = , "publish" - If ( $uploadPrerelease ) { - $basePublishArgs += "--pre-release" - Write-Host "Publish to pre-release channel." - } Else { - Write-Host "Publish to release channel." - } - $basePublishArgs += '--packagePath' - $publishArgs = $basePublishArgs + (Get-ChildItem $publishArtifacts\*.vsix | Sort-Object Name -Descending |% { $_ }) + $basePublishArgs = , "publish --azure-credential" + If ( $uploadPrerelease ) { + $basePublishArgs += "--pre-release" + Write-Host "Publish to pre-release channel." + } Else { + Write-Host "Publish to release channel." + } + $basePublishArgs += '--packagePath' + $publishArgs = $basePublishArgs + (Get-ChildItem $publishArtifacts\*.vsix | Sort-Object Name -Descending |% { $_ }) - If ("${{ parameters.test }}" -eq "true") { - Write-Host "In test mode, command is printed instead of run." - Write-Host "##[command]vsce $publishArgs" + If ("${{ parameters.test }}" -eq "true") { + Write-Host "In test mode, command is printed instead of run." + Write-Host "##[command]vsce $publishArgs" - Write-Host "🔒 Verify PAT." - vsce verify-pat ms-dotnettools - } - Else { - Write-Host "##[command]vsce $publishArgs" - vsce @publishArgs - } - displayName: 🚀 Publish to Marketplace - workingDirectory: $(Pipeline.Workspace) - env: - VSCE_PAT: $(VSCodeMarketplacePAT) + Write-Host "🔒 Verify PAT." + vsce verify-pat --azure-credential ms-dotnettools + } + Else { + Write-Host "##[command]vsce $publishArgs" + vsce @publishArgs + } - stage: 'TagRelease' displayName: 'Tag release of vscode-csharp' dependsOn: 'PublishStage' @@ -119,15 +121,12 @@ extends: image: 1es-ubuntu-2204 os: linux steps: - - task: NodeTool@0 - displayName: 'Install Node.js 18.x' - inputs: - versionSpec: '18.x' - checkout: self clean: true submodules: true fetchTags: false fetchDepth: 0 + - template: /azure-pipelines/install-node.yml@self - pwsh: | git checkout $(resources.pipeline.officialBuildCI.sourceCommit) displayName: 'Checkout build source branch' diff --git a/package-lock.json b/package-lock.json index 043d55c55..a369f8fa9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,9 +58,9 @@ "@types/yauzl": "2.10.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", - "@vscode/l10n-dev": "^0.0.30", + "@vscode/l10n-dev": "^0.0.35", "@vscode/test-electron": "2.3.8", - "@vscode/vsce": "2.21.0", + "@vscode/vsce": "3.0.0", "archiver": "5.3.0", "del": "3.0.0", "eslint": "^8.43.0", @@ -114,6 +114,380 @@ "node": ">=6.0.0" } }, + "node_modules/@azure-rest/ai-translation-text": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure-rest/ai-translation-text/-/ai-translation-text-1.0.0.tgz", + "integrity": "sha1-ZmT3YJ2e96FELKS9iyc0h0/qd4w=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-rest/core-client": "^1.1.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.8.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/ai-translation-text/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure-rest/core-client": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure-rest/core-client/-/core-client-1.4.0.tgz", + "integrity": "sha1-O+KMAsbCDknepzp/AS2u7aTqy44=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/core-client/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha1-eI7nhFelWvihrTQqyxgjg9IRkkk=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/abort-controller/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha1-VYt8t90SsAvuwHrl31kH103x69k=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha1-b8ac7igWiDq2xc3WU+5PL/l3T3Q=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha1-veO8PrrX+IXd2d5q9eWo/CVLKH4=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha1-Bl2rTgk/thiZmIoc28gn2a2QtO4=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-util": { + "version": "1.9.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-util/-/core-util-1.9.2.tgz", + "integrity": "sha1-HcN9xbDa40xXi+Ys+YkFunwMr+c=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/identity": { + "version": "4.4.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/identity/-/identity-4.4.1.tgz", + "integrity": "sha1-SQ+irSZ4Yimvo2QRiSu1Pfo0eNM=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.14.0", + "@azure/msal-node": "^2.9.2", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha1-p+nD8p2ulAJ+vK9Jl1yTRVk0EPw=", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/identity/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jws/-/jws-4.0.0.tgz", + "integrity": "sha1-LU6M9qMY/6oSYV6d7H6G5slzEPQ=", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/identity/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha1-Ijy/K0JN+mZHjOmk9XX1nG83l2g=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/msal-browser": { + "version": "3.22.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-browser/-/msal-browser-3.22.0.tgz", + "integrity": "sha1-5MJgX6wSvY8Xdhfld8WdFdEFVRM=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.14.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.14.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-common/-/msal-common-14.14.2.tgz", + "integrity": "sha1-WDtKycCJlTcY16Xi87jfLU27F/Q=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.13.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-node/-/msal-node-2.13.1.tgz", + "integrity": "sha1-8UQ3EnW3w8vlZHYrhHcqlzJFekc=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.14.2", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -3172,14 +3546,18 @@ } }, "node_modules/@vscode/l10n-dev": { - "version": "0.0.30", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n-dev/-/l10n-dev-0.0.30.tgz", - "integrity": "sha512-m/5voX3NtGCVQ/UjKajvwW9PPvjjvcuvEKiKRkf7dS8Q/JT+Sa5XJK70JrVuuwbfGwZktrBBhF25Eu9SXv4Q6A==", + "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", + "integrity": "sha1-zdgQala33I/u9i0QxBPW2NlLLVw=", "dev": true, + "license": "MIT", "dependencies": { + "@azure-rest/ai-translation-text": "^1.0.0-beta.1", "debug": "^4.3.4", "deepmerge-json": "^1.5.0", "glob": "^10.0.0", + "markdown-it": "^14.0.0", + "node-html-markdown": "^1.3.0", "pseudo-localization": "^2.4.0", "web-tree-sitter": "^0.20.8", "xml2js": "^0.5.0", @@ -3189,6 +3567,13 @@ "vscode-l10n-dev": "dist/cli.js" } }, + "node_modules/@vscode/l10n-dev/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=", + "dev": true, + "license": "Python-2.0" + }, "node_modules/@vscode/l10n-dev/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -3229,6 +3614,19 @@ } } }, + "node_modules/@vscode/l10n-dev/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz", + "integrity": "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/@vscode/l10n-dev/node_modules/glob": { "version": "10.3.10", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-10.3.10.tgz", @@ -3251,6 +3649,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@vscode/l10n-dev/node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha1-nvI4v6bccL2Of5VytS02mvVptCE=", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/@vscode/l10n-dev/node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha1-PDxZkog8Yz20cUzLTXtZNdmLfUU=", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/@vscode/l10n-dev/node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha1-gGduwEMwJd0+F+6YPQ/o3loiN+A=", + "dev": true, + "license": "MIT" + }, "node_modules/@vscode/l10n-dev/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-9.0.3.tgz", @@ -3272,6 +3705,13 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/@vscode/l10n-dev/node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha1-+NP30OxMPeo1p+PI76TLi0XJ5+4=", + "dev": true, + "license": "MIT" + }, "node_modules/@vscode/l10n-dev/node_modules/yargs": { "version": "17.7.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yargs/-/yargs-17.7.2.tgz", @@ -3377,16 +3817,21 @@ "dev": true }, "node_modules/@vscode/vsce": { - "version": "2.21.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce/-/vsce-2.21.0.tgz", - "integrity": "sha512-KuxYqScqUY/duJbkj9eE2tN2X/WJoGAy54hHtxT3ZBkM6IzrOg7H7CXGUPBxNlmqku2w/cAjOUSrgIHlzz0mbA==", + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce/-/vsce-3.0.0.tgz", + "integrity": "sha1-efpKJj65R31J77KTHUUgTj77y3g=", "dev": true, + "license": "MIT", "dependencies": { - "azure-devops-node-api": "^11.0.1", + "@azure/identity": "^4.1.0", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", "commander": "^6.2.1", - "glob": "^7.0.6", + "form-data": "^4.0.0", + "glob": "^11.0.0", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", "leven": "^3.1.0", @@ -3396,7 +3841,7 @@ "parse-semver": "^1.1.1", "read": "^1.0.7", "semver": "^7.5.2", - "tmp": "^0.2.1", + "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", "xml2js": "^0.5.0", @@ -3407,12 +3852,167 @@ "vsce": "vsce" }, "engines": { - "node": ">= 14" + "node": ">= 20" }, "optionalDependencies": { "keytar": "^7.7.0" } }, + "node_modules/@vscode/vsce-sign": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz", + "integrity": "sha1-tL8VXRbypLrcBp34UNyG91YSSEI=", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha1-SszEheVapv8EsZW0f3IurVfapY4=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha1-Skt7UFtMwPWFljlIl8SaC84OVAw=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha1-EKpp/rf4Gj3GjCQgOMoD6v8ZwS4=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha1-MxVSjz6hAHpkizMgv/NqM6ngeqU=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha1-QUL9qD5xMLMa7diqgeTapjNDI8I=", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha1-zlxc/JnjRUtPt3BAWBK0a9bcqHA=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha1-WauT8yLvs89JFm1OLoEnicMRdCg=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha1-0JVwShSwQEwLb2lumInppRsxqGw=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha1-KU6nK0T+3WlNSfXO9MVb84dtwlc=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@vscode/vsce/node_modules/commander": { "version": "6.2.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-6.2.1.tgz", @@ -3422,6 +4022,46 @@ "node": ">= 6" } }, + "node_modules/@vscode/vsce/node_modules/glob": { + "version": "11.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-11.0.0.tgz", + "integrity": "sha1-YDHfDXtl6qHMubKbXO0WzqZY534=", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/vsce/node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha1-zgUhhWtFPIbiXyxMDQPm/33cRAs=", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@vscode/vsce/node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -3434,37 +4074,66 @@ "node": ">=10" } }, + "node_modules/@vscode/vsce/node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha1-n8pM6WGvYIPiWcN26eNUFDH1KHs=", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/@vscode/vsce/node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/@vscode/vsce/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/@vscode/vsce/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha1-nwUiifI62L+Tl6KgQl57hhXFhYA=", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^7.1.3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@vscode/vsce/node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha1-Fdk6GW8YkDTXFmyvn+Vec4TJiiE=", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@vscode/vsce/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha1-63g8wivB6L69BnFHbUbqTrMqea4=", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/@webassemblyjs/ast": { @@ -4042,6 +4711,13 @@ "node": ">= 10.13.0" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "license": "MIT" + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/at-least-node/-/at-least-node-1.0.0.tgz", @@ -4068,10 +4744,11 @@ "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" }, "node_modules/azure-devops-node-api": { - "version": "11.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz", - "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==", + "version": "12.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha1-OLnv18WsdDVP5Ojb5CaX2wuOhaU=", "dev": true, + "license": "MIT", "dependencies": { "tunnel": "0.0.6", "typed-rest-client": "^1.8.4" @@ -4913,6 +5590,16 @@ "node": ">= 0.12.0" } }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha1-V1+Te8QECiCuJzUqbQfJxadBmB8=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -4940,6 +5627,19 @@ "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", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-2.20.3.tgz", @@ -5216,6 +5916,16 @@ "node": ">=4.0.0" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/define-properties/-/define-properties-1.2.0.tgz", @@ -5249,6 +5959,16 @@ "node": ">=4" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/depd/-/depd-1.1.2.tgz", @@ -5359,16 +6079,17 @@ } }, "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "4.2.2", @@ -7124,6 +7845,21 @@ "node": ">= 8" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI=", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fs-constants/-/fs-constants-1.0.0.tgz", @@ -7759,6 +8495,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/he/-/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -8193,6 +8939,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8475,6 +9237,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/isarray/-/isarray-1.0.0.tgz", @@ -11085,10 +11860,11 @@ "dev": true }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha1-k6libOXl5mvU24aEnnUV6SNApwc=", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -11262,6 +12038,119 @@ "dev": true, "optional": true }, + "node_modules/node-html-markdown": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-html-markdown/-/node-html-markdown-1.3.0.tgz", + "integrity": "sha1-7wsZo7v8DxqICruf8qDJqmu/8qk=", + "dev": true, + "license": "MIT", + "dependencies": { + "node-html-parser": "^6.1.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha1-od95m4PfXGdD/NknQLoUaCCDt+Q=", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "node_modules/node-html-parser/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha1-uOvWVUw2N8zHZoiAStP2pv2uqKY=", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/node-html-parser/node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha1-+17/z3bx3eosgb36pN5E55uscPQ=", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/node-html-parser/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha1-5BuALh7t+fbK4YPOXmIteJ19jlM=", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/node-html-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha1-zDhff3UfHR/GUMITdIBCVFOMfTE=", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/node-html-parser/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha1-xH9VEnjT3EsLGrjLtC11Gm8Ngk4=", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/node-html-parser/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz", + "integrity": "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-int64/-/node-int64-0.4.0.tgz", @@ -11500,6 +12389,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/open/-/open-8.4.2.tgz", + "integrity": "sha1-W1/+Ko95Pc0qrXPlUMuHtZywhPk=", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/optionator/-/optionator-0.9.1.tgz", @@ -11573,6 +12480,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha1-5QHNMJSyeEletCWNTJ9tWsMBnwA=", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pako/-/pako-1.0.11.tgz", @@ -12095,6 +13009,16 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha1-a1PlatdViCNOefSv+pCXLH3Yzbc=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pure-rand": { "version": "6.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pure-rand/-/pure-rand-6.0.2.tgz", @@ -12882,6 +13806,17 @@ "node": ">= 0.6" } }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha1-MtpWjoPqSIsI5NfqLDvMnXUBXVs=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, "node_modules/stream": { "version": "0.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stream/-/stream-0.0.2.tgz", @@ -13587,8 +14522,9 @@ "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "integrity": "sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } @@ -13667,10 +14603,11 @@ } }, "node_modules/typed-rest-client": { - "version": "1.8.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "version": "1.8.11", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha1-aQbwLjyR6NhRV58lWr8P1ggAoE0=", "dev": true, + "license": "MIT", "dependencies": { "qs": "^6.9.1", "tunnel": "0.0.6", @@ -14778,48 +15715,356 @@ "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@azure-rest/ai-translation-text": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure-rest/ai-translation-text/-/ai-translation-text-1.0.0.tgz", + "integrity": "sha1-ZmT3YJ2e96FELKS9iyc0h0/qd4w=", + "dev": true, + "requires": { + "@azure-rest/core-client": "^1.1.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.8.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure-rest/core-client": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure-rest/core-client/-/core-client-1.4.0.tgz", + "integrity": "sha1-O+KMAsbCDknepzp/AS2u7aTqy44=", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha1-eI7nhFelWvihrTQqyxgjg9IRkkk=", + "dev": true, + "requires": { + "tslib": "^2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha1-VYt8t90SsAvuwHrl31kH103x69k=", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/core-client": { + "version": "1.9.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha1-b8ac7igWiDq2xc3WU+5PL/l3T3Q=", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/core-rest-pipeline": { + "version": "1.16.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha1-veO8PrrX+IXd2d5q9eWo/CVLKH4=", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha1-Bl2rTgk/thiZmIoc28gn2a2QtO4=", + "dev": true, + "requires": { + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/core-util": { + "version": "1.9.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-util/-/core-util-1.9.2.tgz", + "integrity": "sha1-HcN9xbDa40xXi+Ys+YkFunwMr+c=", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } + } + }, + "@azure/identity": { + "version": "4.4.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/identity/-/identity-4.4.1.tgz", + "integrity": "sha1-SQ+irSZ4Yimvo2QRiSu1Pfo0eNM=", + "dev": true, + "requires": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.14.0", + "@azure/msal-node": "^2.9.2", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "dependencies": { + "jwa": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha1-p+nD8p2ulAJ+vK9Jl1yTRVk0EPw=", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jws/-/jws-4.0.0.tgz", + "integrity": "sha1-LU6M9qMY/6oSYV6d7H6G5slzEPQ=", + "dev": true, + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } } }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "@azure/logger": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha1-Ijy/K0JN+mZHjOmk9XX1nG83l2g=", "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" + "requires": { + "tslib": "^2.6.2" }, - "engines": { - "node": ">= 10" + "dependencies": { + "tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true + } } }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "@azure/msal-browser": { + "version": "3.22.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-browser/-/msal-browser-3.22.0.tgz", + "integrity": "sha1-5MJgX6wSvY8Xdhfld8WdFdEFVRM=", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "requires": { + "@azure/msal-common": "14.14.2" } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + }, + "@azure/msal-common": { + "version": "14.14.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-common/-/msal-common-14.14.2.tgz", + "integrity": "sha1-WDtKycCJlTcY16Xi87jfLU27F/Q=", + "dev": true + }, + "@azure/msal-node": { + "version": "2.13.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-node/-/msal-node-2.13.1.tgz", + "integrity": "sha1-8UQ3EnW3w8vlZHYrhHcqlzJFekc=", "dev": true, "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@azure/msal-common": "14.14.2", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=", + "dev": true + } } }, "@babel/code-frame": { @@ -17184,20 +18429,29 @@ } }, "@vscode/l10n-dev": { - "version": "0.0.30", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n-dev/-/l10n-dev-0.0.30.tgz", - "integrity": "sha512-m/5voX3NtGCVQ/UjKajvwW9PPvjjvcuvEKiKRkf7dS8Q/JT+Sa5XJK70JrVuuwbfGwZktrBBhF25Eu9SXv4Q6A==", + "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", + "integrity": "sha1-zdgQala33I/u9i0QxBPW2NlLLVw=", "dev": true, "requires": { + "@azure-rest/ai-translation-text": "^1.0.0-beta.1", "debug": "^4.3.4", "deepmerge-json": "^1.5.0", "glob": "^10.0.0", + "markdown-it": "^14.0.0", + "node-html-markdown": "^1.3.0", "pseudo-localization": "^2.4.0", "web-tree-sitter": "^0.20.8", "xml2js": "^0.5.0", "yargs": "^17.7.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=", + "dev": true + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -17227,6 +18481,12 @@ "ms": "2.1.2" } }, + "entities": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz", + "integrity": "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=", + "dev": true + }, "glob": { "version": "10.3.10", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-10.3.10.tgz", @@ -17240,6 +18500,35 @@ "path-scurry": "^1.10.1" } }, + "linkify-it": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha1-nvI4v6bccL2Of5VytS02mvVptCE=", + "dev": true, + "requires": { + "uc.micro": "^2.0.0" + } + }, + "markdown-it": { + "version": "14.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha1-PDxZkog8Yz20cUzLTXtZNdmLfUU=", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + } + }, + "mdurl": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha1-gGduwEMwJd0+F+6YPQ/o3loiN+A=", + "dev": true + }, "minimatch": { "version": "9.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-9.0.3.tgz", @@ -17255,6 +18544,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "uc.micro": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha1-+NP30OxMPeo1p+PI76TLi0XJ5+4=", + "dev": true + }, "yargs": { "version": "17.7.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yargs/-/yargs-17.7.2.tgz", @@ -17338,16 +18633,20 @@ } }, "@vscode/vsce": { - "version": "2.21.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce/-/vsce-2.21.0.tgz", - "integrity": "sha512-KuxYqScqUY/duJbkj9eE2tN2X/WJoGAy54hHtxT3ZBkM6IzrOg7H7CXGUPBxNlmqku2w/cAjOUSrgIHlzz0mbA==", + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce/-/vsce-3.0.0.tgz", + "integrity": "sha1-efpKJj65R31J77KTHUUgTj77y3g=", "dev": true, "requires": { - "azure-devops-node-api": "^11.0.1", + "@azure/identity": "^4.1.0", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", "commander": "^6.2.1", - "glob": "^7.0.6", + "form-data": "^4.0.0", + "glob": "^11.0.0", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", "keytar": "^7.7.0", @@ -17358,7 +18657,7 @@ "parse-semver": "^1.1.1", "read": "^1.0.7", "semver": "^7.5.2", - "tmp": "^0.2.1", + "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", "xml2js": "^0.5.0", @@ -17366,12 +18665,46 @@ "yazl": "^2.2.2" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "commander": { "version": "6.2.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, + "glob": { + "version": "11.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-11.0.0.tgz", + "integrity": "sha1-YDHfDXtl6qHMubKbXO0WzqZY534=", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "dependencies": { + "minimatch": { + "version": "10.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha1-zgUhhWtFPIbiXyxMDQPm/33cRAs=", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -17381,32 +18714,128 @@ "lru-cache": "^6.0.0" } }, + "jackspeak": { + "version": "4.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha1-n8pM6WGvYIPiWcN26eNUFDH1KHs=", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jsonc-parser": { "version": "3.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "path-scurry": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha1-nwUiifI62L+Tl6KgQl57hhXFhYA=", "dev": true, "requires": { - "glob": "^7.1.3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "dependencies": { + "lru-cache": { + "version": "11.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha1-Fdk6GW8YkDTXFmyvn+Vec4TJiiE=", + "dev": true + } } }, "tmp": { - "version": "0.2.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } + "version": "0.2.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha1-63g8wivB6L69BnFHbUbqTrMqea4=", + "dev": true } } }, + "@vscode/vsce-sign": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz", + "integrity": "sha1-tL8VXRbypLrcBp34UNyG91YSSEI=", + "dev": true, + "requires": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha1-SszEheVapv8EsZW0f3IurVfapY4=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha1-Skt7UFtMwPWFljlIl8SaC84OVAw=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha1-EKpp/rf4Gj3GjCQgOMoD6v8ZwS4=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha1-MxVSjz6hAHpkizMgv/NqM6ngeqU=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha1-QUL9qD5xMLMa7diqgeTapjNDI8I=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha1-zlxc/JnjRUtPt3BAWBK0a9bcqHA=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha1-WauT8yLvs89JFm1OLoEnicMRdCg=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha1-0JVwShSwQEwLb2lumInppRsxqGw=", + "dev": true, + "optional": true + }, + "@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha1-KU6nK0T+3WlNSfXO9MVb84dtwlc=", + "dev": true, + "optional": true + }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -17871,6 +19300,12 @@ "async-done": "^2.0.0" } }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, "at-least-node": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/at-least-node/-/at-least-node-1.0.0.tgz", @@ -17888,9 +19323,9 @@ "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" }, "azure-devops-node-api": { - "version": "11.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz", - "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==", + "version": "12.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha1-OLnv18WsdDVP5Ojb5CaX2wuOhaU=", "dev": true, "requires": { "tunnel": "0.0.6", @@ -18534,6 +19969,12 @@ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, + "cockatiel": { + "version": "3.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha1-V1+Te8QECiCuJzUqbQfJxadBmB8=", + "dev": true + }, "collect-v8-coverage": { "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -18561,6 +20002,15 @@ "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", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-2.20.3.tgz", @@ -18778,6 +20228,12 @@ "integrity": "sha512-jZRrDmBKjmGcqMFEUJ14FjMJwm05Qaked+1vxaALRtF0UAl7lPU8OLWXFxvoeg3jbQM249VPFVn8g2znaQkEtA==", "dev": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=", + "dev": true + }, "define-properties": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/define-properties/-/define-properties-1.2.0.tgz", @@ -18802,6 +20258,12 @@ "rimraf": "^2.2.8" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/depd/-/depd-1.1.2.tgz", @@ -18882,9 +20344,9 @@ } }, "domelementtype": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=", "dev": true }, "domhandler": { @@ -20190,6 +21652,17 @@ } } }, + "form-data": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fs-constants/-/fs-constants-1.0.0.tgz", @@ -20635,6 +22108,12 @@ "has-symbols": "^1.0.2" } }, + "he": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/he/-/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -20944,6 +22423,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-extglob/-/is-extglob-2.1.1.tgz", @@ -21130,6 +22615,15 @@ "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", "dev": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/isarray/-/isarray-1.0.0.tgz", @@ -23106,9 +24600,9 @@ "dev": true }, "minipass": { - "version": "7.0.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha1-k6libOXl5mvU24aEnnUV6SNApwc=", "dev": true }, "mkdirp": { @@ -23262,6 +24756,83 @@ "dev": true, "optional": true }, + "node-html-markdown": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-html-markdown/-/node-html-markdown-1.3.0.tgz", + "integrity": "sha1-7wsZo7v8DxqICruf8qDJqmu/8qk=", + "dev": true, + "requires": { + "node-html-parser": "^6.1.1" + } + }, + "node-html-parser": { + "version": "6.1.13", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha1-od95m4PfXGdD/NknQLoUaCCDt+Q=", + "dev": true, + "requires": { + "css-select": "^5.1.0", + "he": "1.2.0" + }, + "dependencies": { + "css-select": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha1-uOvWVUw2N8zHZoiAStP2pv2uqKY=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha1-+17/z3bx3eosgb36pN5E55uscPQ=", + "dev": true + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha1-5BuALh7t+fbK4YPOXmIteJ19jlM=", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha1-zDhff3UfHR/GUMITdIBCVFOMfTE=", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha1-xH9VEnjT3EsLGrjLtC11Gm8Ngk4=", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz", + "integrity": "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=", + "dev": true + } + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-int64/-/node-int64-0.4.0.tgz", @@ -23443,6 +25014,17 @@ "mimic-fn": "^2.1.0" } }, + "open": { + "version": "8.4.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/open/-/open-8.4.2.tgz", + "integrity": "sha1-W1/+Ko95Pc0qrXPlUMuHtZywhPk=", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/optionator/-/optionator-0.9.1.tgz", @@ -23492,6 +25074,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha1-5QHNMJSyeEletCWNTJ9tWsMBnwA=", + "dev": true + }, "pako": { "version": "1.0.11", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pako/-/pako-1.0.11.tgz", @@ -23886,6 +25474,12 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha1-a1PlatdViCNOefSv+pCXLH3Yzbc=", + "dev": true + }, "pure-rand": { "version": "6.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pure-rand/-/pure-rand-6.0.2.tgz", @@ -24453,6 +26047,12 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "stoppable": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha1-MtpWjoPqSIsI5NfqLDvMnXUBXVs=", + "dev": true + }, "stream": { "version": "0.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stream/-/stream-0.0.2.tgz", @@ -24959,7 +26559,7 @@ "tunnel": { "version": "0.0.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "integrity": "sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=", "dev": true }, "tunnel-agent": { @@ -25015,9 +26615,9 @@ } }, "typed-rest-client": { - "version": "1.8.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "version": "1.8.11", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha1-aQbwLjyR6NhRV58lWr8P1ggAoE0=", "dev": true, "requires": { "qs": "^6.9.1", diff --git a/package.json b/package.json index 9dc0bd06d..d35aeff96 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ } }, "defaults": { - "roslyn": "4.12.0-2.24422.6", + "roslyn": "4.12.0-3.24430.2", "omniSharp": "1.39.11", - "razor": "9.0.0-preview.24418.1", + "razor": "9.0.0-preview.24427.2", "razorOmnisharp": "7.0.0-preview.23363.1", - "xamlTools": "17.12.35223.16" + "xamlTools": "17.12.35230.10" }, "main": "./dist/extension", "l10n": "./l10n", @@ -135,9 +135,9 @@ "@types/yauzl": "2.10.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", - "@vscode/l10n-dev": "^0.0.30", + "@vscode/l10n-dev": "^0.0.35", "@vscode/test-electron": "2.3.8", - "@vscode/vsce": "2.21.0", + "@vscode/vsce": "3.0.0", "archiver": "5.3.0", "del": "3.0.0", "eslint": "^8.43.0", @@ -1384,7 +1384,7 @@ }, "dotnet.unitTests.runSettingsPath": { "type": "string", - "markdownDescription": "%configuration.dotnet.unitTests.runSettingsPath.markdownDescription%" + "markdownDescription": "%configuration.dotnet.unitTests.runSettingsPath%" } } }, diff --git a/package.nls.cs.json b/package.nls.cs.json index 8f8deb11b..bf0f25554 100644 --- a/package.nls.cs.json +++ b/package.nls.cs.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Umožňuje zobrazit regulární výrazy v seznamu dokončení.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Povolí podporu zobrazení neimportovaných typů a neimportovaných metod rozšíření v seznamech dokončení. Při potvrzení se na začátek aktuálního souboru přidá příslušná direktiva použití. (Dříve omnisharp.enableImportCompletion)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Pro členy, které jste nedávno vybrali, proveďte automatické dokončování názvů objektů.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "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.dotnetPath": "Zadává cestu k adresáři instalace dotnet, která se má použít místo výchozí systémové instalace. To má vliv pouze na instalaci dotnet, která se má použít k hostování samotného jazykového serveru. Příklad: /home/username/mycustomdotnetdirectory", "configuration.dotnet.enableXamlTools": "Povolí nástroje XAML při použití sady C# Dev Kit", diff --git a/package.nls.de.json b/package.nls.de.json index 8109c69d0..fed40a71a 100644 --- a/package.nls.de.json +++ b/package.nls.de.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Reguläre Ausdrücke in der Vervollständigungsliste anzeigen.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Ermöglicht die Anzeige nicht importierter Typen und nicht importierter Erweiterungsmethoden in Vervollständigungslisten. Wenn ein Commit ausgeführt wird, wird die entsprechende using-Direktive am Anfang der aktuellen Datei hinzugefügt. (Zuvor \"omnisharp.enableImportCompletion\")", "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": "Automatically show completion list in argument lists", + "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.dotnetPath": "Gibt den Pfad zu einem dotnet-Installationsverzeichnis an, das anstelle des Standardsystems verwendet werden soll. Dies wirkt sich nur auf die dotnet-Installation aus, die zum Hosten des Sprachservers selbst verwendet werden soll. Beispiel: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Aktiviert XAML-Tools bei Verwendung des C#-Dev Kit", diff --git a/package.nls.es.json b/package.nls.es.json index db2294fff..4d8398fd3 100644 --- a/package.nls.es.json +++ b/package.nls.es.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Mostrar expresiones regulares en la lista de finalización.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Habilita la compatibilidad para mostrar tipos no importados y métodos de extensión no importados en listas de finalización. Cuando se confirme, se agregará la directiva de uso adecuada en la parte superior del archivo actual. (Anteriormente \"omnisharp.enableImportCompletion\")", "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": "Automatically show completion list in argument lists", + "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.dotnetPath": "Especifica la ruta de acceso a un directorio de instalación de dotnet que se va a usar en lugar del predeterminado del sistema. Esto solo influye en la instalación de dotnet que se va a usar para hospedar el propio servidor de idioma. Ejemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Habilita las herramientas XAML al usar el Kit de desarrollo de C#", diff --git a/package.nls.fr.json b/package.nls.fr.json index e31b8b297..b6477cf0d 100644 --- a/package.nls.fr.json +++ b/package.nls.fr.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Afficher les expressions régulières dans la liste de saisie semi-automatique.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Active la prise en charge de l’affichage des types non pris en charge et des méthodes d’extension non prises en charge dans les listes de saisie semi-automatique. Une fois validée, la directive using appropriée est ajoutée en haut du fichier actif. (Précédemment `omnisharp.enableImportCompletion`)", "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": "Automatically show completion list in argument lists", + "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.dotnetPath": "Spécifie le chemin d’accès à un répertoire d’installation de dotnet à utiliser à la place du répertoire par défaut du système. Cela n’a d’influence que sur l’installation dotnet à utiliser pour héberger le serveur de langues lui-même. Exemple : \"/home/username/mycustomdotnetdirect\" : \"/home/nom d’utilisateur/monrépertoiredotnetpersonnalisé\".", "configuration.dotnet.enableXamlTools": "Active les outils XAML lors de l’utilisation du Kit de développement C#", diff --git a/package.nls.it.json b/package.nls.it.json index 377e73f1e..d93ac3802 100644 --- a/package.nls.it.json +++ b/package.nls.it.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Mostra espressioni regolari nell'elenco di completamento.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Abilita il supporto per mostrare i tipi non importati e i metodi di estensione non importati negli elenchi di completamento. Quando viene eseguito il commit, la direttiva using appropriata verrà aggiunta all'inizio del file corrente. (In precedenza “omnisharp.enableImportCompletion”)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Consente di eseguire il completamento automatico del nome dell'oggetto per i membri selezionati di recente.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "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.dotnetPath": "Specifica il percorso di una directory di installazione dotnet da usare al posto di quella predefinita del sistema. Ciò influisce solo sull'installazione di dotnet da usare per ospitare il server di linguaggio stesso. Esempio: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Abilita gli strumenti XAML quando si usa il kit di sviluppo C#", diff --git a/package.nls.ja.json b/package.nls.ja.json index 5a1afad04..acce6b533 100644 --- a/package.nls.ja.json +++ b/package.nls.ja.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "入力候補一覧に正規表現を表示します。", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "インポートされていない型とインポートされていない拡張メソッドを入力候補一覧に表示するためのサポートを有効にします。コミットすると、現在のファイルの先頭に適切な using ディレクティブが追加されます。(以前の `omnisharp.enableImportCompletion`)", "configuration.dotnet.completion.showNameCompletionSuggestions": "最近選択したメンバーの自動オブジェクト名の完了を実行します。", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "引数リストに入力候補一覧を自動的に表示する", "configuration.dotnet.defaultSolution.description": "ワークスペースで開く既定のソリューションのパス。スキップするには 'disable' に設定します。(以前の `omnisharp.defaultLaunchSolution`)", "configuration.dotnet.dotnetPath": "既定のシステム ディレクトリの代わりに使用する dotnet インストール ディレクトリへのパスを指定します。これは、言語サーバー自体をホストするために使用する dotnet インストールにのみ影響します。例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.dotnet.enableXamlTools": "C# 開発キットを使用するときに XAML ツールを有効にします", diff --git a/package.nls.ko.json b/package.nls.ko.json index 6b84fd491..9d5971d93 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "완성 목록에 정규식을 표시합니다.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "완성 목록에 가져오지 않은 유형과 가져오지 않은 확장 메서드를 표시하기 위한 지원을 활성화합니다. 커밋되면 적절한 using 지시문이 현재 파일의 맨 위에 추가됩니다(이전 `omnisharp.enableImportCompletion`).", "configuration.dotnet.completion.showNameCompletionSuggestions": "최근에 선택한 멤버에 대해 자동 개체 이름 완성을 수행합니다.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "인수 목록에 자동으로 완성 목록 표시", "configuration.dotnet.defaultSolution.description": "작업 영역에서 열릴 기본 솔루션의 경로, 건너뛰려면 '비활성화'로 설정하세요(이전 `omnisharp.defaultLaunchSolution`).", "configuration.dotnet.dotnetPath": "기본 시스템 대신 사용할 dotnet 설치 디렉터리를 지정합니다. 이는 언어 서버 자체를 호스팅하는 데 사용할 dotnet 설치에만 영향을 줍니다(예: \"/home/username/mycustomdotnetdirectory\").", "configuration.dotnet.enableXamlTools": "C# 개발자 키트를 사용할 때 XAML 도구 사용", diff --git a/package.nls.pl.json b/package.nls.pl.json index 968ba7e06..ce1f30c5f 100644 --- a/package.nls.pl.json +++ b/package.nls.pl.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Pokaż wyrażenia regularne na liście uzupełniania.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Zapewnia obsługę wyświetlania niezaimportowanych typów i niezaimportowanych metod rozszerzeń na listach uzupełniania. Po zadeklarowaniu odpowiednia dyrektywa using zostanie dodana w górnej części bieżącego pliku. (Wcześniej „omnisharp.enableImportCompletion”)", "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": "Automatically show completion list in argument lists", + "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.dotnetPath": "Określa ścieżkę do katalogu instalacyjnego dotnet, który ma być używany zamiast domyślnego katalogu systemowego. Ma to wpływ tylko na instalację dotnet używaną do hostowania samego serwera językowego. Przykład: „/home/username/mycustomdotnetdirectory”.", "configuration.dotnet.enableXamlTools": "Włącza narzędzia XAML podczas korzystania z zestawu deweloperskiego języka C#", diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json index b415f69aa..76383b5c7 100644 --- a/package.nls.pt-br.json +++ b/package.nls.pt-br.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Mostrar expressões regulares na lista de conclusão.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Habilita o suporte para mostrar tipos e métodos de extensão não importados em listas de conclusão. Quando confirmado, a diretiva using apropriada será adicionada no topo do arquivo atual. (Anteriormente `omnisharp.enableImportCompletion`)", "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": "Automatically show completion list in argument lists", + "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.dotnetPath": "Especifica o caminho para um diretório de instalação dotnet a ser usado em vez do sistema padrão. Isso influencia apenas a instalação do dotnet a ser usada para hospedar o próprio servidor de idiomas. Exemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Habilita ferramentas XAML ao usar o Kit de Desenvolvimento em C#", diff --git a/package.nls.ru.json b/package.nls.ru.json index 722182a5f..497c890f5 100644 --- a/package.nls.ru.json +++ b/package.nls.ru.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Отображение регулярных выражений в списке завершения.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Включает поддержку отображения неимпортированных типов и неимпортированных методов расширения в списках завершения. При фиксации соответствующая директива использования будет добавлена в начало текущего файла. (Ранее — \"omnisharp.enableImportCompletion\")", "configuration.dotnet.completion.showNameCompletionSuggestions": "Выполните автоматическое завершение имен объектов для выбранных элементов.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Автоматически показывать список завершения в списках аргументов", "configuration.dotnet.defaultSolution.description": "Путь к решению по умолчанию, которое будет открыто в рабочей области. Или задайте значение \"Отключить\", чтобы пропустить его. (Ранее — \"omnisharp.defaultLaunchSolution\")", "configuration.dotnet.dotnetPath": "Указывает путь к каталогу установки dotnet для использования вместо стандартного системного каталога. Это влияет только на установку dotnet, используемую для размещения самого языкового сервера. Пример: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Включает инструменты XAML при использовании комплекта разработки C# Dev Kit.", diff --git a/package.nls.tr.json b/package.nls.tr.json index 7008bca04..816021e0a 100644 --- a/package.nls.tr.json +++ b/package.nls.tr.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Tamamlama listesinde normal ifadeleri göster.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Tamamlanma listelerinde içe aktarılmamış türleri ve içe aktarılmamış uzantı yöntemlerini göstermeye yönelik desteği etkinleştirir. Taahhüt edildiğinde, uygun kullanım yönergesi geçerli dosyanın en üstüne eklenecektir. (Önceden 'omnisharp.enableImportCompletion')", "configuration.dotnet.completion.showNameCompletionSuggestions": "Yakın zamanda seçtiğiniz üyeler için otomatik nesne adı tamamlama gerçekleştirin.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "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.dotnetPath": "Varsayılan sistem dizini yerine kullanılacak bir dotnet kurulum dizininin yolunu belirtir. Bu, yalnızca dil sunucusunun kendisini barındırmak için kullanılacak dotnet kurulumunu etkiler. Örnek: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "C# Geliştirme Setini kullanırken XAML araçlarını etkinleştirir", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 39b7598ed..104cd54f3 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "在完成列表中显示正则表达式。", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "支持在完成列表中显示未导入的类型和未导入的扩展方法。提交后,相应的 using 指令将添加到当前文件的顶部。(之前为 \"omnisharp.enableImportCompletion\")", "configuration.dotnet.completion.showNameCompletionSuggestions": "对最近选择的成员执行自动对象名称完成。", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自动显示参数列表中的补全列表", "configuration.dotnet.defaultSolution.description": "要在工作区中打开的默认解决方案的路径,或者设置为“禁用”以跳过它。(之前为 \"omnisharp.defaultLaunchSolution\")", "configuration.dotnet.dotnetPath": "指定要使用的 dotnet 安装目录的路径,而不是默认的系统目录。这仅影响用于承载语言服务器本身的 dotnet 安装。示例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.dotnet.enableXamlTools": "使用 C# 开发工具包时启用 XAML 工具", diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 8afde4396..01dd47f06 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "在完成清單中顯示規則運算式。", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "啟用在完成清單中顯示未匯入的類型和未匯入的擴充方法的支援。認可時,適當的 using 指示詞會新增到目前檔案的頂端。(先前為 `omnisharp.enableImportCompletion`)", "configuration.dotnet.completion.showNameCompletionSuggestions": "為您最近選取的成員執行自動物件名稱完成。", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自動在引數清單中顯示自動完成清單", "configuration.dotnet.defaultSolution.description": "要在工作區中開啟的預設解決方案路徑,或設為 [停用] 以略過它。(先前為 `omnisharp.defaultLaunchSolution`)", "configuration.dotnet.dotnetPath": "指定要使用的 dotnet 安裝目錄路徑,而非系統預設的路徑。這只會影響用來裝載語言伺服器本身的 dotnet 安裝。範例: \"/home/username/mycustomdotnetdirectory”。", "configuration.dotnet.enableXamlTools": "使用 C# 開發套件時啟用 XAML 工具", diff --git a/src/razor/src/csharp/csharpProjectedDocument.ts b/src/razor/src/csharp/csharpProjectedDocument.ts index 980faf277..d74c0bb25 100644 --- a/src/razor/src/csharp/csharpProjectedDocument.ts +++ b/src/razor/src/csharp/csharpProjectedDocument.ts @@ -19,7 +19,6 @@ export class CSharpProjectedDocument implements IProjectedDocument { private resolveProvisionalEditAt: number | undefined; private ProvisionalDotPosition: Position | undefined; private hostDocumentVersion: number | null = null; - private projectedDocumentVersion = 0; public constructor(public readonly uri: vscode.Uri) { this.path = getUriPath(uri); @@ -29,10 +28,6 @@ export class CSharpProjectedDocument implements IProjectedDocument { return this.hostDocumentVersion; } - public get projectedDocumentSyncVersion(): number { - return this.projectedDocumentVersion; - } - public get length(): number { return this.content.length; } @@ -153,7 +148,6 @@ export class CSharpProjectedDocument implements IProjectedDocument { } private setContent(content: string) { - this.projectedDocumentVersion++; this.content = content; } } diff --git a/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts b/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts index fd38669eb..229497899 100644 --- a/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts +++ b/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts @@ -29,7 +29,7 @@ export class CSharpProjectedDocumentContentProvider implements vscode.TextDocume return this.onDidChangeEmitter.event; } - public async provideTextDocumentContent(uri: vscode.Uri) { + public provideTextDocumentContent(uri: vscode.Uri) { const razorDocument = this.findRazorDocument(uri); if (!razorDocument) { // Document was removed from the document manager, meaning there's no more content for this @@ -46,7 +46,7 @@ export class CSharpProjectedDocumentContentProvider implements vscode.TextDocume } const content = `${razorDocument.csharpDocument.getContent()} -// ${razorDocument.csharpDocument.projectedDocumentSyncVersion}`; +// ${razorDocument.csharpDocument.hostDocumentSyncVersion}`; return content; } diff --git a/src/razor/src/document/razorDocumentSynchronizer.ts b/src/razor/src/document/razorDocumentSynchronizer.ts index 78e6fe75a..d98274662 100644 --- a/src/razor/src/document/razorDocumentSynchronizer.ts +++ b/src/razor/src/document/razorDocumentSynchronizer.ts @@ -41,22 +41,10 @@ export class RazorDocumentSynchronizer { const ehdv = expectedHostDocumentVersion; this.logger.logVerbose( `${logId} - Synchronizing '${documentKey}': - Currently at ${projectedDocument.hostDocumentSyncVersion}, synchronizing to version '${ehdv}'. - Current host document version: '${hostDocument.version}' - Current projected document version: '${projectedDocument.projectedDocumentSyncVersion}'` + Currently at ${projectedDocument.hostDocumentSyncVersion}, synchronizing to version '${ehdv}'.'` ); } - if (hostDocument.version !== expectedHostDocumentVersion) { - if (this.logger.verboseEnabled) { - this.logger.logVerbose( - `${logId} - toHostDocumentVersion and hostDocument.version already out of date.` - ); - } - - // Already out-of-date. Allowing synchronizations for now to see if this actually causes any issues. - } - const context: SynchronizationContext = this.createSynchronizationContext( documentKey, projectedDocument, @@ -84,7 +72,7 @@ export class RazorDocumentSynchronizer { const projectedTextDocument = await vscode.workspace.openTextDocument(projectedDocument.uri); const projectedTextDocumentVersion = this.getProjectedTextDocumentVersion(projectedTextDocument); - if (projectedDocument.projectedDocumentSyncVersion !== projectedTextDocumentVersion) { + if (projectedDocument.hostDocumentSyncVersion !== projectedTextDocumentVersion) { if (this.logger.verboseEnabled) { this.logger.logVerbose( `${logId} - Projected text document not in sync with data type, waiting for update... @@ -162,7 +150,6 @@ export class RazorDocumentSynchronizer { logIdentifier: this.synchronizationIdentifier, timeoutId, toHostDocumentVersion, - hostDocumentVersion: hostDocument.version, cancel: (reason) => { for (const reject of rejectionsForCancel) { reject(reason); @@ -210,7 +197,7 @@ export class RazorDocumentSynchronizer { } for (const context of synchronizationContexts) { - if (context.projectedDocument.projectedDocumentSyncVersion === projectedTextDocumentVersion) { + if (context.projectedDocument.hostDocumentSyncVersion === projectedTextDocumentVersion) { if (this.logger.verboseEnabled) { const li = context.logIdentifier; const ptdv = projectedTextDocumentVersion; @@ -269,7 +256,6 @@ interface SynchronizationContext { readonly projectedDocument: IProjectedDocument; readonly logIdentifier: number; readonly toHostDocumentVersion: number; - readonly hostDocumentVersion: number; readonly timeoutId: NodeJS.Timer; readonly projectedDocumentSynchronized: () => void; readonly onProjectedDocumentSynchronized: Promise; diff --git a/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts b/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts index cd2c49561..8507979f8 100644 --- a/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts +++ b/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts @@ -46,7 +46,7 @@ export class RazorDocumentHighlightProvider continue; } - if (document.version !== remappedResponse.hostDocumentVersion) { + if (projection.hostDocumentVersion !== remappedResponse.hostDocumentVersion) { // This highlight result is for a different version of the text document, bail. continue; } diff --git a/src/razor/src/hover/razorHoverProvider.ts b/src/razor/src/hover/razorHoverProvider.ts index 16c974248..fa6f1aa97 100644 --- a/src/razor/src/hover/razorHoverProvider.ts +++ b/src/razor/src/hover/razorHoverProvider.ts @@ -48,7 +48,7 @@ export class RazorHoverProvider extends RazorLanguageFeatureBase implements vsco return; } - if (document.version !== remappedResponse.hostDocumentVersion) { + if (projection.hostDocumentVersion !== remappedResponse.hostDocumentVersion) { // This hover result is for a different version of the text document, bail. return; } diff --git a/src/razor/src/html/htmlProjectedDocument.ts b/src/razor/src/html/htmlProjectedDocument.ts index b8c2fc530..1ec11bc5d 100644 --- a/src/razor/src/html/htmlProjectedDocument.ts +++ b/src/razor/src/html/htmlProjectedDocument.ts @@ -12,7 +12,6 @@ export class HtmlProjectedDocument implements IProjectedDocument { public readonly path: string; private content = ''; private hostDocumentVersion: number | null = null; - private projectedDocumentVersion = 0; public constructor(public readonly uri: vscode.Uri) { this.path = getUriPath(uri); @@ -22,10 +21,6 @@ export class HtmlProjectedDocument implements IProjectedDocument { return this.hostDocumentVersion; } - public get projectedDocumentSyncVersion(): number { - return this.projectedDocumentVersion; - } - public get length(): number { return this.content.length; } @@ -63,7 +58,6 @@ export class HtmlProjectedDocument implements IProjectedDocument { } private setContent(content: string) { - this.projectedDocumentVersion++; this.content = content; } } diff --git a/src/razor/src/html/htmlProjectedDocumentContentProvider.ts b/src/razor/src/html/htmlProjectedDocumentContentProvider.ts index 9ffec8ea5..214ac156a 100644 --- a/src/razor/src/html/htmlProjectedDocumentContentProvider.ts +++ b/src/razor/src/html/htmlProjectedDocumentContentProvider.ts @@ -46,7 +46,7 @@ export class HtmlProjectedDocumentContentProvider implements vscode.TextDocument } const content = `${razorDocument.htmlDocument.getContent()} -// ${razorDocument.htmlDocument.projectedDocumentSyncVersion}`; +// ${razorDocument.htmlDocument.hostDocumentSyncVersion}`; return content; } diff --git a/src/razor/src/projection/IProjectedDocument.ts b/src/razor/src/projection/IProjectedDocument.ts index d4c8df1c8..f16ce6248 100644 --- a/src/razor/src/projection/IProjectedDocument.ts +++ b/src/razor/src/projection/IProjectedDocument.ts @@ -9,7 +9,6 @@ export interface IProjectedDocument { readonly path: string; readonly uri: vscode.Uri; readonly hostDocumentSyncVersion: number | null; - readonly projectedDocumentSyncVersion: number; readonly length: number; getContent(): string; } diff --git a/src/razor/src/projection/projectionResult.ts b/src/razor/src/projection/projectionResult.ts index 0663f4bd7..55f65d7b3 100644 --- a/src/razor/src/projection/projectionResult.ts +++ b/src/razor/src/projection/projectionResult.ts @@ -10,4 +10,5 @@ export interface ProjectionResult { uri: vscode.Uri; position: vscode.Position; languageKind: LanguageKind; + hostDocumentVersion: number; } diff --git a/src/razor/src/razorLanguageFeatureBase.ts b/src/razor/src/razorLanguageFeatureBase.ts index 0a5cfdc07..60ac7372c 100644 --- a/src/razor/src/razorLanguageFeatureBase.ts +++ b/src/razor/src/razorLanguageFeatureBase.ts @@ -64,6 +64,7 @@ export class RazorLanguageFeatureBase { uri: projectedUri, position: languageResponse.position, languageKind: languageResponse.kind, + hostDocumentVersion: projectedDocument.hostDocumentSyncVersion, } as ProjectionResult; } default: diff --git a/test/integrationTests/classification.integration.test.ts b/test/integrationTests/classification.integration.test.ts new file mode 100644 index 000000000..173cb48f5 --- /dev/null +++ b/test/integrationTests/classification.integration.test.ts @@ -0,0 +1,156 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Classification Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'semantictokens.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Semantic classification returns correct token types', async () => { + const expectedTokens: Token[] = [ + // 0:namespace Test + _keyword('namespace', 0, 0), + _namespace('Test', 0, 10), + // 1:{ + _punctuation('{', 1, 0), + // 2: public class TestProgram + _keyword('public', 2, 4), + _keyword('class', 2, 11), + _class('TestProgram', 2, 17), + // 3: { + _punctuation('{', 3, 4), + // 4: public static int TestMain(string[] args) + _keyword('public', 4, 8), + _keyword('static', 4, 15), + _keyword('int', 4, 22), + _staticMethod('TestMain', 4, 26), + _punctuation('(', 4, 34), + _keyword('string', 4, 35), + _punctuation('[', 4, 41), + _punctuation(']', 4, 42), + _parameter('args', 4, 44), + _punctuation(')', 4, 48), + // 5: { + _punctuation('{', 5, 8), + // 6: System.Console.WriteLine(string.Join(',', args)); + _namespace('System', 6, 12), + _operator('.', 6, 18), + _staticClass('Console', 6, 19), + _operator('.', 6, 26), + _staticMethod('WriteLine', 6, 27), + _punctuation('(', 6, 36), + _keyword('string', 6, 37), + _operator('.', 6, 43), + _staticMethod('Join', 6, 44), + _punctuation('(', 6, 48), + _string("','", 6, 49), + _punctuation(')', 6, 52), + _parameter('args', 6, 54), + _punctuation(')', 6, 58), + _punctuation(')', 6, 59), + _punctuation(';', 6, 60), + // 7: return 0; + _controlKeyword('return', 7, 12), + _number('0', 7, 19), + _punctuation(';', 7, 20), + // 8: } + _punctuation('}', 8, 8), + // 9: } + _punctuation('}', 9, 4), + //10: } + _punctuation('}', 10, 0), + ]; + + const tokens = await getTokens(); + + expect(tokens).toStrictEqual(expectedTokens); + }); +}); + +async function getTokens(): Promise { + const legend = ( + await vscode.commands.executeCommand( + 'vscode.provideDocumentSemanticTokensLegend', + vscode.window.activeTextEditor!.document.uri + ) + ); + + const actual = ( + await vscode.commands.executeCommand( + 'vscode.provideDocumentSemanticTokens', + vscode.window.activeTextEditor!.document.uri + ) + ); + + expect(legend).toBeDefined(); + expect(actual).toBeDefined(); + + const actualRanges: Array = []; + let lastLine = 0; + let lastCharacter = 0; + for (let i = 0; i < actual.data.length; i += 5) { + const lineDelta = actual.data[i], + charDelta = actual.data[i + 1], + len = actual.data[i + 2], + typeIdx = actual.data[i + 3], + modSet = actual.data[i + 4]; + const line = lastLine + lineDelta; + const character = lineDelta === 0 ? lastCharacter + charDelta : charDelta; + const tokenClassifiction = [ + legend.tokenTypes[typeIdx], + ...legend.tokenModifiers.filter((_, i) => modSet & (1 << i)), + ].join('.'); + actualRanges.push({ + startLine: line, + character: character, + length: len, + tokenClassifiction: tokenClassifiction, + }); + lastLine = line; + lastCharacter = character; + } + return actualRanges; +} + +interface Token { + startLine: number; + character: number; + length: number; + tokenClassifiction: string; +} + +function t(startLine: number, character: number, length: number, tokenClassifiction: string): Token { + return { startLine, character, length, tokenClassifiction }; +} + +const _keyword = (text: string, line: number, col: number) => t(line, col, text.length, 'keyword'); +const _controlKeyword = (text: string, line: number, col: number) => t(line, col, text.length, 'controlKeyword'); +const _punctuation = (text: string, line: number, col: number) => t(line, col, text.length, 'punctuation'); +const _operator = (text: string, line: number, col: number) => t(line, col, text.length, 'operator'); +const _number = (text: string, line: number, col: number) => t(line, col, text.length, 'number'); +const _string = (text: string, line: number, col: number) => t(line, col, text.length, 'string'); +const _namespace = (text: string, line: number, col: number) => t(line, col, text.length, 'namespace'); +const _class = (text: string, line: number, col: number) => t(line, col, text.length, 'class'); +const _staticClass = (text: string, line: number, col: number) => t(line, col, text.length, 'class.static'); +const _staticMethod = (text: string, line: number, col: number) => t(line, col, text.length, 'method.static'); +const _parameter = (text: string, line: number, col: number) => t(line, col, text.length, 'parameter'); diff --git a/test/integrationTests/formatting.integration.test.ts b/test/integrationTests/formatting.integration.test.ts new file mode 100644 index 000000000..144f915df --- /dev/null +++ b/test/integrationTests/formatting.integration.test.ts @@ -0,0 +1,89 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, afterEach } from '@jest/globals'; +import { expectText, formatDocumentAsync, formatOnTypeAsync, formatRangeAsync } from './formattingTestHelpers'; + +describe(`[${testAssetWorkspace.description}] Formatting Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'Formatting.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Document formatting formats the entire document', async () => { + await formatDocumentAsync(); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormatting', + '{', + ' public int Property1', + ' {', + ' get; set;', + ' }', + '', + ' public void Method1()', + ' {', + ' System.Console.Write("");', + ' }', + '}', + ]; + expectText(expectedText); + }); + + test('Document range formatting formats only the range', async () => { + await formatRangeAsync(new vscode.Range(3, 0, 5, 0)); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormatting', + '{', + ' public int Property1', + ' {', + ' get; set;', + ' }', + '', + ' public void Method1() {', + ' System.Console.Write("");', + ' }', + '}', + ]; + expectText(expectedText); + }); + + test('Document on type formatting formats the typed location', async () => { + // The server expects the position to be the position after the inserted character `;` + await formatOnTypeAsync(new vscode.Position(7, 37), ';'); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormatting', + '{', + ' public int Property1 {', + ' get; set; }', + '', + ' public void Method1() {', + ' System.Console.Write("");', + ' }', + '}', + ]; + expectText(expectedText); + }); +}); diff --git a/test/integrationTests/formattingEditorConfig.integration.test.ts b/test/integrationTests/formattingEditorConfig.integration.test.ts new file mode 100644 index 000000000..3d7ccef51 --- /dev/null +++ b/test/integrationTests/formattingEditorConfig.integration.test.ts @@ -0,0 +1,95 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, afterEach } from '@jest/globals'; +import { expectText, formatDocumentAsync, formatOnTypeAsync, formatRangeAsync } from './formattingTestHelpers'; + +describe(`[${testAssetWorkspace.description}] Formatting With EditorConfig Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync( + path.join('src', 'app', 'folderWithEditorConfig', 'FormattingWithEditorConfig.cs') + ); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Document formatting respects editorconfig', async () => { + await formatDocumentAsync(); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormattingWithEditorConfig {', + ' public int Property1 {', + ' get; set;', + ' }', + '', + ' public void Method1() {', + ' if (true) {', + ' }', + ' }', + '}', + ]; + expectText(expectedText); + }); + + test('Document range formatting respects editorconfig', async () => { + await formatRangeAsync(new vscode.Range(3, 0, 6, 0)); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormattingWithEditorConfig', + '{', + ' public int Property1 {', + ' get; set;', + ' }', + '', + ' public void Method1()', + ' {', + ' if (true)', + ' {', + ' }', + ' }', + '}', + ]; + expectText(expectedText); + }); + + test('Document on type formatting respects editorconfig', async () => { + // The server expects the position to be the position after the inserted character `}` + await formatOnTypeAsync(new vscode.Position(12, 9), '}'); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormattingWithEditorConfig', + '{', + ' public int Property1', + ' {', + ' get; set;', + ' }', + '', + ' public void Method1()', + ' {', + ' if (true) {', + ' }', + ' }', + '}', + ]; + expectText(expectedText); + }); +}); diff --git a/test/integrationTests/formattingTestHelpers.ts b/test/integrationTests/formattingTestHelpers.ts new file mode 100644 index 000000000..803c9fb78 --- /dev/null +++ b/test/integrationTests/formattingTestHelpers.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 { EOL } from 'os'; +import { expect } from '@jest/globals'; + +export async function formatDocumentAsync(): Promise { + const edits = await vscode.commands.executeCommand( + 'vscode.executeFormatDocumentProvider', + vscode.window.activeTextEditor!.document.uri, + { + insertSpaces: true, + tabSize: 4, + } + ); + + await applyEditsAsync(edits); +} + +export async function formatRangeAsync(range: vscode.Range): Promise { + const edits = await vscode.commands.executeCommand( + 'vscode.executeFormatRangeProvider', + vscode.window.activeTextEditor!.document.uri, + range, + { + insertSpaces: true, + tabSize: 4, + } + ); + + await applyEditsAsync(edits); +} + +export async function formatOnTypeAsync(position: vscode.Position, character: string): Promise { + const edits = await vscode.commands.executeCommand( + 'vscode.executeFormatOnTypeProvider', + vscode.window.activeTextEditor!.document.uri, + position, + character, + { + insertSpaces: true, + tabSize: 4, + } + ); + + await applyEditsAsync(edits); +} + +async function applyEditsAsync(edits: vscode.TextEdit[]): Promise { + expect(edits).toBeDefined(); + + const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); + workspaceEdit.set(vscode.window.activeTextEditor!.document.uri, edits); + const succeeded = await vscode.workspace.applyEdit(workspaceEdit); + expect(succeeded).toBe(true); +} + +export async function expectText(expectedLines: string[]) { + const expectedText = expectedLines.join(EOL); + expect(vscode.window.activeTextEditor!.document.getText()).toBe(expectedText); +} diff --git a/test/integrationTests/gotoImplementation.integration.test.ts b/test/integrationTests/gotoImplementation.integration.test.ts new file mode 100644 index 000000000..51a3c4400 --- /dev/null +++ b/test/integrationTests/gotoImplementation.integration.test.ts @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + openFileInWorkspaceAsync, + sortLocations, +} from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Test Go To Implementation`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'implementation.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Finds implementations', async () => { + const requestPosition = new vscode.Position(4, 22); + const implementationList = await getImplementations(requestPosition); + + expect(implementationList).toHaveLength(3); + + expect(implementationList[0].uri.path).toContain('BaseClassImplementation.cs'); + expect(implementationList[0].range).toStrictEqual(new vscode.Range(2, 17, 2, 40)); + + expect(implementationList[1].uri.path).toContain('implementation.cs'); + expect(implementationList[1].range).toStrictEqual(new vscode.Range(4, 17, 4, 26)); + + expect(implementationList[2].uri.path).toContain('implementation.cs'); + expect(implementationList[2].range).toStrictEqual(new vscode.Range(5, 17, 5, 26)); + }); +}); + +async function getImplementations(position: vscode.Position): Promise { + const implementationList = ( + await vscode.commands.executeCommand( + 'vscode.executeImplementationProvider', + vscode.window.activeTextEditor!.document.uri, + position + ) + ); + + return sortLocations(implementationList); +} diff --git a/test/integrationTests/hover.integration.test.ts b/test/integrationTests/hover.integration.test.ts new file mode 100644 index 000000000..46bbe7fac --- /dev/null +++ b/test/integrationTests/hover.integration.test.ts @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import { EOL } from 'os'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Hover Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'hover.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Hover returns correct documentation', async () => { + const hovers = ( + await vscode.commands.executeCommand( + 'vscode.executeHoverProvider', + vscode.window.activeTextEditor!.document.uri, + new vscode.Position(33, 27) + ) + ); + + const expected = `\`\`\`csharp${EOL}bool testissue.Compare(int gameObject, string tagName)${EOL}\`\`\`${EOL} ${EOL}A cref testissue ${EOL}**strong text** ${EOL}_italic text_ ${EOL}underline text ${EOL} ${EOL}• Item 1\\. ${EOL}• Item 2\\. ${EOL} ${EOL}[link text](https://google.com) ${EOL} ${EOL}Remarks are cool too\\. ${EOL} ${EOL}Returns: ${EOL}  a string ${EOL} ${EOL}Exceptions: ${EOL}  NullReferenceException ${EOL}`; + + expect(hovers.length).toEqual(1); + expect((hovers[0].contents[0] as vscode.MarkdownString).value).toEqual(expected); + expect(hovers[0].range).toStrictEqual(new vscode.Range(33, 27, 33, 34)); + }); +}); diff --git a/test/integrationTests/integrationHelpers.ts b/test/integrationTests/integrationHelpers.ts index 8ec4f608e..5f3405e82 100644 --- a/test/integrationTests/integrationHelpers.ts +++ b/test/integrationTests/integrationHelpers.ts @@ -120,6 +120,17 @@ export async function getCodeLensesAsync(): Promise { }); } +export function sortLocations(locations: vscode.Location[]): vscode.Location[] { + return locations.sort((a, b) => { + const uriCompare = a.uri.fsPath.localeCompare(b.uri.fsPath); + if (uriCompare !== 0) { + return uriCompare; + } + + return a.range.start.compareTo(b.range.start); + }); +} + function isGivenSln(workspace: typeof vscode.workspace, expectedProjectFileName: string) { const primeWorkspace = workspace.workspaceFolders![0]; const projectFileName = primeWorkspace.uri.fsPath.split(path.sep).pop(); diff --git a/test/integrationTests/references.integration.test.ts b/test/integrationTests/references.integration.test.ts new file mode 100644 index 000000000..7b9042e25 --- /dev/null +++ b/test/integrationTests/references.integration.test.ts @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + openFileInWorkspaceAsync, + sortLocations, +} from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Test Find References`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'reference.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Finds references in same file', async () => { + const requestPosition = new vscode.Position(13, 23); + const referenceList = await getReferences(requestPosition); + + expect(referenceList.length).toEqual(2); + expect(referenceList[0].uri.path).toContain('reference.cs'); + expect(referenceList[0].range).toStrictEqual(new vscode.Range(6, 20, 6, 23)); + + expect(referenceList[1].uri.path).toContain('reference.cs'); + expect(referenceList[1].range).toStrictEqual(new vscode.Range(13, 22, 13, 25)); + }); + + test('Finds references in other files', async () => { + const requestPosition = new vscode.Position(14, 17); + const referenceList = await getReferences(requestPosition); + + expect(referenceList.length).toEqual(2); + expect(referenceList[0].uri.path).toContain('definition.cs'); + expect(referenceList[0].range).toStrictEqual(new vscode.Range(4, 25, 4, 35)); + + expect(referenceList[1].uri.path).toContain('reference.cs'); + expect(referenceList[1].range).toStrictEqual(new vscode.Range(14, 17, 14, 27)); + }); +}); + +async function getReferences(position: vscode.Position): Promise { + const referenceList = ( + await vscode.commands.executeCommand( + 'vscode.executeReferenceProvider', + vscode.window.activeTextEditor!.document.uri, + position + ) + ); + + return sortLocations(referenceList); +} diff --git a/test/integrationTests/signatureHelp.integration.test.ts b/test/integrationTests/signatureHelp.integration.test.ts new file mode 100644 index 000000000..6ac5f7aa0 --- /dev/null +++ b/test/integrationTests/signatureHelp.integration.test.ts @@ -0,0 +1,85 @@ +/*--------------------------------------------------------------------------------------------- + * 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 * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Signature Help Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'sigHelp.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Includes label when no documentation', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(19, 24)); + expect(signatureHelp.signatures[0].label).toEqual(`void sigHelp.noDocMethod()`); + expect(signatureHelp.signatures[0].documentation).toBe(undefined); + }); + + test('Includes method and parameter documentation', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 19)); + expect(signatureHelp.signatures[0].label).toEqual( + `void sigHelp.DoWork(int Int1, float Float1, double Double1)` + ); + expect(signatureHelp.signatures[0].documentation).toEqual(`DoWork is some method.`); + + expect(signatureHelp.signatures[0].parameters[0].label).toEqual(`Int1`); + expect(signatureHelp.signatures[0].parameters[1].label).toEqual(`Float1`); + + expect(signatureHelp.signatures[0].parameters[0].documentation).toEqual(`Used to indicate status.`); + expect(signatureHelp.signatures[0].parameters[1].documentation).toEqual(`Used to specify context.`); + }); + + test('Identifies active parameter if there is no comma', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 19)); + expect(signatureHelp.signatures[0].parameters[signatureHelp.activeParameter].label).toEqual(`Int1`); + }); + + test('Identifies active parameter based on comma', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 21)); + expect(signatureHelp.signatures[0].parameters[signatureHelp.activeParameter].label).toEqual(`Float1`); + }); + + test('Identifies active parameter based on comma for multiple commas', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 28)); + expect(signatureHelp.signatures[0].parameters[signatureHelp.activeParameter].label).toEqual(`Double1`); + }); + + test('Uses inner documentation from inside nested method call', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(20, 24)); + expect(signatureHelp.signatures[0].label).toEqual(`string sigHelp.Inner()`); + expect(signatureHelp.signatures[0].documentation).toEqual(`Inner`); + }); + + test('Uses outer documentation from outside nested method call', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(20, 18)); + expect(signatureHelp.signatures[0].label).toEqual(`string sigHelp.Outer(string s)`); + expect(signatureHelp.signatures[0].documentation).toEqual(`Outer`); + }); +}); + +async function getSignatureHelp(position: vscode.Position): Promise { + return ( + await vscode.commands.executeCommand( + 'vscode.executeSignatureHelpProvider', + vscode.window.activeTextEditor!.document.uri, + position + ) + ); +} diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/BaseClassImplementation.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/BaseClassImplementation.cs new file mode 100644 index 000000000..a0c05c59b --- /dev/null +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/BaseClassImplementation.cs @@ -0,0 +1,6 @@ +namespace minimal +{ + public class BaseClassImplementation : BaseClass + { + } +} \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/Formatting.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/Formatting.cs new file mode 100644 index 000000000..2c669c6b4 --- /dev/null +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/Formatting.cs @@ -0,0 +1,10 @@ +namespace Formatting; +class DocumentFormatting +{ + public int Property1 { + get; set; } + + public void Method1() { + System.Console.Write(""); + } +} \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs deleted file mode 100644 index ce6b9fa31..000000000 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace ReAnalyze -{ - public class SomeInterfaceImpl: ISomeInterface - { - } -} \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/.editorconfig b/test/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/.editorconfig new file mode 100644 index 000000000..5a164647b --- /dev/null +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/.editorconfig @@ -0,0 +1,2 @@ +[*.{cs}] +csharp_new_line_before_open_brace = none \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/FormattingWithEditorConfig.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/FormattingWithEditorConfig.cs new file mode 100644 index 000000000..4910f0b4b --- /dev/null +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/FormattingWithEditorConfig.cs @@ -0,0 +1,15 @@ +namespace Formatting; +class DocumentFormattingWithEditorConfig +{ + public int Property1 + { + get; set; + } + + public void Method1() + { + if (true) + { + } + } +} \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs index cbfc3d9d3..3f51e4f3d 100644 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs @@ -1,16 +1,39 @@ using System; namespace Test { - class testissue - { - ///Checks if object is tagged with the tag. - /// The game object. - /// Name of the tag. - /// Returns true if object is tagged with tag. - - public static bool Compare(int gameObject,string tagName) - { - return true; - } - } + class testissue + { + /// + /// A cref + ///
+ /// strong text + ///
+ /// italic text + ///
+ /// underline text + /// + /// + /// + /// Item 1. + /// + /// + /// Item 2. + /// + /// + /// link text + /// + ///
+ /// + /// Oh no! + /// + /// an int + /// a string + /// + /// Remarks are cool too. + /// + public static bool Compare(int gameObject,string tagName) + { + return true; + } + } } \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs index 92737c378..47a32926c 100644 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs @@ -12,6 +12,7 @@ public class Bar public Bar() { new Foo().Baz(); + Test.Definition d; } } } \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs index 811e90f8c..c9aa73219 100644 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs +++ b/test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs @@ -18,6 +18,17 @@ public static void main() { DoWork(4, 4.0f, 5.0); noDocMethod(); + Outer(Inner()); } + + /// + /// Outer + /// + public static string Outer(string s) => "Outer"; + + /// + /// Inner + /// + public static string Inner() => "Inner"; } } \ No newline at end of file diff --git a/test/integrationTests/workspaceDiagnostics.integration.test.ts b/test/integrationTests/workspaceDiagnostics.integration.test.ts index 4f442ee02..366be46d3 100644 --- a/test/integrationTests/workspaceDiagnostics.integration.test.ts +++ b/test/integrationTests/workspaceDiagnostics.integration.test.ts @@ -87,7 +87,7 @@ describe(`[${testAssetWorkspace.description}] Test diagnostics`, () => { }); await waitForExpectedDiagnostics((diagnostics) => { - expect(diagnostics).toHaveLength(31); + expect(diagnostics.length).toBeGreaterThan(2); const diagnosticsInDiagnosticsCs = diagnostics .filter(([uri, _]) => uri.fsPath.endsWith('diagnostics.cs')) diff --git a/version.json b/version.json index caef03ac9..d62265b7f 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.45", + "version": "2.46", "publicReleaseRefSpec": [ "^refs/heads/release$", "^refs/heads/prerelease$",