diff --git a/azure-pipelines/loc.yml b/azure-pipelines/loc.yml index e69de29bb..4fdb480a4 100644 --- a/azure-pipelines/loc.yml +++ b/azure-pipelines/loc.yml @@ -0,0 +1,73 @@ +trigger: none +pr: none + +parameters: + - name: publishLocalizationFile + type: boolean + default: true + +variables: +# Variable group contains the PAT to LOC +- group: OneLocBuildVariables + +stages: +- stage: LocalizationStage + condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') + jobs: + - job: Localization + pool: + name: NetCore1ESPool-Internal + demands: ImageOverride -equals windows.vs2022preview.amd64 + steps: + - task: NodeTool@0 + displayName: 'Install Node.js 18.x' + inputs: + # Octokit client needs 18.x to have 'fetch' function. + versionSpec: '18.x' + - checkout: self + clean: true + submodules: true + fetchTags: false + fetchDepth: 0 + - pwsh: | + npm install + npm install -g @vscode/l10n-dev + npm install -g gulp + displayName: 'Install tools' + - pwsh: npm run compile + displayName: 'Compile' + - pwsh: npm run l10nDevGenerateLocalizationBundle + displayName: 'Generate bundle.l10.json' + - pwsh: npm run l10nDevGenerateXlf + displayName: 'Generate xlf files from bundle.10n.json' + - task: OneLocBuild@2 + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + locProj: loc/LocProject.json + outDir: '$(Build.SourcesDirectory)/loc' + isCreatePrSelected: false + patVariable: $(dn-bot-ceapex-package-r) + packageSourceAuth: patAuth + lclSource: lclFilesfromPackage + LclPackageId: 'LCL-JUNO-PROD-VSCODECS' + - pwsh: npm run l10nDevImportXlf + displayName: 'Import xlf to json.' + - pwsh: gulp 'publish localization content' --userName dotnet-bot --email dotnet-bot@dotnetfoundation.org --commitSha $(Build.SourceVersion) --targetRemoteRepo vscode-csharp --baseBranch 'main' + displayName: 'Create PR in GitHub.' + env: + GitHubPAT: $(BotAccount-dotnet-bot-repo-PAT) + - task: PublishBuildArtifacts@1 + displayName: 'Publish Localization Files' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/loc' + PublishLocation: Container + ArtifactName: Loc + condition: ${{ parameters.publishLocalizationFile }} + - task: PublishBuildArtifacts@1 + displayName: 'Publish l10n file' + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/l10n' + PublishLocation: Container + ArtifactName: l10n + condition: ${{ parameters.publishLocalizationFile }} diff --git a/gulpfile.ts b/gulpfile.ts index 6fcefc675..fd8bc34cc 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -10,6 +10,7 @@ import * as packageDependencyUpdater from './src/tools/updatePackageDependencies require('./tasks/testTasks'); require('./tasks/offlinePackagingTasks'); require('./tasks/backcompatTasks'); +require('./tasks/localizationTasks'); // Disable warning about wanting an async function // tslint:disable-next-line diff --git a/l10n/bundle.l10n.json b/l10n/bundle.l10n.json new file mode 100644 index 000000000..98d4b179f --- /dev/null +++ b/l10n/bundle.l10n.json @@ -0,0 +1,85 @@ +{ + "Cannot load Razor language server because the directory was not found: '{0}'": "Cannot load Razor language server because the directory was not found: '{0}'", + "Could not find '{0}' in or above '{1}'.": "Could not find '{0}' in or above '{1}'.", + "Invalid trace setting for Razor language server. Defaulting to '{0}'": "Invalid trace setting for Razor language server. Defaulting to '{0}'", + "Could not find Razor Language Server executable within directory '{0}'": "Could not find Razor Language Server executable within directory '{0}'", + "Server failed to start after retrying 5 times.": "Server failed to start after retrying 5 times.", + "Razor Language Server failed to start unexpectedly, please check the 'Razor Log' and report an issue.": "Razor Language Server failed to start unexpectedly, please check the 'Razor Log' and report an issue.", + "Tried to send requests while server is not started.": "Tried to send requests while server is not started.", + "Tried to bind on request logic while server is not started.": "Tried to bind on request logic while server is not started.", + "Tried to bind on notification logic while server is not started.": "Tried to bind on notification logic while server is not started.", + "Cannot stop Razor Language Server as it is already stopped.": "Cannot stop Razor Language Server as it is already stopped.", + "Razor Language Server failed to stop correctly, please check the 'Razor Log' and report an issue.": "Razor Language Server failed to stop correctly, please check the 'Razor Log' and report an issue.", + "Would you like to restart the Razor Language Server to enable the Razor trace configuration change?": "Would you like to restart the Razor Language Server to enable the Razor trace configuration change?", + "Restart": "Restart", + "Razor HTML Preview": "Razor HTML Preview", + "Unexpected error when attaching to HTML preview window.": "Unexpected error when attaching to HTML preview window.", + "Razor HTML copied to clipboard": "Razor HTML copied to clipboard", + "Report a Razor issue": "Report a Razor issue", + "Host document file path": "Host document file path", + "Virtual document file path": "Virtual document file path", + "Copy Html": "Copy Html", + "Token cancellation requested: {0}": "Token cancellation requested: {0}", + "Synchronization timed out": "Synchronization timed out", + "Report Razor Issue": "Report Razor Issue", + "Unexpected error when attaching to report Razor issue window.": "Unexpected error when attaching to report Razor issue window.", + "You must first start the data collection before copying.": "You must first start the data collection before copying.", + "Razor issue copied to clipboard": "Razor issue copied to clipboard", + "Razor issue data collection started. Reproduce the issue then press \"Stop\"": "Razor issue data collection started. Reproduce the issue then press \"Stop\"", + "You must first start the data collection before stopping.": "You must first start the data collection before stopping.", + "Razor issue data collection stopped. Copying issue content...": "Razor issue data collection stopped. Copying issue content...", + "Start": "Start", + "Press {0}": "Press {0}", + "Perform the actions (or no action) that resulted in your Razor issue": "Perform the actions (or no action) that resulted in your Razor issue", + "Stop": "Stop", + "Click {0}. This will copy all relevant issue information.": "Click {0}. This will copy all relevant issue information.", + "Go to GitHub": "Go to GitHub", + "{0}, paste your issue contents as the body of the issue. Don't forget to fill out any details left unfilled.": "{0}, paste your issue contents as the body of the issue. Don't forget to fill out any details left unfilled.", + "Privacy Alert! The contents copied to your clipboard may contain personal data. Prior to posting to GitHub, please remove any personal data which should not be publicly viewable.": "Privacy Alert! The contents copied to your clipboard may contain personal data. Prior to posting to GitHub, please remove any personal data which should not be publicly viewable.", + "Copy issue content again": "Copy issue content again", + "Cannot start collecting Razor logs when {0} is set to {1}. Please set {0} to {2} and then reload your VSCode environment and re-run the report Razor issue command.": "Cannot start collecting Razor logs when {0} is set to {1}. Please set {0} to {2} and then reload your VSCode environment and re-run the report Razor issue command.", + "Non Razor file as active document": "Non Razor file as active document", + "Could not determine CSharp content": "Could not determine CSharp content", + "Could not determine Html content": "Could not determine Html content", + "A valid dotnet installation could not be found: {0}": "A valid dotnet installation could not be found: {0}", + "Is this a Bug or Feature request?": "Is this a Bug or Feature request?", + "Bug": "Bug", + "Steps to reproduce": "Steps to reproduce", + "Please fill in this section": "Please fill in this section", + "Description of the problem": "Description of the problem", + "Expected behavior": "Expected behavior", + "Actual behavior": "Actual behavior", + "Logs": "Logs", + "OmniSharp": "OmniSharp", + "Razor": "Razor", + "Expand": "Expand", + "Workspace information": "Workspace information", + "Razor document": "Razor document", + "Projected CSharp document": "Projected CSharp document", + "Projected Html document": "Projected Html document", + "Machine information": "Machine information", + "Razor.VSCode version": "Razor.VSCode version", + "VSCode version": "VSCode version", + "Extensions": "Extensions", + "Projected CSharp as seen by extension": "Projected CSharp as seen by extension", + "Unable to resolve VSCode's version of CSharp": "Unable to resolve VSCode's version of CSharp", + "Projected Html as seen by extension": "Projected Html as seen by extension", + "Unable to resolve VSCode's version of Html": "Unable to resolve VSCode's version of Html", + "Unable to find Razor extension version.": "Unable to find Razor extension version.", + "Extension": "Extension", + "Author": "Author", + "Version": "Version", + "Razor C# Preview": "Razor C# Preview", + "Unexpected error when attaching to C# preview window.": "Unexpected error when attaching to C# preview window.", + "Razor C# copied to clipboard": "Razor C# copied to clipboard", + "Copy C#": "Copy C#", + "Unexpected completion trigger kind: {0}": "Unexpected completion trigger kind: {0}", + "1 reference": "1 reference", + "{0} references": "{0} references", + "Run and Debug: auto-detection found {0} for a launch browser": "Run and Debug: auto-detection found {0} for a launch browser", + "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.", + "View Debug Docs": "View Debug Docs", + "Ignore": "Ignore", + "Run and Debug: A valid browser is not installed": "Run and Debug: A valid browser is not installed", + "Restart Language Server": "Restart Language Server" +} \ No newline at end of file diff --git a/loc/LocProject.json b/loc/LocProject.json new file mode 100644 index 000000000..bbaa6bb5a --- /dev/null +++ b/loc/LocProject.json @@ -0,0 +1,14 @@ +{ + "Projects": [ + { + "LanguageSet": "VS_Main_Languages", + "LocItems": [ + { + "SourceFile": "./loc/vscode-csharp.xlf", + "CopyOption": "LangIDOnName", + "OutputPath": "./loc/" + } + ] + } + ] +} diff --git a/package-lock.json b/package-lock.json index bcac2828e..a4dc0434d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "SEE LICENSE IN RuntimeLicenses/license.txt", "dependencies": { "@microsoft/servicehub-framework": "4.2.99-beta", + "@octokit/rest": "^20.0.1", "@types/cross-spawn": "6.0.2", "@vscode/debugprotocol": "1.56.0", "@vscode/extension-telemetry": "0.6.2", @@ -56,7 +57,7 @@ "@types/tmp": "0.0.33", "@types/unzipper": "^0.9.1", "@types/uuid": "^9.0.1", - "@types/vscode": "1.69.0", + "@types/vscode": "1.73.0", "@types/yauzl": "2.10.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", @@ -86,6 +87,7 @@ "mocha": "10.0.0", "mock-fs": "^4.13.0", "mock-http-server": "1.4.2", + "octokit": "^3.1.0", "prettier": "2.8.8", "rimraf": "2.6.3", "source-map-support": "^0.5.21", @@ -99,7 +101,7 @@ "webpack-cli": "4.6.0" }, "engines": { - "vscode": "^1.69.0" + "vscode": "^1.73.0" } }, "node_modules/@babel/code-frame": { @@ -471,6 +473,396 @@ "node": ">= 8" } }, + "node_modules/@octokit/app": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/app/-/app-14.0.0.tgz", + "integrity": "sha512-g/zDXttroZ9Se08shK0d0d/j0cgSA+h4WV7qGUevNEM0piNBkIlfb4Fm6bSwCNAZhNf72mBgERmYOoxicPkqdw==", + "dev": true, + "dependencies": { + "@octokit/auth-app": "^6.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-rest": "^8.0.0", + "@octokit/types": "^11.1.0", + "@octokit/webhooks": "^12.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-app": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-6.0.0.tgz", + "integrity": "sha512-OKct7Rukf3g9DjpzcpdacQsdmd6oPrJ7fZND22JkjzhDvfhttUOnmh+qPS4kHhaNNyTxqSThnfrUWvkqNLd1nw==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "deprecation": "^2.3.1", + "lru-cache": "^10.0.0", + "universal-github-app-jwt": "^1.1.1", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-app/node_modules/lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@octokit/auth-oauth-app": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-7.0.0.tgz", + "integrity": "sha512-8JvJEXGoEqrbzLwt3SwIUvkDd+1wrM8up0KawvDIElB8rbxPbvWppGO0SLKAWSJ0q8ILcVq+mWck6pDcZ3a9KA==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-device": "^6.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/types": "^11.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-oauth-device": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-6.0.0.tgz", + "integrity": "sha512-Zgf/LKhwWk54rJaTGYVYtbKgUty+ouil6VQeRd+pCw7Gd0ECoSWaZuHK6uDGC/HtnWHjpSWFhzxPauDoHcNRtg==", + "dev": true, + "dependencies": { + "@octokit/oauth-methods": "^4.0.0", + "@octokit/request": "^8.0.0", + "@octokit/types": "^11.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-oauth-user": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-4.0.0.tgz", + "integrity": "sha512-VOm5aIkVGHaOhIvsF/4YmSjoYDzzrKbbYkdSEO0KqHK7I8SlO3ZndSikQ1fBlNPUEH0ve2BOTxLrVvI1qBf9/Q==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-device": "^6.0.0", + "@octokit/oauth-methods": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/types": "^11.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/auth-unauthenticated": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.0.tgz", + "integrity": "sha512-AjOI6FNB2dweJ85p6rf7D4EhE4y6VBcwYfX/7KJkR5Q9fD9ET6NABAjajUTSNFfCxmNIaQgISggZ3pkgwtTqsA==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz", + "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz", + "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==", + "dependencies": { + "@octokit/types": "^11.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz", + "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==", + "dependencies": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^11.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/oauth-app": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-6.0.0.tgz", + "integrity": "sha512-bNMkS+vJ6oz2hCyraT9ZfTpAQ8dZNqJJQVNaKjPLx4ue5RZiFdU1YWXguOPR8AaSHS+lKe+lR3abn2siGd+zow==", + "dev": true, + "dependencies": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/oauth-methods": "^4.0.0", + "@types/aws-lambda": "^8.10.83", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/oauth-authorization-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz", + "integrity": "sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/oauth-methods": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-4.0.0.tgz", + "integrity": "sha512-dqy7BZLfLbi3/8X8xPKUKZclMEK9vN3fK5WF3ortRvtplQTszFvdAGbTo71gGLO+4ZxspNiLjnqdd64Chklf7w==", + "dev": true, + "dependencies": { + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "btoa-lite": "^1.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" + }, + "node_modules/@octokit/plugin-paginate-graphql": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.0.tgz", + "integrity": "sha512-7HcYW5tP7/Z6AETAPU14gp5H5KmCPT3hmJrS/5tO7HIgbwenYmgw4OY9Ma54FDySuxMwD+wsJlxtuGWwuZuItA==", + "dev": true, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-8.0.0.tgz", + "integrity": "sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==", + "dependencies": { + "@octokit/types": "^11.0.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz", + "integrity": "sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-9.0.0.tgz", + "integrity": "sha512-KquMF/VB1IkKNiVnzJKspY5mFgGyLd7HzdJfVEGTJFzqu9BRFNWt+nwTCMuUiWc72gLQhRWYubTwOkQj+w/1PA==", + "dependencies": { + "@octokit/types": "^11.0.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.0.tgz", + "integrity": "sha512-a1/A4A+PB1QoAHQfLJxGHhLfSAT03bR1jJz3GgQJZvty2ozawFWs93MiBQXO7SL2YbO7CIq0Goj4qLOBj8JeMQ==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-7.0.0.tgz", + "integrity": "sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==", + "dev": true, + "dependencies": { + "@octokit/types": "^11.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz", + "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==", + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.1.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz", + "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==", + "dependencies": { + "@octokit/types": "^11.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/rest": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.0.1.tgz", + "integrity": "sha512-wROV21RwHQIMNb2Dgd4+pY+dVy1Dwmp85pBrgr6YRRDYRBu9Gb+D73f4Bl2EukZSj5hInq2Tui9o7gAQpc2k2Q==", + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^8.0.0", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "^9.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz", + "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==", + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/@octokit/webhooks": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-12.0.3.tgz", + "integrity": "sha512-8iG+/yza7hwz1RrQ7i7uGpK2/tuItZxZq1aTmeg2TNp2xTUB8F8lZF/FcZvyyAxT8tpDMF74TjFGCDACkf1kAQ==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/webhooks-methods": "^4.0.0", + "@octokit/webhooks-types": "7.1.0", + "aggregate-error": "^3.1.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/webhooks-methods": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-4.0.0.tgz", + "integrity": "sha512-M8mwmTXp+VeolOS/kfRvsDdW+IO0qJ8kYodM/sAysk093q6ApgmBXwK1ZlUvAwXVrp/YVHp6aArj4auAxUAOFw==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/webhooks-types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.1.0.tgz", + "integrity": "sha512-y92CpG4kFFtBBjni8LHoV12IegJ+KFxLgKRengrVjKmGE5XMeCuGvlfRe75lTRrgXaG6XIWJlFpIDTlkoJsU8w==", + "dev": true + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -488,6 +880,18 @@ "@types/glob": "*" } }, + "node_modules/@types/aws-lambda": { + "version": "8.10.119", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz", + "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw==", + "dev": true + }, + "node_modules/@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==", + "dev": true + }, "node_modules/@types/chai": { "version": "4.2.16", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.16.tgz", @@ -631,6 +1035,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -704,9 +1117,9 @@ "dev": true }, "node_modules/@types/vinyl": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.4.tgz", - "integrity": "sha512-2o6a2ixaVI2EbwBPg1QYLGQoHK56p/8X/sGfKbFC8N6sY9lfjsMf/GprtkQkSya0D4uRiutRZ2BWj7k3JvLsAQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.7.tgz", + "integrity": "sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==", "dev": true, "dependencies": { "@types/expect": "^1.20.4", @@ -725,9 +1138,9 @@ } }, "node_modules/@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.73.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.73.0.tgz", + "integrity": "sha512-FhkfF7V3fj7S3WqXu7AxFesBLO3uMkdCPJJPbwyZXezv2xJ6xBWHYM2CmkkbO8wT9Fr3KipwxGGOoQRrYq7mHg==", "dev": true }, "node_modules/@types/yauzl": { @@ -1123,11 +1536,6 @@ "vscode": "^1.60.0" } }, - "node_modules/@vscode/l10n": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.11.tgz", - "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" - }, "node_modules/@vscode/test-electron": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.3.tgz", @@ -1393,6 +1801,19 @@ "node": ">= 4.0.0" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2040,6 +2461,11 @@ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + }, "node_modules/big-integer": { "version": "1.6.48", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", @@ -2242,6 +2668,12 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2298,6 +2730,12 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", + "dev": true + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -2339,6 +2777,12 @@ "node": ">=0.4.0" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2715,6 +3159,15 @@ "node": ">=4" } }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -3318,6 +3771,11 @@ "node": ">= 0.6" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -3465,6 +3923,15 @@ "object.defaults": "^1.1.0" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7110,12 +7577,70 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/just-debounce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", "dev": true }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -8679,6 +9204,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/octokit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.1.0.tgz", + "integrity": "sha512-dmIH5D+edpb4/ASd6ZGo6BiRR1g4ytu8lG4f+6XN/2AW+CSuTsT0nj1d6rv/HKgoflMQ1+rb3KlVWcvrmgQZhw==", + "dev": true, + "dependencies": { + "@octokit/app": "^14.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-graphql": "^4.0.0", + "@octokit/plugin-paginate-rest": "^8.0.0", + "@octokit/plugin-rest-endpoint-methods": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^7.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.1.0" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -11279,6 +11825,21 @@ "through2-filter": "^3.0.0" } }, + "node_modules/universal-github-app-jwt": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", + "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "dev": true, + "dependencies": { + "@types/jsonwebtoken": "^9.0.0", + "jsonwebtoken": "^9.0.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -11644,6 +12205,11 @@ "vscode-uri": "^3.0.7" } }, + "node_modules/vscode-html-languageservice/node_modules/@vscode/l10n": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.11.tgz", + "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" + }, "node_modules/vscode-js-debug-browsers": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/vscode-js-debug-browsers/-/vscode-js-debug-browsers-1.0.5.tgz", @@ -12675,6 +13241,305 @@ "fastq": "^1.6.0" } }, + "@octokit/app": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/app/-/app-14.0.0.tgz", + "integrity": "sha512-g/zDXttroZ9Se08shK0d0d/j0cgSA+h4WV7qGUevNEM0piNBkIlfb4Fm6bSwCNAZhNf72mBgERmYOoxicPkqdw==", + "dev": true, + "requires": { + "@octokit/auth-app": "^6.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-rest": "^8.0.0", + "@octokit/types": "^11.1.0", + "@octokit/webhooks": "^12.0.1" + } + }, + "@octokit/auth-app": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-6.0.0.tgz", + "integrity": "sha512-OKct7Rukf3g9DjpzcpdacQsdmd6oPrJ7fZND22JkjzhDvfhttUOnmh+qPS4kHhaNNyTxqSThnfrUWvkqNLd1nw==", + "dev": true, + "requires": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "deprecation": "^2.3.1", + "lru-cache": "^10.0.0", + "universal-github-app-jwt": "^1.1.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true + } + } + }, + "@octokit/auth-oauth-app": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-7.0.0.tgz", + "integrity": "sha512-8JvJEXGoEqrbzLwt3SwIUvkDd+1wrM8up0KawvDIElB8rbxPbvWppGO0SLKAWSJ0q8ILcVq+mWck6pDcZ3a9KA==", + "dev": true, + "requires": { + "@octokit/auth-oauth-device": "^6.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/types": "^11.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-device": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-6.0.0.tgz", + "integrity": "sha512-Zgf/LKhwWk54rJaTGYVYtbKgUty+ouil6VQeRd+pCw7Gd0ECoSWaZuHK6uDGC/HtnWHjpSWFhzxPauDoHcNRtg==", + "dev": true, + "requires": { + "@octokit/oauth-methods": "^4.0.0", + "@octokit/request": "^8.0.0", + "@octokit/types": "^11.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-user": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-4.0.0.tgz", + "integrity": "sha512-VOm5aIkVGHaOhIvsF/4YmSjoYDzzrKbbYkdSEO0KqHK7I8SlO3ZndSikQ1fBlNPUEH0ve2BOTxLrVvI1qBf9/Q==", + "dev": true, + "requires": { + "@octokit/auth-oauth-device": "^6.0.0", + "@octokit/oauth-methods": "^4.0.0", + "@octokit/request": "^8.0.2", + "@octokit/types": "^11.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==" + }, + "@octokit/auth-unauthenticated": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.0.tgz", + "integrity": "sha512-AjOI6FNB2dweJ85p6rf7D4EhE4y6VBcwYfX/7KJkR5Q9fD9ET6NABAjajUTSNFfCxmNIaQgISggZ3pkgwtTqsA==", + "dev": true, + "requires": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0" + } + }, + "@octokit/core": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz", + "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==", + "requires": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz", + "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==", + "requires": { + "@octokit/types": "^11.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + } + } + }, + "@octokit/graphql": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz", + "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==", + "requires": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^11.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/oauth-app": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-6.0.0.tgz", + "integrity": "sha512-bNMkS+vJ6oz2hCyraT9ZfTpAQ8dZNqJJQVNaKjPLx4ue5RZiFdU1YWXguOPR8AaSHS+lKe+lR3abn2siGd+zow==", + "dev": true, + "requires": { + "@octokit/auth-oauth-app": "^7.0.0", + "@octokit/auth-oauth-user": "^4.0.0", + "@octokit/auth-unauthenticated": "^5.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/oauth-methods": "^4.0.0", + "@types/aws-lambda": "^8.10.83", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/oauth-authorization-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz", + "integrity": "sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==", + "dev": true + }, + "@octokit/oauth-methods": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-4.0.0.tgz", + "integrity": "sha512-dqy7BZLfLbi3/8X8xPKUKZclMEK9vN3fK5WF3ortRvtplQTszFvdAGbTo71gGLO+4ZxspNiLjnqdd64Chklf7w==", + "dev": true, + "requires": { + "@octokit/oauth-authorization-url": "^6.0.2", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "btoa-lite": "^1.0.0" + } + }, + "@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" + }, + "@octokit/plugin-paginate-graphql": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.0.tgz", + "integrity": "sha512-7HcYW5tP7/Z6AETAPU14gp5H5KmCPT3hmJrS/5tO7HIgbwenYmgw4OY9Ma54FDySuxMwD+wsJlxtuGWwuZuItA==", + "dev": true, + "requires": {} + }, + "@octokit/plugin-paginate-rest": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-8.0.0.tgz", + "integrity": "sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==", + "requires": { + "@octokit/types": "^11.0.0" + } + }, + "@octokit/plugin-request-log": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz", + "integrity": "sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==", + "requires": {} + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-9.0.0.tgz", + "integrity": "sha512-KquMF/VB1IkKNiVnzJKspY5mFgGyLd7HzdJfVEGTJFzqu9BRFNWt+nwTCMuUiWc72gLQhRWYubTwOkQj+w/1PA==", + "requires": { + "@octokit/types": "^11.0.0" + } + }, + "@octokit/plugin-retry": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.0.tgz", + "integrity": "sha512-a1/A4A+PB1QoAHQfLJxGHhLfSAT03bR1jJz3GgQJZvty2ozawFWs93MiBQXO7SL2YbO7CIq0Goj4qLOBj8JeMQ==", + "dev": true, + "requires": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.0.0", + "bottleneck": "^2.15.3" + } + }, + "@octokit/plugin-throttling": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-7.0.0.tgz", + "integrity": "sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==", + "dev": true, + "requires": { + "@octokit/types": "^11.0.0", + "bottleneck": "^2.15.3" + } + }, + "@octokit/request": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz", + "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==", + "requires": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.1.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + } + } + }, + "@octokit/request-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz", + "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==", + "requires": { + "@octokit/types": "^11.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.0.1.tgz", + "integrity": "sha512-wROV21RwHQIMNb2Dgd4+pY+dVy1Dwmp85pBrgr6YRRDYRBu9Gb+D73f4Bl2EukZSj5hInq2Tui9o7gAQpc2k2Q==", + "requires": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^8.0.0", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "^9.0.0" + } + }, + "@octokit/types": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz", + "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==", + "requires": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "@octokit/webhooks": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-12.0.3.tgz", + "integrity": "sha512-8iG+/yza7hwz1RrQ7i7uGpK2/tuItZxZq1aTmeg2TNp2xTUB8F8lZF/FcZvyyAxT8tpDMF74TjFGCDACkf1kAQ==", + "dev": true, + "requires": { + "@octokit/request-error": "^5.0.0", + "@octokit/webhooks-methods": "^4.0.0", + "@octokit/webhooks-types": "7.1.0", + "aggregate-error": "^3.1.0" + } + }, + "@octokit/webhooks-methods": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-4.0.0.tgz", + "integrity": "sha512-M8mwmTXp+VeolOS/kfRvsDdW+IO0qJ8kYodM/sAysk093q6ApgmBXwK1ZlUvAwXVrp/YVHp6aArj4auAxUAOFw==", + "dev": true + }, + "@octokit/webhooks-types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.1.0.tgz", + "integrity": "sha512-y92CpG4kFFtBBjni8LHoV12IegJ+KFxLgKRengrVjKmGE5XMeCuGvlfRe75lTRrgXaG6XIWJlFpIDTlkoJsU8w==", + "dev": true + }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -12689,6 +13554,18 @@ "@types/glob": "*" } }, + "@types/aws-lambda": { + "version": "8.10.119", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz", + "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw==", + "dev": true + }, + "@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==", + "dev": true + }, "@types/chai": { "version": "4.2.16", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.16.tgz", @@ -12832,6 +13709,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -12905,9 +13791,9 @@ "dev": true }, "@types/vinyl": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.4.tgz", - "integrity": "sha512-2o6a2ixaVI2EbwBPg1QYLGQoHK56p/8X/sGfKbFC8N6sY9lfjsMf/GprtkQkSya0D4uRiutRZ2BWj7k3JvLsAQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.7.tgz", + "integrity": "sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==", "dev": true, "requires": { "@types/expect": "^1.20.4", @@ -12926,9 +13812,9 @@ } }, "@types/vscode": { - "version": "1.69.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.69.0.tgz", - "integrity": "sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA==", + "version": "1.73.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.73.0.tgz", + "integrity": "sha512-FhkfF7V3fj7S3WqXu7AxFesBLO3uMkdCPJJPbwyZXezv2xJ6xBWHYM2CmkkbO8wT9Fr3KipwxGGOoQRrYq7mHg==", "dev": true }, "@types/yauzl": { @@ -13182,11 +14068,6 @@ "@microsoft/1ds-post-js": "^3.2.3" } }, - "@vscode/l10n": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.11.tgz", - "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" - }, "@vscode/test-electron": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.1.3.tgz", @@ -13419,6 +14300,16 @@ "es6-promisify": "^5.0.0" } }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -13920,6 +14811,11 @@ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, + "before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + }, "big-integer": { "version": "1.6.48", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", @@ -14092,6 +14988,12 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -14129,6 +15031,12 @@ "picocolors": "^1.0.0" } }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", + "dev": true + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -14150,6 +15058,12 @@ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", "dev": true }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -14447,6 +15361,12 @@ "escape-string-regexp": "^1.0.5" } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -14935,6 +15855,11 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -15047,6 +15972,15 @@ "object.defaults": "^1.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -17791,12 +18725,62 @@ "universalify": "^2.0.0" } }, + "jsonwebtoken": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "just-debounce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", "dev": true }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -19041,6 +20025,24 @@ "es-abstract": "^1.20.4" } }, + "octokit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.1.0.tgz", + "integrity": "sha512-dmIH5D+edpb4/ASd6ZGo6BiRR1g4ytu8lG4f+6XN/2AW+CSuTsT0nj1d6rv/HKgoflMQ1+rb3KlVWcvrmgQZhw==", + "dev": true, + "requires": { + "@octokit/app": "^14.0.0", + "@octokit/core": "^5.0.0", + "@octokit/oauth-app": "^6.0.0", + "@octokit/plugin-paginate-graphql": "^4.0.0", + "@octokit/plugin-paginate-rest": "^8.0.0", + "@octokit/plugin-rest-endpoint-methods": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^7.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^11.1.0" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -21021,6 +22023,21 @@ "through2-filter": "^3.0.0" } }, + "universal-github-app-jwt": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", + "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "dev": true, + "requires": { + "@types/jsonwebtoken": "^9.0.0", + "jsonwebtoken": "^9.0.0" + } + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -21319,6 +22336,13 @@ "vscode-languageserver-textdocument": "^1.0.8", "vscode-languageserver-types": "^3.17.2", "vscode-uri": "^3.0.7" + }, + "dependencies": { + "@vscode/l10n": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.11.tgz", + "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" + } } }, "vscode-js-debug-browsers": { diff --git a/package.json b/package.json index 2957786c3..fe683f173 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "razorOmnisharp": "7.0.0-preview.23363.1" }, "main": "./dist/extension", + "l10n": "./l10n", "brokeredServices": [ { "moniker": { @@ -52,8 +53,9 @@ ], "scripts": { "vscode:prepublish": "tsc -p ./ && webpack --mode production", - "compile": "tsc -p ./ && npx eslint ./", - "compileDev": "tsc -p ./ && npx eslint ./ && webpack --mode development", + "l10nDevGenerateLocalizationBundle": "npx @vscode/l10n-dev export --outDir ./l10n ./src", + "compile": "tsc -p ./ && npx eslint ./ && npm run l10nDevGenerateLocalizationBundle", + "compileDev": "tsc -p ./ && npx eslint ./ && webpack --mode development && npm run l10nDevGenerateLocalizationBundle", "watch": "tsc -watch -p ./", "tdd": "mocha --config ./.mocharc.jsonc --watch --watch-extensions ts test/unitTests/**/*.test.ts*", "test": "tsc -p ./ && gulp test", @@ -65,13 +67,16 @@ "test:integration:slnFilterWithCsproj": "tsc -p ./ && gulp test:integration:slnFilterWithCsproj", "test:artifacts": "tsc -p ./ && mocha out/test/artifactTests/**/*.test.js", "unpackage:vsix": "gulp vsix:release:unpackage", - "updatePackageDependencies": "gulp updatePackageDependencies" + "updatePackageDependencies": "gulp updatePackageDependencies", + "l10nDevGenerateXlf": "npx @vscode/l10n-dev generate-xlf ./package.nls.json ./l10n/bundle.l10n.json --outFile ./loc/vscode-csharp.xlf", + "l10nDevImportXlf": "npx @vscode/l10n-dev import-xlf ./loc/vscode-csharp.*.xlf --outDir ./l10n" }, "extensionDependencies": [ "ms-dotnettools.vscode-dotnet-runtime" ], "dependencies": { "@microsoft/servicehub-framework": "4.2.99-beta", + "@octokit/rest": "^20.0.1", "@types/cross-spawn": "6.0.2", "@vscode/debugprotocol": "1.56.0", "@vscode/extension-telemetry": "0.6.2", @@ -116,9 +121,9 @@ "@types/node": "16.11.38", "@types/semver": "5.5.0", "@types/tmp": "0.0.33", - "@types/uuid": "^9.0.1", "@types/unzipper": "^0.9.1", - "@types/vscode": "1.69.0", + "@types/uuid": "^9.0.1", + "@types/vscode": "1.73.0", "@types/yauzl": "2.10.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", @@ -148,6 +153,7 @@ "mocha": "10.0.0", "mock-fs": "^4.13.0", "mock-http-server": "1.4.2", + "octokit": "^3.1.0", "prettier": "2.8.8", "rimraf": "2.6.3", "source-map-support": "^0.5.21", @@ -845,7 +851,7 @@ } ], "engines": { - "vscode": "^1.69.0" + "vscode": "^1.73.0" }, "activationEvents": [ "onDebugInitialConfigurations", @@ -1323,7 +1329,7 @@ "properties": { "dotnet.defaultSolution": { "type": "string", - "description": "The path of the default solution to be opened in the workspace, or set to 'disable' to skip it.", + "description": "%configuration.dotnet.defaultSolution.description%", "order": 0 }, "dotnet.dotnetPath": { @@ -5019,4 +5025,4 @@ } ] } -} +} \ No newline at end of file diff --git a/package.nls.json b/package.nls.json new file mode 100644 index 000000000..43b7588a9 --- /dev/null +++ b/package.nls.json @@ -0,0 +1,3 @@ +{ + "configuration.dotnet.defaultSolution.description": "The path of the default solution to be opened in the workspace, or set to 'disable' to skip it." +} diff --git a/src/lsptoolshost/roslynLanguageServer.ts b/src/lsptoolshost/roslynLanguageServer.ts index c2abfb0ec..08a0b11e2 100644 --- a/src/lsptoolshost/roslynLanguageServer.ts +++ b/src/lsptoolshost/roslynLanguageServer.ts @@ -519,7 +519,7 @@ export class RoslynLanguageServer { return; } - const title = 'Restart Language Server'; + const title = vscode.l10n.t('Restart Language Server'); const command = 'dotnet.restartServer'; if (csharpDevkitExtension && !this._wasActivatedWithCSharpDevkit) { // We previously started without C# Dev Kit and its now installed. diff --git a/src/razor/razor.ts b/src/razor/razor.ts index 82f336af5..862e7d16b 100644 --- a/src/razor/razor.ts +++ b/src/razor/razor.ts @@ -7,7 +7,6 @@ import * as fs from 'fs'; import * as RazorOmniSharp from 'microsoft.aspnetcore.razor.vscode'; import * as path from 'path'; import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import * as Razor from '../../src/razor/src/extension'; import { EventStream } from '../eventStream'; @@ -40,7 +39,10 @@ export async function activateRazorExtension( } } else { vscode.window.showWarningMessage( - l10n.t("Cannot load Razor language server because the directory was not found: '{0}'", languageServerDir) + vscode.l10n.t( + "Cannot load Razor language server because the directory was not found: '{0}'", + languageServerDir + ) ); } } diff --git a/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts b/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts index 27a7f3876..4afa69663 100644 --- a/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts +++ b/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts @@ -7,7 +7,6 @@ import { promises, readFileSync } from 'fs'; import { join } from 'path'; import { fileURLToPath } from 'url'; import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { ChromeBrowserFinder, EdgeBrowserFinder } from 'vscode-js-debug-browsers'; import { RazorLogger } from '../razorLogger'; import { JS_DEBUG_NAME, SERVER_APP_NAME } from './constants'; @@ -16,7 +15,7 @@ import showInformationMessage from '../../../shared/observers/utils/showInformat import showErrorMessage from '../../../observers/utils/showErrorMessage'; export class BlazorDebugConfigurationProvider implements vscode.DebugConfigurationProvider { - private static readonly autoDetectUserNotice: string = l10n.t( + private static readonly autoDetectUserNotice: string = vscode.l10n.t( 'Run and Debug: auto-detection found {0} for a launch browser' ); private static readonly edgeBrowserType: string = 'msedge'; @@ -165,11 +164,11 @@ export class BlazorDebugConfigurationProvider implements vscode.DebugConfigurati await this.vscodeType.debug.startDebugging(folder, browser); } catch (error) { this.logger.logError('[DEBUGGER] Error when launching browser debugger: ', error as Error); - const message = l10n.t( + const message = vscode.l10n.t( 'There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.' ); - const viewDebugDocsButton = l10n.t('View Debug Docs'); - const ignoreButton = l10n.t('Ignore'); + const viewDebugDocsButton = vscode.l10n.t('View Debug Docs'); + const ignoreButton = vscode.l10n.t('Ignore'); this.vscodeType.window.showErrorMessage(message, viewDebugDocsButton, ignoreButton).then(async (result) => { if (result === viewDebugDocsButton) { const debugDocsUri = 'https://aka.ms/blazorwasmcodedebug'; @@ -202,7 +201,7 @@ export class BlazorDebugConfigurationProvider implements vscode.DebugConfigurati return BlazorDebugConfigurationProvider.edgeBrowserType; } - showErrorMessage(vscode, l10n.t('Run and Debug: A valid browser is not installed')); + showErrorMessage(vscode, vscode.l10n.t('Run and Debug: A valid browser is not installed')); return undefined; } } diff --git a/src/razor/src/codeLens/razorCodeLensProvider.ts b/src/razor/src/codeLens/razorCodeLensProvider.ts index 7af036d58..e6b143eeb 100644 --- a/src/razor/src/codeLens/razorCodeLensProvider.ts +++ b/src/razor/src/codeLens/razorCodeLensProvider.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { RazorDocumentChangeKind } from '../document/razorDocumentChangeKind'; import { RazorDocumentManager } from '../document/razorDocumentManager'; import { RazorDocumentSynchronizer } from '../document/razorDocumentSynchronizer'; @@ -145,7 +144,7 @@ export class RazorCodeLensProvider extends RazorLanguageFeatureBase implements v // We now have a list of references to show in the CodeLens. const count = remappedReferences.length; codeLens.command = { - title: count === 1 ? l10n.t('1 reference') : l10n.t('{0} references', count), + title: count === 1 ? vscode.l10n.t('1 reference') : vscode.l10n.t('{0} references', count), command: 'editor.action.showReferences', arguments: [razorDocument.uri, codeLens.range.start, remappedReferences], }; diff --git a/src/razor/src/completion/razorCompletionItemProvider.ts b/src/razor/src/completion/razorCompletionItemProvider.ts index ac0fab7cf..a76aadd04 100644 --- a/src/razor/src/completion/razorCompletionItemProvider.ts +++ b/src/razor/src/completion/razorCompletionItemProvider.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { RazorDocumentManager } from '../document/razorDocumentManager'; import { RazorDocumentSynchronizer } from '../document/razorDocumentSynchronizer'; import { RazorLanguageFeatureBase } from '../razorLanguageFeatureBase'; @@ -290,6 +289,6 @@ function getTriggerKind(triggerKind: vscode.CompletionTriggerKind): CompletionTr case vscode.CompletionTriggerKind.TriggerForIncompleteCompletions: return CompletionTriggerKind.TriggerForIncompleteCompletions; default: - throw new Error(l10n.t('Unexpected completion trigger kind: {0}', triggerKind)); + throw new Error(vscode.l10n.t('Unexpected completion trigger kind: {0}', triggerKind)); } } diff --git a/src/razor/src/configurationChangeListener.ts b/src/razor/src/configurationChangeListener.ts index ec386d8e8..acb6cec92 100644 --- a/src/razor/src/configurationChangeListener.ts +++ b/src/razor/src/configurationChangeListener.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { RazorLanguageServerClient } from './razorLanguageServerClient'; import { RazorLogger } from './razorLogger'; @@ -17,10 +16,10 @@ export function listenToConfigurationChanges(languageServerClient: RazorLanguage } function razorTraceConfigurationChangeHandler(languageServerClient: RazorLanguageServerClient) { - const promptText: string = l10n.t( + const promptText: string = vscode.l10n.t( 'Would you like to restart the Razor Language Server to enable the Razor trace configuration change?' ); - const restartButtonText = l10n.t('Restart'); + const restartButtonText = vscode.l10n.t('Restart'); vscode.window.showInformationMessage(promptText, restartButtonText).then(async (result) => { if (result !== restartButtonText) { diff --git a/src/razor/src/csharp/csharpPreviewPanel.ts b/src/razor/src/csharp/csharpPreviewPanel.ts index 122cb5d99..3c942bd1c 100644 --- a/src/razor/src/csharp/csharpPreviewPanel.ts +++ b/src/razor/src/csharp/csharpPreviewPanel.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { IRazorDocumentChangeEvent } from '../document/IRazorDocumentChangeEvent'; import { RazorDocumentChangeKind } from '../document/razorDocumentChangeKind'; import { RazorDocumentManager } from '../document/razorDocumentManager'; @@ -26,7 +25,7 @@ export class CSharpPreviewPanel { } else { this.panel = vscode.window.createWebviewPanel( CSharpPreviewPanel.viewType, - l10n.t('Razor C# Preview'), + vscode.l10n.t('Razor C# Preview'), vscode.ViewColumn.Two, { enableScripts: true, @@ -62,7 +61,7 @@ export class CSharpPreviewPanel { private attachToCurrentPanel() { if (!this.panel) { - vscode.window.showErrorMessage(l10n.t('Unexpected error when attaching to C# preview window.')); + vscode.window.showErrorMessage(vscode.l10n.t('Unexpected error when attaching to C# preview window.')); return; } @@ -74,7 +73,7 @@ export class CSharpPreviewPanel { } await vscode.env.clipboard.writeText(this.csharpContent); - vscode.window.showInformationMessage(l10n.t('Razor C# copied to clipboard')); + vscode.window.showInformationMessage(vscode.l10n.t('Razor C# copied to clipboard')); return; } }); @@ -101,10 +100,10 @@ export class CSharpPreviewPanel { let content = this.csharpContent ? this.csharpContent : ''; content = content.replace(/
diff --git a/src/razor/src/diagnostics/reportIssueCreator.ts b/src/razor/src/diagnostics/reportIssueCreator.ts index b680d84de..75735c46c 100644 --- a/src/razor/src/diagnostics/reportIssueCreator.ts +++ b/src/razor/src/diagnostics/reportIssueCreator.ts @@ -5,15 +5,18 @@ import * as cp from 'child_process'; import * as os from 'os'; -import * as vscode from '../vscodeAdapter'; -import * as l10n from '@vscode/l10n'; +import * as vscodeAdapter from '../vscodeAdapter'; +import * as vscode from 'vscode'; import { IRazorDocument } from '../document/IRazorDocument'; import { IRazorDocumentManager } from '../document/IRazorDocumentManager'; import { razorExtensionId } from '../razorExtensionId'; import { IReportIssueDataCollectionResult } from './IReportIssueDataCollectionResult'; export class ReportIssueCreator { - constructor(private readonly vscodeApi: vscode.api, private readonly documentManager: IRazorDocumentManager) {} + constructor( + private readonly vscodeApi: vscodeAdapter.api, + private readonly documentManager: IRazorDocumentManager + ) {} public async create(collectionResult: IReportIssueDataCollectionResult) { let razorContent: string; @@ -27,9 +30,9 @@ export class ReportIssueCreator { csharpContent = await this.getProjectedCSharp(razorDocument); htmlContent = await this.getProjectedHtml(razorDocument); } else { - razorContent = l10n.t('Non Razor file as active document'); - csharpContent = l10n.t('Could not determine CSharp content'); - htmlContent = l10n.t('Could not determine Html content'); + razorContent = vscode.l10n.t('Non Razor file as active document'); + csharpContent = vscode.l10n.t('Could not determine CSharp content'); + htmlContent = vscode.l10n.t('Could not determine Html content'); } const razorExtensionVersion = this.getExtensionVersion(); @@ -37,7 +40,7 @@ export class ReportIssueCreator { try { dotnetInfo = await this.getDotnetInfo(); } catch (error: any) { - dotnetInfo = l10n.t('A valid dotnet installation could not be found: {0}', error?.toString()); + dotnetInfo = vscode.l10n.t('A valid dotnet installation could not be found: {0}', error?.toString()); } const extensionTable = this.generateExtensionTable(); @@ -47,32 +50,32 @@ export class ReportIssueCreator { const sanitizedHtmlContent = this.sanitize(htmlContent); const sanitizedDotnetInfo = this.sanitize(dotnetInfo); - const issueType = l10n.t('Is this a Bug or Feature request?'); + const issueType = vscode.l10n.t('Is this a Bug or Feature request?'); - const defaultIssueType = l10n.t('Bug'); + const defaultIssueType = vscode.l10n.t('Bug'); - const reproStepsHeader = l10n.t('Steps to reproduce'); - const genericPlaceholderContent = l10n.t('Please fill in this section'); - const problemDescriptionHeader = l10n.t('Description of the problem'); - const expectedBehaviorHeader = l10n.t('Expected behavior'); - const actualBehaviorHeader = l10n.t('Actual behavior'); - const logsHeader = l10n.t('Logs'); + const reproStepsHeader = vscode.l10n.t('Steps to reproduce'); + const genericPlaceholderContent = vscode.l10n.t('Please fill in this section'); + const problemDescriptionHeader = vscode.l10n.t('Description of the problem'); + const expectedBehaviorHeader = vscode.l10n.t('Expected behavior'); + const actualBehaviorHeader = vscode.l10n.t('Actual behavior'); + const logsHeader = vscode.l10n.t('Logs'); - const omniSharpHeader = l10n.t('OmniSharp'); - const omniSharpInstructions = l10n.t( + const omniSharpHeader = vscode.l10n.t('OmniSharp'); + const omniSharpInstructions = vscode.l10n.t( "To find the OmniSharp log, open VS Code's" + ' "Output" pane, then in the dropdown choose "OmniSharp Log".' ); - const razorHeader = l10n.t('Razor'); - const expandText = l10n.t('Expand'); - - const workspaceInfo = l10n.t('Workspace information'); - const razorDocument = l10n.t('Razor document'); - const projectedCSDocument = l10n.t('Projected CSharp document'); - const projectedHtmlDocument = l10n.t('Projected Html document'); - const machineInfo = l10n.t('Machine information'); - const razorVersion = l10n.t('Razor.VSCode version'); - const vscodeVersion = l10n.t('VSCode version'); - const extensionsLabel = l10n.t('Extensions'); + const razorHeader = vscode.l10n.t('Razor'); + const expandText = vscode.l10n.t('Expand'); + + const workspaceInfo = vscode.l10n.t('Workspace information'); + const razorDocument = vscode.l10n.t('Razor document'); + const projectedCSDocument = vscode.l10n.t('Projected CSharp document'); + const projectedHtmlDocument = vscode.l10n.t('Projected Html document'); + const machineInfo = vscode.l10n.t('Machine information'); + const razorVersion = vscode.l10n.t('Razor.VSCode version'); + const vscodeVersion = vscode.l10n.t('VSCode version'); + const extensionsLabel = vscode.l10n.t('Extensions'); return `## ${issueType}: ${defaultIssueType} @@ -181,7 +184,7 @@ ${extensionTable} } // Protected for testing - protected async getRazor(document: vscode.TextDocument) { + protected async getRazor(document: vscodeAdapter.TextDocument) { const content = document.getText(); return content; @@ -189,7 +192,7 @@ ${extensionTable} // Protected for testing protected async getProjectedCSharp(razorDocument: IRazorDocument) { - const projectedCSharpHeaderFooter = l10n.t('Projected CSharp as seen by extension'); + const projectedCSharpHeaderFooter = vscode.l10n.t('Projected CSharp as seen by extension'); let csharpContent = `////////////////////// ${projectedCSharpHeaderFooter} /////////////////////// ${razorDocument.csharpDocument.getContent()} @@ -197,7 +200,7 @@ ${razorDocument.csharpDocument.getContent()} ////////////////////// ${projectedCSharpHeaderFooter} ///////////////////////`; - const errorSuffix = l10n.t("Unable to resolve VSCode's version of CSharp"); + const errorSuffix = vscode.l10n.t("Unable to resolve VSCode's version of CSharp"); try { const csharpTextDocument = await this.vscodeApi.workspace.openTextDocument( razorDocument.csharpDocument.uri @@ -219,14 +222,14 @@ ${errorSuffix}`; // Protected for testing protected async getProjectedHtml(razorDocument: IRazorDocument) { - const projectedHTmlHeaderFooter = l10n.t('Projected Html as seen by extension'); + const projectedHTmlHeaderFooter = vscode.l10n.t('Projected Html as seen by extension'); let htmlContent = `////////////////////// ${projectedHTmlHeaderFooter} /////////////////////// ${razorDocument.htmlDocument.getContent()} ////////////////////// ${projectedHTmlHeaderFooter} ///////////////////////`; - const errorSuffix = l10n.t("Unable to resolve VSCode's version of Html"); + const errorSuffix = vscode.l10n.t("Unable to resolve VSCode's version of Html"); try { const htmlTextDocument = await this.vscodeApi.workspace.openTextDocument(razorDocument.htmlDocument.uri); if (htmlTextDocument) { @@ -248,14 +251,14 @@ ${errorSuffix}`; protected getExtensionVersion(): string { const extension = this.vscodeApi.extensions.getExtension(razorExtensionId); if (!extension) { - return l10n.t('Unable to find Razor extension version.'); + return vscode.l10n.t('Unable to find Razor extension version.'); } return extension.packageJSON.version; } // Protected for testing protected getInstalledExtensions() { - const extensions: Array' + - l10n.t( + vscode.l10n.t( 'Cannot start collecting Razor logs when {0} is set to {1}. Please set {0} to {2} and then reload your VSCode environment and re-run the report Razor issue command.', verbositySettingName, currentVerbositySettingValue, @@ -170,7 +171,7 @@ ${privacyAnchor} '
'; } - const title: string = l10n.t('Report a Razor issue'); + const title: string = vscode.l10n.t('Report a Razor issue'); this.panel.webview.html = ` diff --git a/src/razor/src/document/razorDocumentSynchronizer.ts b/src/razor/src/document/razorDocumentSynchronizer.ts index dfa140fd6..c466ea94a 100644 --- a/src/razor/src/document/razorDocumentSynchronizer.ts +++ b/src/razor/src/document/razorDocumentSynchronizer.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { CSharpProjectedDocumentContentProvider } from '../csharp/csharpProjectedDocumentContentProvider'; import { HtmlProjectedDocumentContentProvider } from '../html/htmlProjectedDocumentContentProvider'; import { IProjectedDocument } from '../projection/IProjectedDocument'; @@ -152,10 +151,10 @@ export class RazorDocumentSynchronizer { }); token.onCancellationRequested((reason) => { - context.cancel(l10n.t('Token cancellation requested: {0}', reason)); + context.cancel(vscode.l10n.t('Token cancellation requested: {0}', reason)); }); const timeoutId = setTimeout(() => { - context.cancel(l10n.t('Synchronization timed out')); + context.cancel(vscode.l10n.t('Synchronization timed out')); }, 2000); const context: SynchronizationContext = { projectedDocument, diff --git a/src/razor/src/html/htmlPreviewPanel.ts b/src/razor/src/html/htmlPreviewPanel.ts index ab8e53a52..82a1778f0 100644 --- a/src/razor/src/html/htmlPreviewPanel.ts +++ b/src/razor/src/html/htmlPreviewPanel.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { IRazorDocumentChangeEvent } from '../document/IRazorDocumentChangeEvent'; import { RazorDocumentChangeKind } from '../document/razorDocumentChangeKind'; import { RazorDocumentManager } from '../document/razorDocumentManager'; @@ -26,7 +25,7 @@ export class HtmlPreviewPanel { } else { this.panel = vscode.window.createWebviewPanel( HtmlPreviewPanel.viewType, - l10n.t('Razor HTML Preview'), + vscode.l10n.t('Razor HTML Preview'), vscode.ViewColumn.Two, { enableScripts: true, @@ -62,7 +61,7 @@ export class HtmlPreviewPanel { private attachToCurrentPanel() { if (!this.panel) { - vscode.window.showErrorMessage(l10n.t('Unexpected error when attaching to HTML preview window.')); + vscode.window.showErrorMessage(vscode.l10n.t('Unexpected error when attaching to HTML preview window.')); return; } @@ -74,7 +73,7 @@ export class HtmlPreviewPanel { } await vscode.env.clipboard.writeText(this.htmlContent); - vscode.window.showInformationMessage(l10n.t('Razor HTML copied to clipboard')); + vscode.window.showInformationMessage(vscode.l10n.t('Razor HTML copied to clipboard')); return; } }); @@ -101,10 +100,10 @@ export class HtmlPreviewPanel { let content = this.htmlContent ? this.htmlContent : ''; content = content.replace(/ diff --git a/src/razor/src/razorLanguageServerClient.ts b/src/razor/src/razorLanguageServerClient.ts index 4c318e8c8..e6479514a 100644 --- a/src/razor/src/razorLanguageServerClient.ts +++ b/src/razor/src/razorLanguageServerClient.ts @@ -5,7 +5,6 @@ import { EventEmitter } from 'events'; import * as vscode from 'vscode'; -import * as l10n from '@vscode/l10n'; import { RequestHandler, RequestType } from 'vscode-jsonrpc'; import { GenericNotificationHandler, InitializeResult, LanguageClientOptions, State } from 'vscode-languageclient'; import { LanguageClient, ServerOptions } from 'vscode-languageclient/node'; @@ -94,7 +93,7 @@ export class RazorLanguageServerClient implements vscode.Disposable { if (restartCount === 5) { // Timeout, the built-in LanguageClient retries a hardcoded 5 times before giving up. We tie into that // and then given up on starting the language server if we can't start by then. - reject(l10n.t('Server failed to start after retrying 5 times.')); + reject(vscode.l10n.t('Server failed to start after retrying 5 times.')); } } else if (stateChangeEvent.newState === State.Running) { restartCount = 0; @@ -124,7 +123,7 @@ export class RazorLanguageServerClient implements vscode.Disposable { didChangeStateDisposable.dispose(); } catch (error) { vscode.window.showErrorMessage( - l10n.t( + vscode.l10n.t( "Razor Language Server failed to start unexpectedly, please check the 'Razor Log' and report an issue." ) ); @@ -138,7 +137,7 @@ export class RazorLanguageServerClient implements vscode.Disposable { public async sendRequest(method: RequestType
, handler: RequestHandler
) {
if (!this.isStarted) {
- throw new Error(l10n.t('Tried to bind on request logic while server is not started.'));
+ throw new Error(vscode.l10n.t('Tried to bind on request logic while server is not started.'));
}
this.client.onRequest(method, handler);
@@ -154,7 +153,7 @@ export class RazorLanguageServerClient implements vscode.Disposable {
public onNotification(method: string, handler: GenericNotificationHandler) {
if (!this.isStarted) {
- throw new Error(l10n.t('Tried to bind on notification logic while server is not started.'));
+ throw new Error(vscode.l10n.t('Tried to bind on notification logic while server is not started.'));
}
this.client.onNotification(method, handler);
@@ -178,7 +177,7 @@ export class RazorLanguageServerClient implements vscode.Disposable {
});
if (!this.startHandle) {
- reject(new Error(l10n.t('Cannot stop Razor Language Server as it is already stopped.')));
+ reject(new Error(vscode.l10n.t('Cannot stop Razor Language Server as it is already stopped.')));
}
this.logger.logMessage('Stopping Razor Language Server.');
@@ -193,7 +192,7 @@ export class RazorLanguageServerClient implements vscode.Disposable {
resolve();
} catch (error) {
vscode.window.showErrorMessage(
- l10n.t(
+ vscode.l10n.t(
"Razor Language Server failed to stop correctly, please check the 'Razor Log' and report an issue."
)
);
diff --git a/src/razor/src/razorLanguageServerOptionsResolver.ts b/src/razor/src/razorLanguageServerOptionsResolver.ts
index 76ea25b5f..b9423f5b8 100644
--- a/src/razor/src/razorLanguageServerOptionsResolver.ts
+++ b/src/razor/src/razorLanguageServerOptionsResolver.ts
@@ -6,15 +6,15 @@
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
-import * as vscode from './vscodeAdapter';
-import * as l10n from '@vscode/l10n';
+import * as vscodeAdapter from './vscodeAdapter';
+import * as vscode from 'vscode';
import { RazorLanguageServerOptions } from './razorLanguageServerOptions';
import { RazorLogger } from './razorLogger';
import { Trace } from './trace';
import { getCSharpDevKit } from '../../utils/getCSharpDevKit';
export function resolveRazorLanguageServerOptions(
- vscodeApi: vscode.api,
+ vscodeApi: vscodeAdapter.api,
languageServerDir: string,
trace: Trace,
logger: RazorLogger
@@ -47,7 +47,7 @@ function findLanguageServerExecutable(withinDir: string) {
if (!fs.existsSync(dllPath)) {
throw new Error(
- l10n.t("Could not find Razor Language Server executable within directory '{0}'", withinDir)
+ vscode.l10n.t("Could not find Razor Language Server executable within directory '{0}'", withinDir)
);
}
diff --git a/src/razor/src/razorLanguageServerTraceResolver.ts b/src/razor/src/razorLanguageServerTraceResolver.ts
index a8dd67dbc..a8268770c 100644
--- a/src/razor/src/razorLanguageServerTraceResolver.ts
+++ b/src/razor/src/razorLanguageServerTraceResolver.ts
@@ -4,10 +4,10 @@
*--------------------------------------------------------------------------------------------*/
import { Trace } from './trace';
-import * as vscode from './vscodeAdapter';
-import * as l10n from '@vscode/l10n';
+import * as vscodeAdapter from './vscodeAdapter';
+import * as vscode from 'vscode';
-export function resolveRazorLanguageServerTrace(vscodeApi: vscode.api) {
+export function resolveRazorLanguageServerTrace(vscodeApi: vscodeAdapter.api) {
const languageConfig = vscodeApi.workspace.getConfiguration('razor');
const traceString = languageConfig.get