Merge branch 'main' into main

This commit is contained in:
Daniel Imms
2023-02-28 06:50:45 -08:00
committed by GitHub
459 changed files with 9723 additions and 7198 deletions
+2 -2
View File
@@ -105,7 +105,7 @@
"image-preview": {"assign": ["mjbvz"]},
"inlay-hints": {"assign": ["jrieken", "hediet"]},
"inline-completions": {"assign": ["hediet"]},
"install-update": {"assign": ["joaomoreno"]},
"install-update": {"assign": ["joaomoreno"], "accuracy": 0.85},
"intellisense-config": {"assign": ["rzhao271"]},
"interactive-playground": {"assign": ["chrmarti"]},
"interactive-window": {"assign": ["amunger", "rebornix"]},
@@ -210,7 +210,7 @@
"shared-process": {"assign": []},
"simple-file-dialog": {"assign": ["alexr00"]},
"smart-select": {"assign": ["jrieken"]},
"snap": {"assign": ["joaomoreno"]},
"snap": {"assign": ["deepak1556"]},
"snippets": {"assign": ["jrieken"]},
"splitview-widget": {"assign": ["joaomoreno"]},
"ssh": {"assign": ["eleanorjboyd"]},
+1 -1
View File
@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"February 2023\""
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"March 2023\""
},
{
"kind": 1,
+1 -1
View File
@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "// list of repos we work in\r\n$repos=repo:microsoft/vscode repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-unpkg repo:microsoft/vscode-references-view repo:microsoft/vscode-anycode repo:microsoft/vscode-hexeditor repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-livepreview repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remote-repositories-github repo:microsoft/monaco-editor repo:microsoft/vscode-vsce repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-l10n repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-markdown-languageservice\r\n\r\n// current milestone name\r\n$milestone=milestone:\"February 2023\""
"value": "// list of repos we work in\n$repos=repo:microsoft/vscode repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-unpkg repo:microsoft/vscode-references-view repo:microsoft/vscode-anycode repo:microsoft/vscode-hexeditor repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-livepreview repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remote-repositories-github repo:microsoft/monaco-editor repo:microsoft/vscode-vsce repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-l10n repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-markdown-languageservice\n\n// current milestone name\n$milestone=milestone:\"March 2023\""
},
{
"kind": 1,
+2
View File
@@ -24,10 +24,12 @@
"out-build/**": true,
"out-vscode/**": true,
"i18n/**": true,
"extensions/**/dist/**": true,
"extensions/**/out/**": true,
"test/smoke/out/**": true,
"test/automation/out/**": true,
"test/integration/browser/out/**": true,
"src/vs/base/test/common/filters.perf.data.js": true,
"src/vs/base/test/node/uri.test.data.txt": true,
"src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true,
"src/vs/editor/test/node/diffing/fixtures/**": true,
+11 -2
View File
@@ -260,9 +260,18 @@
// Used for monaco editor playground launch config
"label": "Launch Http Server",
"type": "shell",
"command": "node_modules/.bin/http-server --cors --port 5001 -a 127.0.0.1 -s -c-1",
"command": "node_modules/.bin/http-server --cors --port 5001 -a 127.0.0.1 -c-1 -s",
"isBackground": true,
"problemMatcher": [],
"problemMatcher": {
"pattern": {
"regexp": ""
},
"background": {
"activeOnStart": true,
"beginsPattern": "never match",
"endsPattern": ".*"
}
},
"dependsOn": [
"Core - Build"
]
+2 -2
View File
@@ -76,7 +76,7 @@ function darwinBundleDocumentTypes(types, icon) {
});
}
exports.config = {
version: product.electronRepository ? '19.1.10' : util.getElectronVersion(),
version: product.electronRepository ? '19.1.11' : util.getElectronVersion(),
productAppName: product.nameLong,
companyName: 'Microsoft Corporation',
copyright: 'Copyright (C) 2022 Microsoft. All rights reserved',
@@ -193,7 +193,7 @@ function getElectron(arch) {
};
}
async function main(arch = process.arch) {
const version = product.electronRepository ? '19.1.10' : util.getElectronVersion();
const version = product.electronRepository ? '19.1.11' : util.getElectronVersion();
const electronPath = path.join(root, '.build', 'electron');
const versionFile = path.join(electronPath, 'version');
const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
+2 -2
View File
@@ -91,7 +91,7 @@ function darwinBundleDocumentTypes(types: { [name: string]: string | string[] },
}
export const config = {
version: product.electronRepository ? '19.1.10' : util.getElectronVersion(),
version: product.electronRepository ? '19.1.11' : util.getElectronVersion(),
productAppName: product.nameLong,
companyName: 'Microsoft Corporation',
copyright: 'Copyright (C) 2022 Microsoft. All rights reserved',
@@ -212,7 +212,7 @@ function getElectron(arch: string): () => NodeJS.ReadWriteStream {
}
async function main(arch = process.arch): Promise<void> {
const version = product.electronRepository ? '19.1.10' : util.getElectronVersion();
const version = product.electronRepository ? '19.1.11' : util.getElectronVersion();
const electronPath = path.join(root, '.build', 'electron');
const versionFile = path.join(electronPath, 'version');
const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
File diff suppressed because one or more lines are too long
+3 -1
View File
@@ -68,7 +68,9 @@ const NATIVE_TYPES = [
'INativeEnvironmentService',
'AbstractNativeEnvironmentService',
'INativeWindowConfiguration',
'ICommonNativeHostService'
'ICommonNativeHostService',
'INativeHostService',
'IMainProcessService'
];
const RULES: IRule[] = [
+1 -1
View File
@@ -6,4 +6,4 @@ AddToPath=Agregar a PATH (disponible despu
RunAfter=Ejecutar %1 después de la instalación
Other=Otros:
SourceFile=Archivo de origen %1
OpenWithCodeContextMenu=Abrir &con %1
OpenWithCodeContextMenu=Abrir &con %1
+2 -2
View File
@@ -6,7 +6,7 @@
"git": {
"name": "chromium",
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
"commitHash": "a8a8309404d39efa9c624d7aee0e27562721e522"
"commitHash": "61305fe71c4357662f161ba689fd9a1828d5e4f7"
}
},
"licenseDetail": [
@@ -40,7 +40,7 @@
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
],
"isOnlyProductionDependency": true,
"version": "102.0.5005.194"
"version": "102.0.5005.196"
},
{
"component": {
+2 -2
View File
@@ -6,11 +6,11 @@
"git": {
"name": "jeff-hykin/better-cpp-syntax",
"repositoryUrl": "https://github.com/jeff-hykin/better-cpp-syntax",
"commitHash": "e3f51cca7683d2b2b086f889bff586bf9d85eb1f"
"commitHash": "7aef15d9203f0dfeaf075f0673ab3ab382dfb0b1"
}
},
"license": "MIT",
"version": "1.17.3",
"version": "1.17.4",
"description": "The original JSON grammars were derived from https://github.com/atom/language-c which was originally converted from the C TextMate bundle https://github.com/textmate/c.tmbundle."
},
{
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -994,7 +994,7 @@
]
},
"dependencies": {
"vscode-languageclient": "^8.1.0-next.2",
"vscode-languageclient": "^8.1.0",
"vscode-uri": "^3.0.7"
},
"devDependencies": {
@@ -11,8 +11,8 @@
"browser": "./dist/browser/cssServerMain",
"dependencies": {
"@vscode/l10n": "^0.0.11",
"vscode-css-languageservice": "^6.2.3",
"vscode-languageserver": "^8.1.0-next.6",
"vscode-css-languageservice": "^6.2.4",
"vscode-languageserver": "^8.1.0",
"vscode-uri": "^3.0.7"
},
"devDependencies": {
@@ -17,50 +17,45 @@
resolved "https://registry.yarnpkg.com/@vscode/l10n/-/l10n-0.0.11.tgz#325d7beb2cfb87162bc624d16c4d546de6a73b72"
integrity sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==
vscode-css-languageservice@^6.2.3:
version "6.2.3"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-6.2.3.tgz#6c1e6104e77f1fb729eeea5cd2f81f3b800d87ff"
integrity sha512-EAyhyIVHpEaf+GjtI+tVe7SekdoANfG0aubnspsQwak3Qkimn/97FpAufNyXk636ngW05pjNKAR9zyTCzo6avQ==
vscode-css-languageservice@^6.2.4:
version "6.2.4"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-6.2.4.tgz#d03ca783ad922cb903602ca1478f5161e5e5de54"
integrity sha512-9UG0s3Ss8rbaaPZL1AkGzdjrGY8F+P+Ne9snsrvD9gxltDGhsn8C2dQpqQewHrMW37OvlqJoI8sUU2AWDb+qNw==
dependencies:
"@vscode/l10n" "^0.0.11"
vscode-languageserver-textdocument "^1.0.8"
vscode-languageserver-types "^3.17.2"
vscode-languageserver-types "^3.17.3"
vscode-uri "^3.0.7"
vscode-jsonrpc@8.1.0-next.7:
version "8.1.0-next.7"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0-next.7.tgz#4ecfada9866f677da9a5915abfceb7b7c90962f6"
integrity sha512-UJlY2e4wnI+GkaNYM2TERqrNvTe0XScny7lUA4f+F+z6XI5pDJnHj6udXiGJofT/tX57d8C6fnlfgrCfF6aptQ==
vscode-jsonrpc@8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94"
integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==
vscode-languageserver-protocol@3.17.3-next.6:
version "3.17.3-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3-next.6.tgz#e43dc5dc0e730e3a4d1cb523cce85cd34b6fc64d"
integrity sha512-UCL2DaAOCzGFZKIAJ4wOS9BXVbeARL8GxXTW7ANnAXJg03IytNmOJcmguL6l+ht4CCdKNQbnRSJB4dh8cgDyJw==
vscode-languageserver-protocol@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57"
integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==
dependencies:
vscode-jsonrpc "8.1.0-next.7"
vscode-languageserver-types "3.17.3-next.3"
vscode-jsonrpc "8.1.0"
vscode-languageserver-types "3.17.3"
vscode-languageserver-textdocument@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz#9eae94509cbd945ea44bca8dcfe4bb0c15bb3ac0"
integrity sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==
vscode-languageserver-types@3.17.3-next.3:
version "3.17.3-next.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3-next.3.tgz#fc909d37d4200126d74583f2114e53ace27a3e04"
integrity sha512-R36Wi5sHoVc/PsAva0QGoEgw+LRCXPDKcdjFfgoVwrRdrFOdYUkvp5G4NvrPUsVT2f2qS/bSs6QiRxyjNkcR9A==
vscode-languageserver-types@3.17.3, vscode-languageserver-types@^3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
vscode-languageserver-types@^3.17.2:
version "3.17.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2"
integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==
vscode-languageserver@^8.1.0-next.6:
version "8.1.0-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.1.0-next.6.tgz#32fe5042b92b58b6f2c3c8cba0ddc77153ad47a7"
integrity sha512-YSj9fKN0FtVW95RKjcy8UheODK4YosqiZUkEbAgJJ0uMxR1Om1dhD/+QwYUKfJX/u8KLS/qFroMNVFHoPoc2hg==
vscode-languageserver@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz#5024253718915d84576ce6662dd46a791498d827"
integrity sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==
dependencies:
vscode-languageserver-protocol "3.17.3-next.6"
vscode-languageserver-protocol "3.17.3"
vscode-uri@^3.0.7:
version "3.0.7"
+19 -19
View File
@@ -40,32 +40,32 @@ semver@^7.3.7:
dependencies:
lru-cache "^6.0.0"
vscode-jsonrpc@8.1.0-next.3:
version "8.1.0-next.3"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0-next.3.tgz#964c91a3bfd1949b4c3da7136ba46b48b42991ad"
integrity sha512-4eDeAnkWFKFTmT7tUR2wDngNAuwGHvV7yPCzPWGudBWJOoXaPQnwmiQChoj+umH1y2NR+MdBtx49xlZA7FoLRQ==
vscode-jsonrpc@8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94"
integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==
vscode-languageclient@^8.1.0-next.2:
version "8.1.0-next.2"
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0-next.2.tgz#12a248299d23e48cb9d316129bf9ba0592caa533"
integrity sha512-ZGCQaqXyT7Y4H68zDQ/8XnNzo9tlUxuarJa0hT5EncAC0vmVAxLvhbsz2iSlWx3j6UZUgBM0b6UZtjpzkqr3tQ==
vscode-languageclient@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz#3e67d5d841481ac66ddbdaa55b4118742f6a9f3f"
integrity sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==
dependencies:
minimatch "^5.1.0"
semver "^7.3.7"
vscode-languageserver-protocol "3.17.3-next.2"
vscode-languageserver-protocol "3.17.3"
vscode-languageserver-protocol@3.17.3-next.2:
version "3.17.3-next.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3-next.2.tgz#e906471899b9ed2ae1139f95592e0e5c7580bf0f"
integrity sha512-T+vSRHgApc1xCsOUJ/M7UN/tN4aINvc3FYJ6P3vAhvv0i4jZZewFMEonZB76B94TiY6z4eScgaG6m73gTgnyyw==
vscode-languageserver-protocol@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57"
integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==
dependencies:
vscode-jsonrpc "8.1.0-next.3"
vscode-languageserver-types "3.17.2"
vscode-jsonrpc "8.1.0"
vscode-languageserver-types "3.17.3"
vscode-languageserver-types@3.17.2:
version "3.17.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2"
integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==
vscode-languageserver-types@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
vscode-uri@^3.0.7:
version "3.0.7"
+1 -1
View File
@@ -6,7 +6,7 @@
"git": {
"name": "dart-lang/dart-syntax-highlight",
"repositoryUrl": "https://github.com/dart-lang/dart-syntax-highlight",
"commitHash": "f85ce5cce9ec032422799e19ecf2247499324bc5"
"commitHash": "b6324bfae2058bc29bb01af6bd2011c3eb35545d"
}
},
"licenseDetail": [
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/dart-lang/dart-syntax-highlight/commit/f85ce5cce9ec032422799e19ecf2247499324bc5",
"version": "https://github.com/dart-lang/dart-syntax-highlight/commit/b6324bfae2058bc29bb01af6bd2011c3eb35545d",
"name": "Dart",
"scopeName": "source.dart",
"patterns": [
@@ -259,7 +259,7 @@
"function-identifier": {
"patterns": [
{
"match": "([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?[!?]?(\\(|\\s+=>)",
"match": "([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\(",
"captures": {
"1": {
"name": "entity.name.function.dart"
@@ -313,7 +313,7 @@
},
{
"name": "keyword.control.dart",
"match": "(?<!\\$)\\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\\b(?!\\$)"
"match": "(?<!\\$)\\b(break|case|continue|default|do|else|for|if|in|return|switch|while|when)\\b(?!\\$)"
},
{
"name": "keyword.control.dart",
@@ -329,7 +329,7 @@
},
{
"name": "keyword.declaration.dart",
"match": "(?<!\\$)\\b(abstract|class|enum|extends|extension|external|factory|implements|get(?!\\()|mixin|native|operator|set(?!\\()|typedef|with|covariant)\\b(?!\\$)"
"match": "(?<!\\$)\\b(abstract|sealed|base|interface|class|enum|extends|extension|external|factory|implements|get(?!\\()|mixin|native|operator|set(?!\\()|typedef|with|covariant)\\b(?!\\$)"
},
{
"name": "storage.modifier.dart",
@@ -10,8 +10,9 @@ import { URL } from 'url';
import { parseTree, findNodeAtLocation, Node as JsonNode, getNodeValue } from 'jsonc-parser';
import * as MarkdownItType from 'markdown-it';
import { languages, workspace, Disposable, TextDocument, Uri, Diagnostic, Range, DiagnosticSeverity, Position, env, l10n } from 'vscode';
import { commands, languages, workspace, Disposable, TextDocument, Uri, Diagnostic, Range, DiagnosticSeverity, Position, env, l10n } from 'vscode';
import { INormalizedVersion, normalizeVersion, parseVersion } from './extensionEngineValidation';
import { JsonStringScanner } from './jsonReconstruct';
const product = JSON.parse(fs.readFileSync(path.join(env.appRoot, 'product.json'), { encoding: 'utf-8' }));
const allowedBadgeProviders: string[] = (product.extensionAllowedBadgeProviders || []).map((s: string) => s.toLowerCase());
@@ -36,6 +37,7 @@ const implicitActivationEvent = l10n.t("This activation event cannot be explicit
const redundantImplicitActivationEvent = l10n.t("This activation event can be removed as VS Code generates these automatically from your package.json contribution declarations.");
const bumpEngineForImplicitActivationEvents = l10n.t("This activation event can be removed for extensions targeting engine version ^1.75 as VS Code will generate these automatically from your package.json contribution declarations.");
const starActivation = l10n.t("Using '*' activation is usually a bad idea as it impacts performance.");
const parsingErrorHeader = l10n.t("Error parsing the when-clause:");
enum Context {
ICON,
@@ -110,15 +112,17 @@ export class ExtensionLinter {
}
private async lint() {
this.lintPackageJson();
await this.lintReadme();
await Promise.all([
this.lintPackageJson(),
this.lintReadme()
]);
}
private lintPackageJson() {
this.packageJsonQ.forEach(document => {
private async lintPackageJson() {
for (const document of Array.from(this.packageJsonQ)) {
this.packageJsonQ.delete(document);
if (document.isClosed) {
return;
continue;
}
const diagnostics: Diagnostic[] = [];
@@ -190,16 +194,88 @@ export class ExtensionLinter {
}
}
}
const whenClauseLinting = await this.lintWhenClauses(findNodeAtLocation(tree, ['contributes']), document);
diagnostics.push(...whenClauseLinting);
}
this.diagnosticsCollection.set(document.uri, diagnostics);
});
}
}
/** lints `when` and `enablement` clauses */
private async lintWhenClauses(contributesNode: JsonNode | undefined, document: TextDocument): Promise<Diagnostic[]> {
if (!contributesNode) {
return [];
}
const whenClauses: JsonNode[] = [];
function findWhens(node: JsonNode | undefined, clauseName: string) {
if (node) {
switch (node.type) {
case 'property':
if (node.children && node.children.length === 2) {
const key = node.children[0];
const value = node.children[1];
switch (value.type) {
case 'string':
if (key.value === clauseName && typeof value.value === 'string' /* careful: `.value` MUST be a string 1) because a when/enablement clause is string; so also, type cast to string below is safe */) {
whenClauses.push(value);
}
case 'object':
case 'array':
findWhens(value, clauseName);
}
}
break;
case 'object':
case 'array':
if (node.children) {
node.children.forEach(n => findWhens(n, clauseName));
}
}
}
}
[
findNodeAtLocation(contributesNode, ['menus']),
findNodeAtLocation(contributesNode, ['views']),
findNodeAtLocation(contributesNode, ['viewsWelcome']),
findNodeAtLocation(contributesNode, ['keybindings']),
].forEach(n => findWhens(n, 'when'));
findWhens(findNodeAtLocation(contributesNode, ['commands']), 'enablement');
const parseResults = await commands.executeCommand<{ errorMessage: string; offset: number; length: number }[][]>('_validateWhenClauses', whenClauses.map(w => w.value as string /* we make sure to capture only if `w.value` is string above */));
const diagnostics: Diagnostic[] = [];
for (let i = 0; i < parseResults.length; ++i) {
const whenClauseJSONNode = whenClauses[i];
const jsonStringScanner = new JsonStringScanner(document.getText(), whenClauseJSONNode.offset + 1);
for (const error of parseResults[i]) {
const realOffset = jsonStringScanner.getOffsetInEncoded(error.offset);
const realOffsetEnd = jsonStringScanner.getOffsetInEncoded(error.offset + error.length);
const start = document.positionAt(realOffset /* +1 to account for the quote (I think) */);
const end = document.positionAt(realOffsetEnd);
const errMsg = `${parsingErrorHeader}\n\n${error.errorMessage}`;
const diagnostic = new Diagnostic(new Range(start, end), errMsg, DiagnosticSeverity.Error);
diagnostic.code = {
value: 'See docs',
target: Uri.parse('https://code.visualstudio.com/api/references/when-clause-contexts'),
};
diagnostics.push(diagnostic);
}
}
return diagnostics;
}
private async lintReadme() {
for (const document of Array.from(this.readmeQ)) {
for (const document of this.readmeQ) {
this.readmeQ.delete(document);
if (document.isClosed) {
return;
continue;
}
const folder = this.getUriFolder(document.uri);
@@ -346,8 +422,8 @@ export class ExtensionLinter {
}
const file = folder.with({ path: path.posix.join(folder.path, 'package.json') });
try {
const document = await workspace.openTextDocument(file);
return parseTree(document.getText());
const fileContents = await workspace.fs.readFile(file); // #174888
return parseTree(Buffer.from(fileContents).toString('utf-8'));
} catch (err) {
return undefined;
}
@@ -0,0 +1,183 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/**
* This class has a very specific purpose:
*
* It can return convert offset within a decoded JSON string to offset within the encoded JSON string.
*/
export class JsonStringScanner {
private resultChars = 0;
private pos = 0;
/**
*
* @param text the encoded JSON string
* @param pos must not include ", ie must be `stringJSONNode.offset + 1`
*/
constructor(private readonly text: string, initialPos: number /* offset within `text` */) {
this.pos = initialPos;
}
// note that we don't do bound checks here, because we know that the offset is within the string
getOffsetInEncoded(offsetDecoded: number) {
let start = this.pos;
while (true) {
if (this.resultChars > offsetDecoded) {
return start;
}
const ch = this.text.charCodeAt(this.pos);
if (ch === CharacterCodes.backslash) {
start = this.pos;
this.pos++;
const ch2 = this.text.charCodeAt(this.pos++);
switch (ch2) {
case CharacterCodes.doubleQuote:
case CharacterCodes.backslash:
case CharacterCodes.slash:
case CharacterCodes.b:
case CharacterCodes.f:
case CharacterCodes.n:
case CharacterCodes.r:
case CharacterCodes.t:
this.resultChars += 1;
break;
case CharacterCodes.u: {
const ch3 = this.scanHexDigits(4, true);
if (ch3 >= 0) {
this.resultChars += String.fromCharCode(ch3).length;
}
break;
}
}
continue;
}
start = this.pos;
this.pos++;
this.resultChars++;
}
}
scanHexDigits(count: number, exact?: boolean): number {
let digits = 0;
let value = 0;
while (digits < count || !exact) {
const ch = this.text.charCodeAt(this.pos);
if (ch >= CharacterCodes._0 && ch <= CharacterCodes._9) {
value = value * 16 + ch - CharacterCodes._0;
}
else if (ch >= CharacterCodes.A && ch <= CharacterCodes.F) {
value = value * 16 + ch - CharacterCodes.A + 10;
}
else if (ch >= CharacterCodes.a && ch <= CharacterCodes.f) {
value = value * 16 + ch - CharacterCodes.a + 10;
}
else {
break;
}
this.pos++;
digits++;
}
if (digits < count) {
value = -1;
}
return value;
}
}
const enum CharacterCodes {
lineFeed = 0x0A, // \n
carriageReturn = 0x0D, // \r
space = 0x0020, // " "
_0 = 0x30,
_1 = 0x31,
_2 = 0x32,
_3 = 0x33,
_4 = 0x34,
_5 = 0x35,
_6 = 0x36,
_7 = 0x37,
_8 = 0x38,
_9 = 0x39,
a = 0x61,
b = 0x62,
c = 0x63,
d = 0x64,
e = 0x65,
f = 0x66,
g = 0x67,
h = 0x68,
i = 0x69,
j = 0x6A,
k = 0x6B,
l = 0x6C,
m = 0x6D,
n = 0x6E,
o = 0x6F,
p = 0x70,
q = 0x71,
r = 0x72,
s = 0x73,
t = 0x74,
u = 0x75,
v = 0x76,
w = 0x77,
x = 0x78,
y = 0x79,
z = 0x7A,
A = 0x41,
B = 0x42,
C = 0x43,
D = 0x44,
E = 0x45,
F = 0x46,
G = 0x47,
H = 0x48,
I = 0x49,
J = 0x4A,
K = 0x4B,
L = 0x4C,
M = 0x4D,
N = 0x4E,
O = 0x4F,
P = 0x50,
Q = 0x51,
R = 0x52,
S = 0x53,
T = 0x54,
U = 0x55,
V = 0x56,
W = 0x57,
X = 0x58,
Y = 0x59,
Z = 0x5a,
asterisk = 0x2A, // *
backslash = 0x5C, // \
closeBrace = 0x7D, // }
closeBracket = 0x5D, // ]
colon = 0x3A, // :
comma = 0x2C, // ,
dot = 0x2E, // .
doubleQuote = 0x22, // "
minus = 0x2D, // -
openBrace = 0x7B, // {
openBracket = 0x5B, // [
plus = 0x2B, // +
slash = 0x2F, // /
formFeed = 0x0C, // \f
tab = 0x09, // \t
}
+1 -1
View File
@@ -71,4 +71,4 @@
}
],
"version": 1
}
}
+1 -1
View File
@@ -17,7 +17,7 @@ function getIPCHandlePath(id: string): string {
return `\\\\.\\pipe\\vscode-git-${id}-sock`;
}
if (process.env['XDG_RUNTIME_DIR']) {
if (process.platform !== 'darwin' && process.env['XDG_RUNTIME_DIR']) {
return path.join(process.env['XDG_RUNTIME_DIR'] as string, `vscode-git-${id}.sock`);
}
@@ -594,6 +594,13 @@ export class GitHubServer implements IGitHubServer {
return;
}
/* __GDPR__
"session" : {
"owner": "TylerLeonhardt",
"isEdu": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"isManaged": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this._telemetryReporter.sendTelemetryEvent('session', {
isEdu: edu ?? 'unknown',
isManaged: managed ?? 'unknown'
+2 -1
View File
@@ -54,7 +54,8 @@
"command": "github.openOnVscodeDev",
"when": "github.hasGitHubRepo",
"qualifiedName": "Continue Working in vscode.dev",
"remoteGroup": "virtualfs_43_file_0_web@0"
"category": "Remote Repositories",
"remoteGroup": "virtualfs_44_vscode-vfs_2_web@2"
}
],
"menus": {
@@ -258,8 +258,8 @@
]
},
"dependencies": {
"@vscode/extension-telemetry": "^0.7.4-preview",
"vscode-languageclient": "^8.1.0-next.2",
"@vscode/extension-telemetry": "^0.7.5",
"vscode-languageclient": "^8.1.0",
"vscode-uri": "^3.0.7"
},
"devDependencies": {
@@ -10,9 +10,9 @@
"main": "./out/node/htmlServerMain",
"dependencies": {
"@vscode/l10n": "^0.0.11",
"vscode-css-languageservice": "^6.2.3",
"vscode-css-languageservice": "^6.2.4",
"vscode-html-languageservice": "^5.0.4",
"vscode-languageserver": "^8.1.0-next.6",
"vscode-languageserver": "^8.1.0",
"vscode-languageserver-textdocument": "^1.0.8",
"vscode-uri": "^3.0.7"
},
@@ -17,14 +17,14 @@
resolved "https://registry.yarnpkg.com/@vscode/l10n/-/l10n-0.0.11.tgz#325d7beb2cfb87162bc624d16c4d546de6a73b72"
integrity sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==
vscode-css-languageservice@^6.2.3:
version "6.2.3"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-6.2.3.tgz#6c1e6104e77f1fb729eeea5cd2f81f3b800d87ff"
integrity sha512-EAyhyIVHpEaf+GjtI+tVe7SekdoANfG0aubnspsQwak3Qkimn/97FpAufNyXk636ngW05pjNKAR9zyTCzo6avQ==
vscode-css-languageservice@^6.2.4:
version "6.2.4"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-6.2.4.tgz#d03ca783ad922cb903602ca1478f5161e5e5de54"
integrity sha512-9UG0s3Ss8rbaaPZL1AkGzdjrGY8F+P+Ne9snsrvD9gxltDGhsn8C2dQpqQewHrMW37OvlqJoI8sUU2AWDb+qNw==
dependencies:
"@vscode/l10n" "^0.0.11"
vscode-languageserver-textdocument "^1.0.8"
vscode-languageserver-types "^3.17.2"
vscode-languageserver-types "^3.17.3"
vscode-uri "^3.0.7"
vscode-html-languageservice@^5.0.4:
@@ -37,40 +37,40 @@ vscode-html-languageservice@^5.0.4:
vscode-languageserver-types "^3.17.2"
vscode-uri "^3.0.7"
vscode-jsonrpc@8.1.0-next.7:
version "8.1.0-next.7"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0-next.7.tgz#4ecfada9866f677da9a5915abfceb7b7c90962f6"
integrity sha512-UJlY2e4wnI+GkaNYM2TERqrNvTe0XScny7lUA4f+F+z6XI5pDJnHj6udXiGJofT/tX57d8C6fnlfgrCfF6aptQ==
vscode-jsonrpc@8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94"
integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==
vscode-languageserver-protocol@3.17.3-next.6:
version "3.17.3-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3-next.6.tgz#e43dc5dc0e730e3a4d1cb523cce85cd34b6fc64d"
integrity sha512-UCL2DaAOCzGFZKIAJ4wOS9BXVbeARL8GxXTW7ANnAXJg03IytNmOJcmguL6l+ht4CCdKNQbnRSJB4dh8cgDyJw==
vscode-languageserver-protocol@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57"
integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==
dependencies:
vscode-jsonrpc "8.1.0-next.7"
vscode-languageserver-types "3.17.3-next.3"
vscode-jsonrpc "8.1.0"
vscode-languageserver-types "3.17.3"
vscode-languageserver-textdocument@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz#9eae94509cbd945ea44bca8dcfe4bb0c15bb3ac0"
integrity sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==
vscode-languageserver-types@3.17.3-next.3:
version "3.17.3-next.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3-next.3.tgz#fc909d37d4200126d74583f2114e53ace27a3e04"
integrity sha512-R36Wi5sHoVc/PsAva0QGoEgw+LRCXPDKcdjFfgoVwrRdrFOdYUkvp5G4NvrPUsVT2f2qS/bSs6QiRxyjNkcR9A==
vscode-languageserver-types@3.17.3, vscode-languageserver-types@^3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
vscode-languageserver-types@^3.17.2:
version "3.17.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2"
integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==
vscode-languageserver@^8.1.0-next.6:
version "8.1.0-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.1.0-next.6.tgz#32fe5042b92b58b6f2c3c8cba0ddc77153ad47a7"
integrity sha512-YSj9fKN0FtVW95RKjcy8UheODK4YosqiZUkEbAgJJ0uMxR1Om1dhD/+QwYUKfJX/u8KLS/qFroMNVFHoPoc2hg==
vscode-languageserver@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz#5024253718915d84576ce6662dd46a791498d827"
integrity sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==
dependencies:
vscode-languageserver-protocol "3.17.3-next.6"
vscode-languageserver-protocol "3.17.3"
vscode-uri@^3.0.7:
version "3.0.7"
+85 -174
View File
@@ -9,7 +9,7 @@
dependencies:
tslib "^2.2.0"
"@azure/core-auth@^1.3.0":
"@azure/core-auth@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.4.0.tgz#6fa9661c1705857820dbc216df5ba5665ac36a9e"
integrity sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==
@@ -17,36 +17,30 @@
"@azure/abort-controller" "^1.0.0"
tslib "^2.2.0"
"@azure/core-http@^2.2.3":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.3.0.tgz#fb96de9a96923c186de15127472cb8e177f7158f"
integrity sha512-Gikj2QO9W41rw7yiKWi2Q2OcVcukt+ux7ZZeFy4ilC/0b1Wcr0rjseZh9bqJ3NI9+h78Hix34ZjEg316iHjbTA==
"@azure/core-rest-pipeline@^1.10.0":
version "1.10.1"
resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz#348290847ca31b9eecf9cf5de7519aaccdd30968"
integrity sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==
dependencies:
"@azure/abort-controller" "^1.0.0"
"@azure/core-auth" "^1.3.0"
"@azure/core-tracing" "1.0.0-preview.13"
"@azure/core-util" "^1.1.1"
"@azure/core-auth" "^1.4.0"
"@azure/core-tracing" "^1.0.1"
"@azure/core-util" "^1.0.0"
"@azure/logger" "^1.0.0"
"@types/node-fetch" "^2.5.0"
"@types/tunnel" "^0.0.3"
form-data "^4.0.0"
node-fetch "^2.6.7"
process "^0.11.10"
tough-cookie "^4.0.0"
http-proxy-agent "^5.0.0"
https-proxy-agent "^5.0.0"
tslib "^2.2.0"
tunnel "^0.0.6"
uuid "^8.3.0"
xml2js "^0.4.19"
"@azure/core-tracing@1.0.0-preview.13":
version "1.0.0-preview.13"
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
"@azure/core-tracing@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.1.tgz#352a38cbea438c4a83c86b314f48017d70ba9503"
integrity sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==
dependencies:
"@opentelemetry/api" "^1.0.1"
tslib "^2.2.0"
"@azure/core-util@^1.1.1":
"@azure/core-util@^1.0.0":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.1.1.tgz#8f87b3dd468795df0f0849d9f096c3e7b29452c1"
integrity sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==
@@ -132,7 +126,7 @@
resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.7.tgz#ede48dd3f85af14ee369c805e5ed5b84222b9fe2"
integrity sha512-SK3D3aVt+5vOOccKPnGaJWB5gQ8FuKfjboUJHedMP7gu54HqSCXX5iFXhktGD8nfJb0Go30eDvs/UDoTnR2kOA==
"@opentelemetry/api@^1.0.1", "@opentelemetry/api@^1.0.4":
"@opentelemetry/api@^1.0.4":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.2.0.tgz#89ef99401cde6208cff98760b67663726ef26686"
integrity sha512-0nBr+VZNKm9tvNDZFstI3Pq1fCTEDK5OZTnVKNvBNAKgd0yIvmwsP4m61rEv7ZP+tOUjWJhROpxK5MsnlF911g==
@@ -166,47 +160,40 @@
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.7.0.tgz#af80a1ef7cf110ea3a68242acd95648991bcd763"
integrity sha512-FGBx/Qd09lMaqQcogCHyYrFEpTx4cAjeS+48lMIR12z7LdH+zofGDVQSubN59nL6IpubfKqTeIDu9rNO28iHVA==
"@types/node-fetch@^2.5.0":
version "2.6.2"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da"
integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==
dependencies:
"@types/node" "*"
form-data "^3.0.0"
"@types/node@*":
version "18.11.9"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
"@tootallnate/once@2":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
"@types/node@16.x":
version "16.11.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae"
integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==
"@types/tunnel@^0.0.3":
version "0.0.3"
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
dependencies:
"@types/node" "*"
"@vscode/extension-telemetry@^0.7.4-preview":
version "0.7.4-preview"
resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.7.4-preview.tgz#318d6bc54064e5f443b25dfb42fec724d888c36b"
integrity sha512-6OkvjCc+DaC9B26t3hj7vuAxf1ONm/p4LrVvFrapa+jBCKxXXUaV1Asz6+QxYaPfd4Ws/MlnFfCvlgvv3uYRwQ==
"@vscode/extension-telemetry@^0.7.5":
version "0.7.5"
resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.7.5.tgz#bf965731816e08c3f146f96d901ec67954fc913b"
integrity sha512-fJ5y3TcpqqkFYHneabYaoB4XAhDdVflVm+TDKshw9VOs77jkgNS4UA7LNXrWeO0eDne3Sh3JgURf+xzc1rk69w==
dependencies:
"@microsoft/1ds-core-js" "^3.2.8"
"@microsoft/1ds-post-js" "^3.2.8"
"@microsoft/applicationinsights-web-basic" "^2.8.9"
applicationinsights "2.3.6"
applicationinsights "2.4.1"
applicationinsights@2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.3.6.tgz#91277ce44e5f6d2f85336922c05d90f8699c2e70"
integrity sha512-ZzXXpZpDRGcy6Pp5V319nDF9/+Ey7jNknEXZyaBajtC5onN0dcBem6ng5jcb3MPH2AjYWRI8XgyNEuzP/6Y5/A==
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
"@azure/core-http" "^2.2.3"
debug "4"
applicationinsights@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.4.1.tgz#4de4c4dd3c7c4a44445cfbf3d15808fc0dcc423d"
integrity sha512-0n0Ikd0gzSm460xm+M0UTWIwXrhrH/0bqfZatcJjYObWyefxfAxapGEyNnSGd1Tg90neHz+Yhf+Ff/zgvPiQYA==
dependencies:
"@azure/core-auth" "^1.4.0"
"@azure/core-rest-pipeline" "^1.10.0"
"@microsoft/applicationinsights-web-snippet" "^1.0.1"
"@opentelemetry/api" "^1.0.4"
"@opentelemetry/core" "^1.0.1"
@@ -273,6 +260,13 @@ continuation-local-storage@^3.2.1:
async-listener "^0.6.0"
emitter-listener "^1.1.1"
debug@4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -297,15 +291,6 @@ emitter-listener@^1.0.1, emitter-listener@^1.1.1:
dependencies:
shimmer "^1.2.0"
form-data@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -315,6 +300,23 @@ form-data@^4.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
http-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
dependencies:
"@tootallnate/once" "2"
agent-base "6"
debug "4"
https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
dependencies:
agent-base "6"
debug "4"
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -341,42 +343,10 @@ minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
process@^0.11.10:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
psl@^1.1.33:
version "1.9.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
querystringify@^2.1.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
semver@^5.3.0, semver@^5.4.1:
version "5.7.1"
@@ -400,107 +370,48 @@ stack-chain@^1.3.7:
resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285"
integrity sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==
tough-cookie@^4.0.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874"
integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==
dependencies:
psl "^1.1.33"
punycode "^2.1.1"
universalify "^0.2.0"
url-parse "^1.5.3"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
tslib@^2.2.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
tunnel@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
universalify@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
url-parse@^1.5.3:
version "1.5.10"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
uuid@^8.3.0:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
vscode-jsonrpc@8.1.0-next.3:
version "8.1.0-next.3"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0-next.3.tgz#964c91a3bfd1949b4c3da7136ba46b48b42991ad"
integrity sha512-4eDeAnkWFKFTmT7tUR2wDngNAuwGHvV7yPCzPWGudBWJOoXaPQnwmiQChoj+umH1y2NR+MdBtx49xlZA7FoLRQ==
vscode-jsonrpc@8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94"
integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==
vscode-languageclient@^8.1.0-next.2:
version "8.1.0-next.2"
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0-next.2.tgz#12a248299d23e48cb9d316129bf9ba0592caa533"
integrity sha512-ZGCQaqXyT7Y4H68zDQ/8XnNzo9tlUxuarJa0hT5EncAC0vmVAxLvhbsz2iSlWx3j6UZUgBM0b6UZtjpzkqr3tQ==
vscode-languageclient@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz#3e67d5d841481ac66ddbdaa55b4118742f6a9f3f"
integrity sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==
dependencies:
minimatch "^5.1.0"
semver "^7.3.7"
vscode-languageserver-protocol "3.17.3-next.2"
vscode-languageserver-protocol "3.17.3"
vscode-languageserver-protocol@3.17.3-next.2:
version "3.17.3-next.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3-next.2.tgz#e906471899b9ed2ae1139f95592e0e5c7580bf0f"
integrity sha512-T+vSRHgApc1xCsOUJ/M7UN/tN4aINvc3FYJ6P3vAhvv0i4jZZewFMEonZB76B94TiY6z4eScgaG6m73gTgnyyw==
vscode-languageserver-protocol@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57"
integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==
dependencies:
vscode-jsonrpc "8.1.0-next.3"
vscode-languageserver-types "3.17.2"
vscode-jsonrpc "8.1.0"
vscode-languageserver-types "3.17.3"
vscode-languageserver-types@3.17.2:
version "3.17.2"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2"
integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==
vscode-languageserver-types@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
vscode-uri@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.7.tgz#6d19fef387ee6b46c479e5fb00870e15e58c1eb8"
integrity sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
xml2js@^0.4.19:
version "0.4.23"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
dependencies:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xmlbuilder@~11.0.0:
version "11.0.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/8e4e371fe8dd57560b16a44474f8cf8ca981e715",
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/0d73d1117e0a9b1d6635ebbe9aa37d615171b02d",
"name": "JavaScript (with React support)",
"scopeName": "source.js",
"patterns": [
@@ -989,6 +989,9 @@
},
{
"include": "#parameter-binding-element"
},
{
"include": "#paren-expression"
}
]
},
@@ -1171,7 +1174,7 @@
"name": "keyword.operator.assignment.js"
}
},
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
"patterns": [
{
"include": "#expression"
@@ -2912,6 +2915,9 @@
},
{
"include": "#punctuation-comma"
},
{
"include": "#decl-block"
}
]
},
@@ -3317,7 +3323,7 @@
"name": "keyword.control.satisfies.js"
}
},
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+)|(\\s+\\<))",
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
"patterns": [
{
"include": "#type"
@@ -3423,8 +3429,11 @@
"name": "keyword.operator.expression.typeof.js"
}
},
"end": "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"patterns": [
{
"include": "#type-arguments"
},
{
"include": "#expression"
}
@@ -3788,7 +3797,7 @@
"name": "keyword.operator.type.annotation.js"
}
},
"end": "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -3803,7 +3812,7 @@
"name": "keyword.operator.type.annotation.js"
}
},
"end": "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -4650,20 +4659,20 @@
"include": "#template-call"
},
{
"name": "string.template.js",
"contentName": "string.template.js",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js"
},
"2": {
"name": "punctuation.definition.string.template.begin.js"
"name": "string.template.js punctuation.definition.string.template.begin.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js"
"name": "string.template.js punctuation.definition.string.template.end.js"
}
},
"patterns": [
@@ -4680,7 +4689,6 @@
"template-call": {
"patterns": [
{
"name": "string.template.js",
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
@@ -4703,7 +4711,6 @@
]
},
{
"name": "string.template.js",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
@@ -4759,20 +4766,20 @@
"include": "#template-call"
},
{
"name": "string.template.js",
"contentName": "string.template.js",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js"
},
"2": {
"name": "punctuation.definition.string.template.begin.js"
"name": "string.template.js punctuation.definition.string.template.begin.js"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js"
"name": "string.template.js punctuation.definition.string.template.end.js"
}
},
"patterns": [
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/8e4e371fe8dd57560b16a44474f8cf8ca981e715",
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/0d73d1117e0a9b1d6635ebbe9aa37d615171b02d",
"name": "JavaScript (with React support)",
"scopeName": "source.js.jsx",
"patterns": [
@@ -989,6 +989,9 @@
},
{
"include": "#parameter-binding-element"
},
{
"include": "#paren-expression"
}
]
},
@@ -1171,7 +1174,7 @@
"name": "keyword.operator.assignment.js.jsx"
}
},
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
"patterns": [
{
"include": "#expression"
@@ -2912,6 +2915,9 @@
},
{
"include": "#punctuation-comma"
},
{
"include": "#decl-block"
}
]
},
@@ -3317,7 +3323,7 @@
"name": "keyword.control.satisfies.js.jsx"
}
},
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+)|(\\s+\\<))",
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
"patterns": [
{
"include": "#type"
@@ -3423,8 +3429,11 @@
"name": "keyword.operator.expression.typeof.js.jsx"
}
},
"end": "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"patterns": [
{
"include": "#type-arguments"
},
{
"include": "#expression"
}
@@ -3788,7 +3797,7 @@
"name": "keyword.operator.type.annotation.js.jsx"
}
},
"end": "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -3803,7 +3812,7 @@
"name": "keyword.operator.type.annotation.js.jsx"
}
},
"end": "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -4650,20 +4659,20 @@
"include": "#template-call"
},
{
"name": "string.template.js.jsx",
"contentName": "string.template.js.jsx",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js.jsx"
},
"2": {
"name": "punctuation.definition.string.template.begin.js.jsx"
"name": "string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js.jsx"
"name": "string.template.js.jsx punctuation.definition.string.template.end.js.jsx"
}
},
"patterns": [
@@ -4680,7 +4689,6 @@
"template-call": {
"patterns": [
{
"name": "string.template.js.jsx",
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
@@ -4703,7 +4711,6 @@
]
},
{
"name": "string.template.js.jsx",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
@@ -4759,20 +4766,20 @@
"include": "#template-call"
},
{
"name": "string.template.js.jsx",
"contentName": "string.template.js.jsx",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.js.jsx"
},
"2": {
"name": "punctuation.definition.string.template.begin.js.jsx"
"name": "string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.js.jsx"
"name": "string.template.js.jsx punctuation.definition.string.template.end.js.jsx"
}
},
"patterns": [
@@ -45,7 +45,7 @@ interface DocumentSortingParams {
*/
readonly uri: string;
/**
* The format options
* The sort options
*/
readonly options: SortOptions;
}
@@ -545,40 +545,48 @@ function getSettings(): Settings {
}
};
const collectSchemaSettings = (schemaSettings: JSONSchemaSettings[], folderUri?: Uri) => {
for (const setting of schemaSettings) {
const url = getSchemaId(setting, folderUri);
if (url) {
const schemaSetting: JSONSchemaSettings = { url, fileMatch: setting.fileMatch, folderUri: folderUri?.toString(false), schema: setting.schema };
schemas.push(schemaSetting);
const collectSchemaSettings = (schemaSettings: JSONSchemaSettings[] | undefined, folderUri: Uri | undefined = undefined, settingsLocation = folderUri) => {
if (schemaSettings) {
for (const setting of schemaSettings) {
const url = getSchemaId(setting, settingsLocation);
if (url) {
const schemaSetting: JSONSchemaSettings = { url, fileMatch: setting.fileMatch, folderUri: folderUri?.toString(false), schema: setting.schema };
schemas.push(schemaSetting);
}
}
}
};
const globalSettings = workspace.getConfiguration('json', null).get<JSONSchemaSettings[]>('schemas');
if (Array.isArray(globalSettings)) {
collectSchemaSettings(globalSettings);
}
const folders = workspace.workspaceFolders;
const schemaConfigInfo = workspace.getConfiguration('json', null).inspect<JSONSchemaSettings[]>('schemas');
if (schemaConfigInfo) {
if (schemaConfigInfo.workspaceValue && workspace.workspaceFile && folders && folders.length) {
const settingsLocation = Uri.joinPath(workspace.workspaceFile, '..');
for (const folder of folders) {
collectSchemaSettings(schemaConfigInfo.workspaceValue, folder.uri, settingsLocation);
}
}
collectSchemaSettings(schemaConfigInfo.globalValue);
}
if (folders) {
for (const folder of folders) {
const schemaConfigInfo = workspace.getConfiguration('json', folder.uri).inspect<JSONSchemaSettings[]>('schemas');
if (schemaConfigInfo && Array.isArray(schemaConfigInfo.workspaceFolderValue)) {
collectSchemaSettings(schemaConfigInfo.workspaceFolderValue, folder.uri);
}
collectSchemaSettings(schemaConfigInfo?.workspaceFolderValue, folder.uri);
}
}
return settings;
}
function getSchemaId(schema: JSONSchemaSettings, folderUri?: Uri): string | undefined {
function getSchemaId(schema: JSONSchemaSettings, settingsLocation?: Uri): string | undefined {
let url = schema.url;
if (!url) {
if (schema.schema) {
url = schema.schema.id || `vscode://schemas/custom/${encodeURIComponent(hash(schema.schema).toString(16))}`;
}
} else if (folderUri && (url[0] === '.' || url[0] === '/')) {
url = Uri.joinPath(folderUri, url).toString(false);
} else if (settingsLocation && (url[0] === '.' || url[0] === '/')) {
url = Uri.joinPath(settingsLocation, url).toString(false);
}
return url;
}
@@ -158,9 +158,9 @@
]
},
"dependencies": {
"@vscode/extension-telemetry": "^0.7.4-preview",
"@vscode/extension-telemetry": "^0.7.5",
"request-light": "^0.7.0",
"vscode-languageclient": "^8.1.0-next.6"
"vscode-languageclient": "^8.1.0"
},
"devDependencies": {
"@types/node": "16.x"
@@ -17,6 +17,6 @@
"json.maxItemsComputed.desc": "The maximum number of outline symbols and folding regions computed (limited for performance reasons).",
"json.maxItemsExceededInformation.desc": "Show notification when exceeding the maximum number of outline symbols and folding regions.",
"json.enableSchemaDownload.desc": "When enabled, JSON schemas can be fetched from http and https locations.",
"json.command.clearCache": "Clear schema cache",
"json.command.sort": "Sort document"
"json.command.clearCache": "Clear Schema Cache",
"json.command.sort": "Sort Document"
}
@@ -15,8 +15,8 @@
"@vscode/l10n": "^0.0.11",
"jsonc-parser": "^3.2.0",
"request-light": "^0.7.0",
"vscode-json-languageservice": "^5.3.0",
"vscode-languageserver": "^8.1.0-next.6",
"vscode-json-languageservice": "^5.3.1",
"vscode-languageserver": "^8.1.0",
"vscode-uri": "^3.0.7"
},
"devDependencies": {
@@ -45,7 +45,7 @@ export interface DocumentSortingParams {
*/
uri: string;
/**
* The format options
* The sort options
*/
options: SortOptions;
}
@@ -27,10 +27,10 @@ request-light@^0.7.0:
resolved "https://registry.yarnpkg.com/request-light/-/request-light-0.7.0.tgz#885628bb2f8040c26401ebf258ec51c4ae98ac2a"
integrity sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==
vscode-json-languageservice@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-5.3.0.tgz#b8e8f220f4030af33144182029ac13090d3ceb96"
integrity sha512-yVC2WpAaF1swkUBA7EqG3hmSORxI6EpTBGdGgo5DIfJpG5hrk8PzPODAhQd0gVFtTF5j4yFxFD6V1x2XBqagcg==
vscode-json-languageservice@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-5.3.1.tgz#c36175d05f425fbd8f47dcee6f2a72096bdda36f"
integrity sha512-tPRf/2LOBS6uFflFLABdj8T3ol2/QgZ0kpzZHFCs+cbxpnjBNiCo+rfh3th0dtdytq5dSnWo5iFJj99zF6jZWQ==
dependencies:
"@vscode/l10n" "^0.0.11"
jsonc-parser "^3.2.0"
@@ -38,40 +38,35 @@ vscode-json-languageservice@^5.3.0:
vscode-languageserver-types "^3.17.3"
vscode-uri "^3.0.7"
vscode-jsonrpc@8.1.0-next.7:
version "8.1.0-next.7"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0-next.7.tgz#4ecfada9866f677da9a5915abfceb7b7c90962f6"
integrity sha512-UJlY2e4wnI+GkaNYM2TERqrNvTe0XScny7lUA4f+F+z6XI5pDJnHj6udXiGJofT/tX57d8C6fnlfgrCfF6aptQ==
vscode-jsonrpc@8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94"
integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==
vscode-languageserver-protocol@3.17.3-next.6:
version "3.17.3-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3-next.6.tgz#e43dc5dc0e730e3a4d1cb523cce85cd34b6fc64d"
integrity sha512-UCL2DaAOCzGFZKIAJ4wOS9BXVbeARL8GxXTW7ANnAXJg03IytNmOJcmguL6l+ht4CCdKNQbnRSJB4dh8cgDyJw==
vscode-languageserver-protocol@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57"
integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==
dependencies:
vscode-jsonrpc "8.1.0-next.7"
vscode-languageserver-types "3.17.3-next.3"
vscode-jsonrpc "8.1.0"
vscode-languageserver-types "3.17.3"
vscode-languageserver-textdocument@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz#9eae94509cbd945ea44bca8dcfe4bb0c15bb3ac0"
integrity sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==
vscode-languageserver-types@3.17.3-next.3:
version "3.17.3-next.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3-next.3.tgz#fc909d37d4200126d74583f2114e53ace27a3e04"
integrity sha512-R36Wi5sHoVc/PsAva0QGoEgw+LRCXPDKcdjFfgoVwrRdrFOdYUkvp5G4NvrPUsVT2f2qS/bSs6QiRxyjNkcR9A==
vscode-languageserver-types@^3.17.3:
vscode-languageserver-types@3.17.3, vscode-languageserver-types@^3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
vscode-languageserver@^8.1.0-next.6:
version "8.1.0-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.1.0-next.6.tgz#32fe5042b92b58b6f2c3c8cba0ddc77153ad47a7"
integrity sha512-YSj9fKN0FtVW95RKjcy8UheODK4YosqiZUkEbAgJJ0uMxR1Om1dhD/+QwYUKfJX/u8KLS/qFroMNVFHoPoc2hg==
vscode-languageserver@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz#5024253718915d84576ce6662dd46a791498d827"
integrity sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==
dependencies:
vscode-languageserver-protocol "3.17.3-next.6"
vscode-languageserver-protocol "3.17.3"
vscode-uri@^3.0.7:
version "3.0.7"
+85 -174
View File
@@ -9,7 +9,7 @@
dependencies:
tslib "^2.2.0"
"@azure/core-auth@^1.3.0":
"@azure/core-auth@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.4.0.tgz#6fa9661c1705857820dbc216df5ba5665ac36a9e"
integrity sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==
@@ -17,36 +17,30 @@
"@azure/abort-controller" "^1.0.0"
tslib "^2.2.0"
"@azure/core-http@^2.2.3":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.3.0.tgz#fb96de9a96923c186de15127472cb8e177f7158f"
integrity sha512-Gikj2QO9W41rw7yiKWi2Q2OcVcukt+ux7ZZeFy4ilC/0b1Wcr0rjseZh9bqJ3NI9+h78Hix34ZjEg316iHjbTA==
"@azure/core-rest-pipeline@^1.10.0":
version "1.10.1"
resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz#348290847ca31b9eecf9cf5de7519aaccdd30968"
integrity sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==
dependencies:
"@azure/abort-controller" "^1.0.0"
"@azure/core-auth" "^1.3.0"
"@azure/core-tracing" "1.0.0-preview.13"
"@azure/core-util" "^1.1.1"
"@azure/core-auth" "^1.4.0"
"@azure/core-tracing" "^1.0.1"
"@azure/core-util" "^1.0.0"
"@azure/logger" "^1.0.0"
"@types/node-fetch" "^2.5.0"
"@types/tunnel" "^0.0.3"
form-data "^4.0.0"
node-fetch "^2.6.7"
process "^0.11.10"
tough-cookie "^4.0.0"
http-proxy-agent "^5.0.0"
https-proxy-agent "^5.0.0"
tslib "^2.2.0"
tunnel "^0.0.6"
uuid "^8.3.0"
xml2js "^0.4.19"
"@azure/core-tracing@1.0.0-preview.13":
version "1.0.0-preview.13"
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644"
integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==
"@azure/core-tracing@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.1.tgz#352a38cbea438c4a83c86b314f48017d70ba9503"
integrity sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==
dependencies:
"@opentelemetry/api" "^1.0.1"
tslib "^2.2.0"
"@azure/core-util@^1.1.1":
"@azure/core-util@^1.0.0":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.1.1.tgz#8f87b3dd468795df0f0849d9f096c3e7b29452c1"
integrity sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog==
@@ -132,7 +126,7 @@
resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.7.tgz#ede48dd3f85af14ee369c805e5ed5b84222b9fe2"
integrity sha512-SK3D3aVt+5vOOccKPnGaJWB5gQ8FuKfjboUJHedMP7gu54HqSCXX5iFXhktGD8nfJb0Go30eDvs/UDoTnR2kOA==
"@opentelemetry/api@^1.0.1", "@opentelemetry/api@^1.0.4":
"@opentelemetry/api@^1.0.4":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.2.0.tgz#89ef99401cde6208cff98760b67663726ef26686"
integrity sha512-0nBr+VZNKm9tvNDZFstI3Pq1fCTEDK5OZTnVKNvBNAKgd0yIvmwsP4m61rEv7ZP+tOUjWJhROpxK5MsnlF911g==
@@ -166,47 +160,40 @@
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.7.0.tgz#af80a1ef7cf110ea3a68242acd95648991bcd763"
integrity sha512-FGBx/Qd09lMaqQcogCHyYrFEpTx4cAjeS+48lMIR12z7LdH+zofGDVQSubN59nL6IpubfKqTeIDu9rNO28iHVA==
"@types/node-fetch@^2.5.0":
version "2.6.2"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da"
integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==
dependencies:
"@types/node" "*"
form-data "^3.0.0"
"@types/node@*":
version "18.11.9"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
"@tootallnate/once@2":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
"@types/node@16.x":
version "16.11.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae"
integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==
"@types/tunnel@^0.0.3":
version "0.0.3"
resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
dependencies:
"@types/node" "*"
"@vscode/extension-telemetry@^0.7.4-preview":
version "0.7.4-preview"
resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.7.4-preview.tgz#318d6bc54064e5f443b25dfb42fec724d888c36b"
integrity sha512-6OkvjCc+DaC9B26t3hj7vuAxf1ONm/p4LrVvFrapa+jBCKxXXUaV1Asz6+QxYaPfd4Ws/MlnFfCvlgvv3uYRwQ==
"@vscode/extension-telemetry@^0.7.5":
version "0.7.5"
resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.7.5.tgz#bf965731816e08c3f146f96d901ec67954fc913b"
integrity sha512-fJ5y3TcpqqkFYHneabYaoB4XAhDdVflVm+TDKshw9VOs77jkgNS4UA7LNXrWeO0eDne3Sh3JgURf+xzc1rk69w==
dependencies:
"@microsoft/1ds-core-js" "^3.2.8"
"@microsoft/1ds-post-js" "^3.2.8"
"@microsoft/applicationinsights-web-basic" "^2.8.9"
applicationinsights "2.3.6"
applicationinsights "2.4.1"
applicationinsights@2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.3.6.tgz#91277ce44e5f6d2f85336922c05d90f8699c2e70"
integrity sha512-ZzXXpZpDRGcy6Pp5V319nDF9/+Ey7jNknEXZyaBajtC5onN0dcBem6ng5jcb3MPH2AjYWRI8XgyNEuzP/6Y5/A==
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
dependencies:
"@azure/core-http" "^2.2.3"
debug "4"
applicationinsights@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.4.1.tgz#4de4c4dd3c7c4a44445cfbf3d15808fc0dcc423d"
integrity sha512-0n0Ikd0gzSm460xm+M0UTWIwXrhrH/0bqfZatcJjYObWyefxfAxapGEyNnSGd1Tg90neHz+Yhf+Ff/zgvPiQYA==
dependencies:
"@azure/core-auth" "^1.4.0"
"@azure/core-rest-pipeline" "^1.10.0"
"@microsoft/applicationinsights-web-snippet" "^1.0.1"
"@opentelemetry/api" "^1.0.4"
"@opentelemetry/core" "^1.0.1"
@@ -273,6 +260,13 @@ continuation-local-storage@^3.2.1:
async-listener "^0.6.0"
emitter-listener "^1.1.1"
debug@4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -297,15 +291,6 @@ emitter-listener@^1.0.1, emitter-listener@^1.1.1:
dependencies:
shimmer "^1.2.0"
form-data@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -315,6 +300,23 @@ form-data@^4.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
http-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
dependencies:
"@tootallnate/once" "2"
agent-base "6"
debug "4"
https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
dependencies:
agent-base "6"
debug "4"
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -341,48 +343,16 @@ minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
process@^0.11.10:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
psl@^1.1.33:
version "1.9.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
querystringify@^2.1.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
request-light@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/request-light/-/request-light-0.7.0.tgz#885628bb2f8040c26401ebf258ec51c4ae98ac2a"
integrity sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==
requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
semver@^5.3.0, semver@^5.4.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -405,101 +375,42 @@ stack-chain@^1.3.7:
resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285"
integrity sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==
tough-cookie@^4.0.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874"
integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==
dependencies:
psl "^1.1.33"
punycode "^2.1.1"
universalify "^0.2.0"
url-parse "^1.5.3"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
tslib@^2.2.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
tunnel@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
universalify@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
url-parse@^1.5.3:
version "1.5.10"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
uuid@^8.3.0:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
vscode-jsonrpc@8.1.0-next.7:
version "8.1.0-next.7"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0-next.7.tgz#4ecfada9866f677da9a5915abfceb7b7c90962f6"
integrity sha512-UJlY2e4wnI+GkaNYM2TERqrNvTe0XScny7lUA4f+F+z6XI5pDJnHj6udXiGJofT/tX57d8C6fnlfgrCfF6aptQ==
vscode-jsonrpc@8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94"
integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==
vscode-languageclient@^8.1.0-next.6:
version "8.1.0-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0-next.6.tgz#ce5c19ee6831a9c1886b0f19d9c2e2ebb0aa4c07"
integrity sha512-DvqmwhnQlgvYVoiVxYemPo/wQ2gtpJrgt10rgv32J5bg3OkVgWFH31Uut3jF30UK4aA2sLis64PD/yMMJZy+bQ==
vscode-languageclient@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz#3e67d5d841481ac66ddbdaa55b4118742f6a9f3f"
integrity sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==
dependencies:
minimatch "^5.1.0"
semver "^7.3.7"
vscode-languageserver-protocol "3.17.3-next.6"
vscode-languageserver-protocol "3.17.3"
vscode-languageserver-protocol@3.17.3-next.6:
version "3.17.3-next.6"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3-next.6.tgz#e43dc5dc0e730e3a4d1cb523cce85cd34b6fc64d"
integrity sha512-UCL2DaAOCzGFZKIAJ4wOS9BXVbeARL8GxXTW7ANnAXJg03IytNmOJcmguL6l+ht4CCdKNQbnRSJB4dh8cgDyJw==
vscode-languageserver-protocol@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57"
integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==
dependencies:
vscode-jsonrpc "8.1.0-next.7"
vscode-languageserver-types "3.17.3-next.3"
vscode-jsonrpc "8.1.0"
vscode-languageserver-types "3.17.3"
vscode-languageserver-types@3.17.3-next.3:
version "3.17.3-next.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3-next.3.tgz#fc909d37d4200126d74583f2114e53ace27a3e04"
integrity sha512-R36Wi5sHoVc/PsAva0QGoEgw+LRCXPDKcdjFfgoVwrRdrFOdYUkvp5G4NvrPUsVT2f2qS/bSs6QiRxyjNkcR9A==
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
xml2js@^0.4.19:
version "0.4.23"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
dependencies:
sax ">=0.6.0"
xmlbuilder "~11.0.0"
xmlbuilder@~11.0.0:
version "11.0.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
vscode-languageserver-types@3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
yallist@^4.0.0:
version "4.0.0"
+2 -2
View File
@@ -6,11 +6,11 @@
"git": {
"name": "jlelong/vscode-latex-basics",
"repositoryUrl": "https://github.com/jlelong/vscode-latex-basics",
"commitHash": "16ac438ab14488976672c3c948ed29335fcd9dd5"
"commitHash": "eed5b817b757aab3695af437409fcbfdd37bbc59"
}
},
"license": "MIT",
"version": "1.5.0",
"version": "1.5.1",
"description": "The files in syntaxes/ were originally part of https://github.com/James-Yu/LaTeX-Workshop. They have been extracted in the hope that they can useful outside of the LaTeX-Workshop extension.",
"licenseDetail": [
"Copyright (c) vscode-latex-basics authors",
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/jlelong/vscode-latex-basics/commit/fcf4cca5b18a4c71ace161cf6af87cf6a50d9abd",
"version": "https://github.com/jlelong/vscode-latex-basics/commit/eed5b817b757aab3695af437409fcbfdd37bbc59",
"name": "LaTeX",
"scopeName": "text.tex.latex",
"patterns": [
@@ -1064,7 +1064,7 @@
]
},
{
"begin": "((?:\\s*)\\\\begin\\{([a-z]*code(?:\\*)?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
"begin": "((?:\\s*)\\\\begin\\{([a-zA-Z]*code(?:\\*)?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
"captures": {
"1": {
"patterns": [
@@ -1074,7 +1074,9 @@
]
}
},
"end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)"
"end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
"contentName": "meta.function.embedded.latex",
"name": "meta.embedded.block.generic.latex"
},
{
"begin": "((\\\\)addplot)(?:\\+?)((?:\\[[^\\[]*\\]))*\\s*(gnuplot)\\s*((?:\\[[^\\[]*\\]))*\\s*(\\{)",
@@ -1684,7 +1686,7 @@
"name": "meta.scope.item.latex"
},
{
"begin": "((\\\\)(?:[aA]uto|foot|full|no|ref|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\*?)((?:(?:\\([^\\)]*\\)){0,2}(?:\\[[^\\]]*\\]){0,2}\\{[\\w:.]*\\})*)(?:([<\\[])[^\\]<>]*([>\\]]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",
"begin": "((\\\\)(?:[aA]uto|foot|full|no|ref|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\*?)((?:(?:\\([^\\)]*\\)){0,2}(?:\\[[^\\]]*\\]){0,2}\\{[\\p{Alphabetic}:.]*\\})*)(?:([<\\[])[^\\]<>]*([>\\]]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",
"captures": {
"1": {
"name": "keyword.control.cite.latex"
@@ -1735,7 +1737,7 @@
"match": "((%).*)$"
},
{
"match": "[\\w:.-]+",
"match": "[\\p{Alphabetic}:.-]+",
"name": "constant.other.reference.citation.latex"
}
]
@@ -1762,7 +1764,7 @@
"name": "meta.citation.latex",
"patterns": [
{
"match": "[\\w:.]+",
"match": "[\\p{Alphabetic}:.]+",
"name": "constant.other.reference.citation.latex"
}
]
@@ -1789,7 +1791,7 @@
"name": "meta.reference.label.latex",
"patterns": [
{
"match": "[a-zA-Z0-9\\.,:/*!^_-]",
"match": "[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]",
"name": "constant.other.reference.label.latex"
}
]
@@ -2248,7 +2250,7 @@
]
}
},
"match": "(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\w:.]+)(\\})(.*)"
"match": "(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\p{Alphabetic}:.]+)(\\})(.*)"
}
]
},
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/jlelong/vscode-latex-basics/commit/8776a0856846b63d9e5765e8ec42a8a2f4f52219",
"version": "https://github.com/jlelong/vscode-latex-basics/commit/890b6155b82b12c67b350aa99be5637eaa64f222",
"name": "TeX",
"scopeName": "text.tex",
"patterns": [
@@ -14,7 +14,7 @@
"name": "punctuation.definition.keyword.tex"
}
},
"match": "(\\\\)(backmatter|else|fi|frontmatter|mainmatter|if(case|cat|dim|eof|false|hbox|hmode|inner|mmode|num|odd|true|undefined|vbox|vmode|void|x)?)(?![a-zA-Z@])",
"match": "(\\\\)(backmatter|csname|else|endcsname|fi|frontmatter|mainmatter|unless|if(case|cat|csname|defined|dim|eof|false|fontchar|hbox|hmode|inner|mmode|num|odd|true|vbox|vmode|void|x)?)(?![a-zA-Z@])",
"name": "keyword.control.tex"
},
{
@@ -176,7 +176,7 @@
"name": "punctuation.definition.constant.math.tex"
}
},
"match": "(\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)(?=\\b|_)",
"match": "(\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)(?![a-zA-Z])",
"name": "constant.character.math.tex"
},
{
+1 -1
View File
@@ -33,7 +33,7 @@
"git": {
"name": "microsoft/vscode-markdown-tm-grammar",
"repositoryUrl": "https://github.com/microsoft/vscode-markdown-tm-grammar",
"commitHash": "443261e8f75b2eaa8b36a2613fe7c4354208260a"
"commitHash": "ca2caf2157d0674be3d641f71499b84d514e4e5e"
}
},
"license": "MIT",
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/microsoft/vscode-markdown-tm-grammar/commit/443261e8f75b2eaa8b36a2613fe7c4354208260a",
"version": "https://github.com/microsoft/vscode-markdown-tm-grammar/commit/ca2caf2157d0674be3d641f71499b84d514e4e5e",
"name": "Markdown",
"scopeName": "text.html.markdown",
"patterns": [
@@ -1880,6 +1880,39 @@
}
]
},
"fenced_code_block_twig": {
"begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(twig)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
"name": "markup.fenced_code.block.markdown",
"end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
"beginCaptures": {
"3": {
"name": "punctuation.definition.markdown"
},
"4": {
"name": "fenced_code.block.language.markdown"
},
"5": {
"name": "fenced_code.block.language.attributes.markdown"
}
},
"endCaptures": {
"3": {
"name": "punctuation.definition.markdown"
}
},
"patterns": [
{
"begin": "(^|\\G)(\\s*)(.*)",
"while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
"contentName": "meta.embedded.block.twig",
"patterns": [
{
"include": "source.twig"
}
]
}
]
},
"fenced_code_block": {
"patterns": [
{
@@ -2047,6 +2080,9 @@
{
"include": "#fenced_code_block_bibtex"
},
{
"include": "#fenced_code_block_twig"
},
{
"include": "#fenced_code_block_unknown"
}
@@ -582,6 +582,21 @@
"additionalProperties": {
"type": "string"
}
},
"markdown.preferredMdPathExtensionStyle": {
"type": "string",
"default": "auto",
"markdownDescription": "%configuration.markdown.preferredMdPathExtensionStyle%",
"enum": [
"auto",
"includeExtension",
"removeExtension"
],
"markdownEnumDescriptions": [
"%configuration.markdown.preferredMdPathExtensionStyle.auto%",
"%configuration.markdown.preferredMdPathExtensionStyle.includeExtension%",
"%configuration.markdown.preferredMdPathExtensionStyle.removeExtension%"
]
}
}
},
@@ -54,5 +54,9 @@
"configuration.markdown.updateLinksOnFileMove.enableForDirectories": "Enable updating links when a directory is moved or renamed in the workspace.",
"configuration.markdown.occurrencesHighlight.enabled": "Enable highlighting link occurrences in the current document.",
"configuration.markdown.copyFiles.destination": "Defines where files copied into a Markdown document should be created. This is a map from globs that match on the Markdown document to destinations.\n\nThe destinations may use the following variables:\n\n- `${documentFileName}` — The full filename of the Markdown document, for example `readme.md`.\n- `${documentBaseName}` — The basename of Markdown document, for example `readme`.\n- `${documentExtName}` — The extension of the Markdown document, for example `md`.\n- `${documentDirName}` — The name of the Markdown document's parent directory.\n- `${documentWorkspaceFolder}` — The workspace folder for the Markdown document, for examples, `/Users/me/myProject`. This is the same as `${documentDirName}` if the file is not part of in a workspace.\n- `${fileName}` — The file name of the dropped file, for example `image.png`.",
"configuration.markdown.preferredMdPathExtensionStyle": "Controls if file extensions (e.g. `.md`) are added or not for links to Markdown files. This setting is used when file paths are added by tooling such as path completions or file renames.",
"configuration.markdown.preferredMdPathExtensionStyle.auto": "For existing paths, try to maintain the file extension style. For new paths, add file extensions.",
"configuration.markdown.preferredMdPathExtensionStyle.includeExtension": "Prefer including the file extension. For example, path completions to a file named `file.md` will insert `file.md`.",
"configuration.markdown.preferredMdPathExtensionStyle.removeExtension": "Prefer removing the file extension. For example, path completions to a file named `file.md` will insert `file` without the `.md`.",
"workspaceTrust": "Required for loading styles configured in the workspace."
}
@@ -18,7 +18,7 @@
"vscode-languageserver": "^8.0.2",
"vscode-languageserver-textdocument": "^1.0.5",
"vscode-languageserver-types": "^3.17.1",
"vscode-markdown-languageservice": "^0.3.0-alpha.4",
"vscode-markdown-languageservice": "^0.3.0-alpha.5",
"vscode-uri": "^3.0.3"
},
"devDependencies": {
@@ -10,6 +10,8 @@ export type ValidateEnabled = 'ignore' | 'warning' | 'error' | 'hint';
export interface Settings {
readonly markdown: {
readonly preferredMdPathExtensionStyle: 'auto' | 'includeExtension' | 'removeExtension';
readonly occurrencesHighlight: {
readonly enabled: boolean;
};
@@ -62,18 +62,26 @@ export async function startServer(connection: Connection, serverConfig: {
let mdLs: md.IMdLanguageService | undefined;
connection.onInitialize((params: InitializeParams): InitializeResult => {
const initOptions = params.initializationOptions as MdServerInitializationOptions | undefined;
const config = getLsConfiguration(initOptions ?? {});
const configurationManager = new ConfigurationManager(connection);
const initOptions = params.initializationOptions as MdServerInitializationOptions | undefined;
const workspace = serverConfig.workspaceFactory({ connection, config, workspaceFolders: params.workspaceFolders });
const mdConfig = getLsConfiguration(initOptions ?? {});
const workspace = serverConfig.workspaceFactory({ connection, config: mdConfig, workspaceFolders: params.workspaceFolders });
mdLs = md.createLanguageService({
workspace,
parser: serverConfig.parser,
logger: serverConfig.logger,
markdownFileExtensions: config.markdownFileExtensions,
excludePaths: config.excludePaths,
...mdConfig,
get preferredMdPathExtensionStyle() {
switch (configurationManager.getSettings()?.markdown.preferredMdPathExtensionStyle) {
case 'includeExtension': return md.PreferredMdPathExtensionStyle.includeExtension;
case 'removeExtension': return md.PreferredMdPathExtensionStyle.removeExtension;
case 'auto':
default:
return md.PreferredMdPathExtensionStyle.auto;
}
}
});
registerCompletionsSupport(connection, documents, mdLs, configurationManager);
@@ -52,10 +52,10 @@ vscode-languageserver@^8.0.2:
dependencies:
vscode-languageserver-protocol "3.17.2"
vscode-markdown-languageservice@^0.3.0-alpha.4:
version "0.3.0-alpha.4"
resolved "https://registry.yarnpkg.com/vscode-markdown-languageservice/-/vscode-markdown-languageservice-0.3.0-alpha.4.tgz#59cc97102d6d0177a028b320fa76fe86d294cdb0"
integrity sha512-wMstTLuX3F+BkjxXCY4d1xKzHyBTHTC2EECg701FpBbSppa17Zj/Hk2G9H1dZGXhQeexXifxVXKScbLD6cB/3g==
vscode-markdown-languageservice@^0.3.0-alpha.5:
version "0.3.0-alpha.5"
resolved "https://registry.yarnpkg.com/vscode-markdown-languageservice/-/vscode-markdown-languageservice-0.3.0-alpha.5.tgz#fce18193c16186eacdd322f49775fd43d659fc25"
integrity sha512-5SEn8hr999N/K8IaY25fdZoW7JPJT4pOm53AQvimGNYiCntb0TWJhMJD1Izbc2DvbyrWAksVkLqzbGKV/zW+Sg==
dependencies:
"@vscode/l10n" "^0.0.10"
picomatch "^2.3.1"
@@ -45,7 +45,7 @@ export async function tryGetUriListSnippet(document: vscode.TextDocument, dataTr
}
const uris: vscode.Uri[] = [];
for (const resource of urlList.split('\n')) {
for (const resource of urlList.split(/\r?\n/g)) {
try {
uris.push(vscode.Uri.parse(resource));
} catch {
+1 -1
View File
@@ -4,7 +4,7 @@
"license": "MIT",
"description": "Dependencies shared by all extensions",
"dependencies": {
"typescript": "^4.9.5"
"typescript": "^5.0.0-dev.20230224"
},
"scripts": {
"postinstall": "node ./postinstall.mjs"
@@ -6,7 +6,7 @@
"activityBar.activeBorder": "#0078d4",
"activityBar.background": "#181818",
"activityBar.border": "#ffffff15",
"activityBar.foreground": "#cccccc",
"activityBar.foreground": "#d7d7d7",
"activityBar.inactiveForeground": "#ffffff80",
"activityBarBadge.background": "#0078d4",
"activityBarBadge.foreground": "#ffffff",
@@ -20,7 +20,7 @@
"button.secondaryForeground": "#cccccc",
"button.secondaryHoverBackground": "#ffffff15",
"checkbox.background": "#313131",
"checkbox.border": "#ffffff15",
"checkbox.border": "#ffffff1f",
"debugToolBar.background": "#181818",
"descriptionForeground": "#8b949e",
"diffEditor.insertedLineBackground": "#23863633",
@@ -28,7 +28,7 @@
"diffEditor.removedLineBackground": "#da363333",
"diffEditor.removedTextBackground": "#da36334d",
"dropdown.background": "#313131",
"dropdown.border": "#ffffff17",
"dropdown.border": "#ffffff1f",
"dropdown.foreground": "#cccccc",
"dropdown.listBackground": "#313131",
"editor.background": "#1f1f1f",
@@ -53,7 +53,7 @@
"foreground": "#cccccc",
"icon.foreground": "#cccccc",
"input.background": "#ffffff0f",
"input.border": "#ffffff17",
"input.border": "#ffffff1f",
"input.foreground": "#cccccc",
"input.placeholderForeground": "#ffffff79",
"inputOption.activeBackground": "#2489db82",
@@ -88,7 +88,7 @@
"scrollbarSlider.background": "#6e768133",
"scrollbarSlider.hoverBackground": "#6e768145",
"settings.dropdownBackground": "#313131",
"settings.dropdownBorder": "#ffffff17",
"settings.dropdownBorder": "#ffffff1f",
"settings.headerForeground": "#ffffff",
"settings.modifiedItemIndicator": "#bb800966",
"sideBar.background": "#181818",
@@ -111,7 +111,7 @@
"tab.activeBackground": "#1f1f1f",
"tab.activeBorder": "#1f1f1f",
"tab.activeBorderTop": "#0078d4",
"tab.activeForeground": "#cccccc",
"tab.activeForeground": "#ffffff",
"tab.border": "#ffffff15",
"tab.hoverBackground": "#1f1f1f",
"tab.inactiveBackground": "#181818",
@@ -6,7 +6,7 @@
"activityBar.activeBorder": "#005FB8",
"activityBar.background": "#f8f8f8",
"activityBar.border": "#0000001a",
"activityBar.foreground": "#3b3b3b",
"activityBar.foreground": "#1f1f1f",
"activityBar.inactiveForeground": "#0000009e",
"activityBarBadge.background": "#005FB8",
"activityBarBadge.foreground": "#ffffff",
@@ -20,18 +20,17 @@
"button.secondaryForeground": "#3b3b3b",
"button.secondaryHoverBackground": "#00000034",
"checkbox.background": "#f8f8f8",
"checkbox.border": "#0000001a",
"checkbox.border": "#CECECE",
"descriptionForeground": "#3b3b3b",
"diffEditor.insertedLineBackground": "#23863633",
"diffEditor.insertedTextBackground": "#2386364d",
"diffEditor.removedLineBackground": "#da363333",
"diffEditor.removedTextBackground": "#da36334d",
"dropdown.background": "#ffffff",
"dropdown.border": "#0000001a",
"dropdown.border": "#CECECE",
"dropdown.foreground": "#3b3b3b",
"dropdown.listBackground": "#ffffff",
"editor.background": "#ffffff",
"editor.findMatchBackground": "#9e6a03",
"editor.foreground": "#3b3b3b",
"editor.inactiveSelectionBackground": "#E5EBF1",
"editor.selectionHighlightBackground": "#ADD6FF80",
@@ -56,7 +55,7 @@
"foreground": "#3b3b3b",
"icon.foreground": "#3b3b3b",
"input.background": "#ffffff",
"input.border": "#0000001a",
"input.border": "#CECECE",
"input.foreground": "#3b3b3b",
"input.placeholderForeground": "#00000079",
"inputOption.activeBackground": "#005fb841",
@@ -96,7 +95,7 @@
"scrollbarSlider.hoverBackground": "#6e768145",
"searchEditor.textInputBorder": "#CECECE",
"settings.dropdownBackground": "#ffffff",
"settings.dropdownBorder": "#0000001a",
"settings.dropdownBorder": "#CECECE",
"settings.headerForeground": "#1f1f1f",
"settings.modifiedItemIndicator": "#bb800966",
"settings.numberInputBorder": "#CECECE",
+1 -1
View File
@@ -6,7 +6,7 @@
"git": {
"name": "TypeScript-TmLanguage",
"repositoryUrl": "https://github.com/microsoft/TypeScript-TmLanguage",
"commitHash": "8e4e371fe8dd57560b16a44474f8cf8ca981e715"
"commitHash": "0d73d1117e0a9b1d6635ebbe9aa37d615171b02d"
}
},
"license": "MIT",
+2 -1
View File
@@ -70,7 +70,8 @@
"storage.type.function.arrow",
"keyword.operator.bitwise.shift",
"meta.brace.angle",
"punctuation.definition.tag"
"punctuation.definition.tag",
"keyword.operator.assignment.compound.bitwise.ts"
],
"tokenTypes": {
"meta.template.expression": "other",
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/8e4e371fe8dd57560b16a44474f8cf8ca981e715",
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/0d73d1117e0a9b1d6635ebbe9aa37d615171b02d",
"name": "TypeScript",
"scopeName": "source.ts",
"patterns": [
@@ -986,6 +986,9 @@
},
{
"include": "#parameter-binding-element"
},
{
"include": "#paren-expression"
}
]
},
@@ -1168,7 +1171,7 @@
"name": "keyword.operator.assignment.ts"
}
},
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
"patterns": [
{
"include": "#expression"
@@ -2909,6 +2912,9 @@
},
{
"include": "#punctuation-comma"
},
{
"include": "#decl-block"
}
]
},
@@ -3366,7 +3372,7 @@
"name": "keyword.control.satisfies.ts"
}
},
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+)|(\\s+\\<))",
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
"patterns": [
{
"include": "#type"
@@ -3472,8 +3478,11 @@
"name": "keyword.operator.expression.typeof.ts"
}
},
"end": "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"patterns": [
{
"include": "#type-arguments"
},
{
"include": "#expression"
}
@@ -3837,7 +3846,7 @@
"name": "keyword.operator.type.annotation.ts"
}
},
"end": "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -3852,7 +3861,7 @@
"name": "keyword.operator.type.annotation.ts"
}
},
"end": "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -4699,20 +4708,20 @@
"include": "#template-call"
},
{
"name": "string.template.ts",
"contentName": "string.template.ts",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.ts"
},
"2": {
"name": "punctuation.definition.string.template.begin.ts"
"name": "string.template.ts punctuation.definition.string.template.begin.ts"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.ts"
"name": "string.template.ts punctuation.definition.string.template.end.ts"
}
},
"patterns": [
@@ -4729,7 +4738,6 @@
"template-call": {
"patterns": [
{
"name": "string.template.ts",
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
@@ -4752,7 +4760,6 @@
]
},
{
"name": "string.template.ts",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
@@ -4808,20 +4815,20 @@
"include": "#template-call"
},
{
"name": "string.template.ts",
"contentName": "string.template.ts",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.ts"
},
"2": {
"name": "punctuation.definition.string.template.begin.ts"
"name": "string.template.ts punctuation.definition.string.template.begin.ts"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.ts"
"name": "string.template.ts punctuation.definition.string.template.end.ts"
}
},
"patterns": [
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/8e4e371fe8dd57560b16a44474f8cf8ca981e715",
"version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/0d73d1117e0a9b1d6635ebbe9aa37d615171b02d",
"name": "TypeScriptReact",
"scopeName": "source.tsx",
"patterns": [
@@ -989,6 +989,9 @@
},
{
"include": "#parameter-binding-element"
},
{
"include": "#paren-expression"
}
]
},
@@ -1171,7 +1174,7 @@
"name": "keyword.operator.assignment.tsx"
}
},
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
"end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
"patterns": [
{
"include": "#expression"
@@ -2912,6 +2915,9 @@
},
{
"include": "#punctuation-comma"
},
{
"include": "#decl-block"
}
]
},
@@ -3317,7 +3323,7 @@
"name": "keyword.control.satisfies.tsx"
}
},
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+)|(\\s+\\<))",
"end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
"patterns": [
{
"include": "#type"
@@ -3423,8 +3429,11 @@
"name": "keyword.operator.expression.typeof.tsx"
}
},
"end": "(?=[,);}\\]=>:&|{\\?]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\b))",
"patterns": [
{
"include": "#type-arguments"
},
{
"include": "#expression"
}
@@ -3788,7 +3797,7 @@
"name": "keyword.operator.type.annotation.tsx"
}
},
"end": "(?<![:|&])((?=$|^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -3803,7 +3812,7 @@
"name": "keyword.operator.type.annotation.tsx"
}
},
"end": "(?<![:|&])((?=[,);\\}\\]]|//)|(?==[^>])|(?=^\\s*$)|((?<=\\S)(?=\\s*$))|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
"patterns": [
{
"include": "#type"
@@ -4650,20 +4659,20 @@
"include": "#template-call"
},
{
"name": "string.template.tsx",
"contentName": "string.template.tsx",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.tsx"
},
"2": {
"name": "punctuation.definition.string.template.begin.tsx"
"name": "string.template.tsx punctuation.definition.string.template.begin.tsx"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.tsx"
"name": "string.template.tsx punctuation.definition.string.template.end.tsx"
}
},
"patterns": [
@@ -4680,7 +4689,6 @@
"template-call": {
"patterns": [
{
"name": "string.template.tsx",
"begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
"end": "(?=`)",
"patterns": [
@@ -4703,7 +4711,6 @@
]
},
{
"name": "string.template.tsx",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
"beginCaptures": {
"1": {
@@ -4759,20 +4766,20 @@
"include": "#template-call"
},
{
"name": "string.template.tsx",
"contentName": "string.template.tsx",
"begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
"beginCaptures": {
"1": {
"name": "entity.name.function.tagged-template.tsx"
},
"2": {
"name": "punctuation.definition.string.template.begin.tsx"
"name": "string.template.tsx punctuation.definition.string.template.begin.tsx"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.template.end.tsx"
"name": "string.template.tsx punctuation.definition.string.template.end.tsx"
}
},
"patterns": [
@@ -103,7 +103,7 @@ interface LanguageDiagnosticSettings {
function areLanguageDiagnosticSettingsEqual(currentSettings: LanguageDiagnosticSettings, newSettings: LanguageDiagnosticSettings): boolean {
return currentSettings.validate === newSettings.validate
&& currentSettings.enableSuggestions && currentSettings.enableSuggestions;
&& currentSettings.enableSuggestions === newSettings.enableSuggestions;
}
class DiagnosticSettings {
@@ -605,11 +605,14 @@ export default class TypeScriptServiceClient extends Disposable implements IType
this.lastStart = Date.now();
startService = false;
this.hasServerFatallyCrashedTooManyTimes = true;
prompt = vscode.window.showErrorMessage(
this.pluginManager.plugins.length
? vscode.l10n.t("The JS/TS language service immediately crashed 5 times. The service will not be restarted.\nThis may be caused by a plugin contributed by one of these extensions: {0}", pluginExtensionList)
: vscode.l10n.t("The JS/TS language service immediately crashed 5 times. The service will not be restarted."),
reportIssueItem);
if (this.pluginManager.plugins.length) {
prompt = vscode.window.showErrorMessage<vscode.MessageItem>(
vscode.l10n.t("The JS/TS language service immediately crashed 5 times. The service will not be restarted.\nThis may be caused by a plugin contributed by one of these extensions: {0}.\nPlease try disabling these extensions before filing an issue against VS Code.", pluginExtensionList));
} else {
prompt = vscode.window.showErrorMessage(
vscode.l10n.t("The JS/TS language service immediately crashed 5 times. The service will not be restarted."),
reportIssueItem);
}
/* __GDPR__
"serviceExited" : {
@@ -623,22 +626,28 @@ export default class TypeScriptServiceClient extends Disposable implements IType
} else if (diff < 60 * 1000 * 5 /* 5 Minutes */) {
this.lastStart = Date.now();
if (!this._isPromptingAfterCrash) {
prompt = vscode.window.showWarningMessage(
this.pluginManager.plugins.length
? vscode.l10n.t("The JS/TS language service crashed 5 times in the last 5 Minutes.\nThis may be caused by a plugin contributed by one of these extensions: {0}", pluginExtensionList)
: vscode.l10n.t("The JS/TS language service crashed 5 times in the last 5 Minutes."),
reportIssueItem);
if (this.pluginManager.plugins.length) {
prompt = vscode.window.showWarningMessage<vscode.MessageItem>(
vscode.l10n.t("The JS/TS language service crashed 5 times in the last 5 Minutes.\nThis may be caused by a plugin contributed by one of these extensions: {0}\nPlease try disabling these extensions before filing an issue against VS Code.", pluginExtensionList));
} else {
prompt = vscode.window.showWarningMessage(
vscode.l10n.t("The JS/TS language service crashed 5 times in the last 5 Minutes."),
reportIssueItem);
}
}
}
} else if (['vscode-insiders', 'code-oss'].includes(vscode.env.uriScheme)) {
// Prompt after a single restart
this.numberRestarts = 0;
if (!this._isPromptingAfterCrash) {
prompt = vscode.window.showWarningMessage(
this.pluginManager.plugins.length
? vscode.l10n.t("The JS/TS language service crashed.\nThis may be caused by a plugin contributed by one of these extensions: {0}", pluginExtensionList)
: vscode.l10n.t("The JS/TS language service crashed."),
reportIssueItem);
if (this.pluginManager.plugins.length) {
prompt = vscode.window.showWarningMessage<vscode.MessageItem>(
vscode.l10n.t("The JS/TS language service crashed.\nThis may be caused by a plugin contributed by one of these extensions: {0}.\nPlease try disabling these extensions before filing an issue against VS Code.", pluginExtensionList));
} else {
prompt = vscode.window.showWarningMessage(
vscode.l10n.t("The JS/TS language service crashed."),
reportIssueItem);
}
}
}
@@ -1047,7 +1056,7 @@ function getReportIssueArgsForError(
[
`**Global TypeScript Server Plugins**`,
`❗️ Please test with extensions disabled. Extensions are the root cause of most TypeScript server crashes`,
globalPlugins.map(plugin => `- \`${plugin.name}\``).join('\n')
globalPlugins.map(plugin => `- \`${plugin.name}\` contributed by the \`${plugin.extension.id}\` extension`).join('\n')
].join('\n\n')
);
}
@@ -393,12 +393,12 @@
},
{
"c": "tag",
"t": "source.ts string.template.ts entity.name.function.tagged-template.ts",
"t": "source.ts entity.name.function.tagged-template.ts",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
"dark_vs": "string: #CE9178",
"light_vs": "string: #A31515",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "entity.name.function: #DCDCAA",
"dark_plus_experimental": "entity.name.function: #DCDCAA",
"hc_light": "entity.name.function: #5E2CBC",
@@ -2478,8 +2478,22 @@
}
},
{
"c": "{ ",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js",
"c": "{",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.block.js punctuation.definition.block.js",
"r": {
"dark_plus": "meta.embedded: #D4D4D4",
"light_plus": "meta.embedded: #000000",
"dark_vs": "meta.embedded: #D4D4D4",
"light_vs": "meta.embedded: #000000",
"hc_black": "meta.embedded: #FFFFFF",
"dark_plus_experimental": "meta.embedded: #D4D4D4",
"hc_light": "meta.embedded: #292929",
"light_plus_experimental": "meta.embedded: #000000"
}
},
{
"c": " ",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.block.js",
"r": {
"dark_plus": "meta.embedded: #D4D4D4",
"light_plus": "meta.embedded: #000000",
@@ -2493,7 +2507,7 @@
},
{
"c": "modules",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.object.member.js variable.other.readwrite.js",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.block.js variable.other.readwrite.js",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
@@ -2507,7 +2521,21 @@
},
{
"c": " ",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.object.member.js",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.block.js",
"r": {
"dark_plus": "meta.embedded: #D4D4D4",
"light_plus": "meta.embedded: #000000",
"dark_vs": "meta.embedded: #D4D4D4",
"light_vs": "meta.embedded: #000000",
"hc_black": "meta.embedded: #FFFFFF",
"dark_plus_experimental": "meta.embedded: #D4D4D4",
"hc_light": "meta.embedded: #292929",
"light_plus_experimental": "meta.embedded: #000000"
}
},
{
"c": "}",
"t": "text.html.derivative meta.embedded.block.html source.js meta.objectliteral.js meta.block.js punctuation.definition.block.js",
"r": {
"dark_plus": "meta.embedded: #D4D4D4",
"light_plus": "meta.embedded: #000000",
@@ -2533,20 +2561,6 @@
"light_plus_experimental": "meta.embedded: #000000"
}
},
{
"c": "}",
"t": "text.html.derivative meta.embedded.block.html source.js",
"r": {
"dark_plus": "meta.embedded: #D4D4D4",
"light_plus": "meta.embedded: #000000",
"dark_vs": "meta.embedded: #D4D4D4",
"light_vs": "meta.embedded: #000000",
"hc_black": "meta.embedded: #FFFFFF",
"dark_plus_experimental": "meta.embedded: #D4D4D4",
"hc_light": "meta.embedded: #292929",
"light_plus_experimental": "meta.embedded: #000000"
}
},
{
"c": ",",
"t": "text.html.derivative meta.embedded.block.html source.js punctuation.separator.comma.js",
+4 -4
View File
@@ -228,10 +228,10 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
typescript@^4.9.5:
version "4.9.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
typescript@^5.0.0-dev.20230224:
version "5.0.0-dev.20230224"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.0-dev.20230224.tgz#801908424fafe3f5728320348ad0dc966960fd69"
integrity sha512-ntlbPkFF0PM1+lmvLenUGwo+3EJPq5QAvAsw+6HA6KTOHpF3IcmYE57rcgpL54NLXhqz84RNTtcmb4dttBuBsA==
vscode-grammar-updater@^1.1.0:
version "1.1.0"
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "code-oss-dev",
"version": "1.76.0",
"distro": "1112bcec9676e1fbef79686e72269b95b715ef3a",
"version": "1.77.0",
"distro": "5c3ced825bd240368133d5253c94a0e5588168ae",
"author": {
"name": "Microsoft Corporation"
},
@@ -210,7 +210,7 @@
"ts-loader": "^9.2.7",
"ts-node": "^10.9.1",
"tsec": "0.1.4",
"typescript": "^5.0.0-dev.20230209",
"typescript": "^5.0.0-dev.20230224",
"typescript-formatter": "7.1.0",
"underscore": "^1.12.1",
"util": "^0.12.4",
+1 -1
View File
@@ -47,7 +47,7 @@
},
{
"name": "ms-vscode.js-debug",
"version": "1.75.1",
"version": "1.76.0",
"repo": "https://github.com/microsoft/vscode-js-debug",
"metadata": {
"id": "25629058-ddac-4e17-abba-74678e126c5d",
+1 -1
View File
@@ -73,6 +73,6 @@ exports.load = function (entrypoint, onLoad, onError) {
onLoad = onLoad || function () { };
onError = onError || function (err) { console.error(err); };
performance.mark(`code/fork/willLoadCode`);
performance.mark('code/fork/willLoadCode');
loader([entrypoint], onLoad, onError);
};
+15 -6
View File
@@ -239,13 +239,22 @@ function terminateWhenParentTerminates() {
function configureCrashReporter() {
const crashReporterSandboxedHint = process.env['VSCODE_CRASH_REPORTER_SANDBOXED_HINT'];
if (crashReporterSandboxedHint) {
try {
if (process['crashReporter'] && typeof process['crashReporter'].addExtraParameter === 'function' /* Electron only */) {
process['crashReporter'].addExtraParameter('_sandboxed', 'true');
}
} catch (error) {
console.error(error);
addCrashReporterParameter('_sandboxed', 'true');
}
const crashReporterProcessType = process.env['VSCODE_CRASH_REPORTER_PROCESS_TYPE'];
if (crashReporterProcessType) {
addCrashReporterParameter('processType', crashReporterProcessType);
}
}
function addCrashReporterParameter(key, value) {
try {
if (process['crashReporter'] && typeof process['crashReporter'].addExtraParameter === 'function' /* Electron only */) {
process['crashReporter'].addExtraParameter(key, value);
}
} catch (error) {
console.error(error);
}
}
+5 -3
View File
@@ -103,10 +103,12 @@ let osLocale = undefined;
// Ref https://github.com/microsoft/vscode/issues/159813
// and https://github.com/electron/electron/pull/36035
if ('getPreferredSystemLanguages' in app
&& typeof app.getPreferredSystemLanguages === 'function'
&& app.getPreferredSystemLanguages().length) {
&& typeof app.getPreferredSystemLanguages === 'function') {
// Use the most preferred OS language for language recommendation.
osLocale = app.getPreferredSystemLanguages()[0];
// The API might return an empty array on Linux, such as when
// the 'C' locale is the user's only configured locale.
// No matter the OS, if the array is empty, default back to 'en'.
osLocale = app.getPreferredSystemLanguages()?.[0] ?? 'en';
if (osLocale) {
osLocale = processZhLocale(osLocale.toLowerCase());
}
+12 -8
View File
@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
import { COI } from 'vs/base/common/network';
import { globals } from 'vs/base/common/platform';
import { IWorker, IWorkerCallback, IWorkerFactory, logOnceWebWorkerWarning } from 'vs/base/common/worker/simpleWorker';
const ttPolicy = window.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });
@@ -18,12 +17,17 @@ export function createBlobWorker(blobUrl: string, options?: WorkerOptions): Work
function getWorker(label: string): Worker | Promise<Worker> {
// Option for hosts to overwrite the worker script (used in the standalone editor)
if (globals.MonacoEnvironment) {
if (typeof globals.MonacoEnvironment.getWorker === 'function') {
return globals.MonacoEnvironment.getWorker('workerMain.js', label);
interface IMonacoEnvironment {
getWorker?(moduleId: string, label: string): Worker | Promise<Worker>;
getWorkerUrl?(moduleId: string, label: string): string;
}
const monacoEnvironment: IMonacoEnvironment | undefined = (globalThis as any).MonacoEnvironment;
if (monacoEnvironment) {
if (typeof monacoEnvironment.getWorker === 'function') {
return monacoEnvironment.getWorker('workerMain.js', label);
}
if (typeof globals.MonacoEnvironment.getWorkerUrl === 'function') {
const workerUrl = <string>globals.MonacoEnvironment.getWorkerUrl('workerMain.js', label);
if (typeof monacoEnvironment.getWorkerUrl === 'function') {
const workerUrl = monacoEnvironment.getWorkerUrl('workerMain.js', label);
return new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label });
}
}
@@ -40,12 +44,12 @@ function getWorker(label: string): Worker | Promise<Worker> {
// ESM-comment-begin
export function getWorkerBootstrapUrl(scriptPath: string, label: string): string {
if (/^((http:)|(https:)|(file:))/.test(scriptPath) && scriptPath.substring(0, self.origin.length) !== self.origin) {
if (/^((http:)|(https:)|(file:))/.test(scriptPath) && scriptPath.substring(0, globalThis.origin.length) !== globalThis.origin) {
// this is the cross-origin case
// i.e. the webpage is running at a different origin than where the scripts are loaded from
const myPath = 'vs/base/worker/defaultWorkerFactory.js';
const workerBaseUrl = require.toUrl(myPath).slice(0, -myPath.length); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321
const js = `/*${label}*/self.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};const ttPolicy = self.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${scriptPath}') ?? '${scriptPath}');/*${label}*/`;
const js = `/*${label}*/globalThis.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${scriptPath}') ?? '${scriptPath}');/*${label}*/`;
const blob = new Blob([js], { type: 'application/javascript' });
return URL.createObjectURL(blob);
}
+1 -1
View File
@@ -74,7 +74,7 @@ export class StandardMouseEvent implements IMouseEvent {
}
// Find the position of the iframe this code is executing in relative to the iframe where the event was captured.
const iframeOffsets = IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(self, e.view);
const iframeOffsets = IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(window, e.view);
this.posx -= iframeOffsets.left;
this.posy -= iframeOffsets.top;
}
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { $ } from 'vs/base/browser/dom';
import { $, IDomNodePagePosition } from 'vs/base/browser/dom';
import { IView, IViewSize } from 'vs/base/browser/ui/grid/grid';
import { IBoundarySashes } from 'vs/base/browser/ui/sash/sash';
import { DistributeSizing, ISplitViewStyles, IView as ISplitViewView, Orientation, SplitView } from 'vs/base/browser/ui/splitview/splitview';
@@ -61,8 +61,7 @@ export interface ICenteredViewStyles extends ISplitViewStyles {
export class CenteredViewLayout implements IDisposable {
private splitView?: SplitView<{ top: number; left: number }>;
private width: number = 0;
private height: number = 0;
private lastLayoutPosition: IDomNodePagePosition = { width: 0, height: 0, left: 0, top: 0 };
private style!: ICenteredViewStyles;
private didLayout = false;
private emptyViews: ISplitViewView<{ top: number; left: number }>[] | undefined;
@@ -99,10 +98,9 @@ export class CenteredViewLayout implements IDisposable {
}
layout(width: number, height: number, top: number, left: number): void {
this.width = width;
this.height = height;
this.lastLayoutPosition = { width, height, top, left };
if (this.splitView) {
this.splitView.layout(width);
this.splitView.layout(width, this.lastLayoutPosition);
if (!this.didLayout || this.centeredLayoutFixedWidth) {
this.resizeSplitViews();
}
@@ -118,16 +116,15 @@ export class CenteredViewLayout implements IDisposable {
return;
}
if (this.centeredLayoutFixedWidth) {
const centerViewWidth = Math.min(this.width, this.state.targetWidth);
const marginWidthFloat = (this.width - centerViewWidth) / 2;
const centerViewWidth = Math.min(this.lastLayoutPosition.width, this.state.targetWidth);
const marginWidthFloat = (this.lastLayoutPosition.width - centerViewWidth) / 2;
this.splitView.resizeView(0, Math.floor(marginWidthFloat));
this.splitView.resizeView(1, centerViewWidth);
this.splitView.resizeView(2, Math.ceil(marginWidthFloat));
} else {
const leftMargin = this.state.leftMarginRatio * this.width;
const rightMargin = this.state.rightMarginRatio * this.width;
const center = this.width - leftMargin - rightMargin;
const leftMargin = this.state.leftMarginRatio * this.lastLayoutPosition.width;
const rightMargin = this.state.rightMarginRatio * this.lastLayoutPosition.width;
const center = this.lastLayoutPosition.width - leftMargin - rightMargin;
this.splitView.resizeView(0, leftMargin);
this.splitView.resizeView(1, center);
this.splitView.resizeView(2, rightMargin);
@@ -145,8 +142,8 @@ export class CenteredViewLayout implements IDisposable {
private updateState() {
if (!!this.splitView) {
this.state.targetWidth = this.splitView.getViewSize(1);
this.state.leftMarginRatio = this.splitView.getViewSize(0) / this.width;
this.state.rightMarginRatio = this.splitView.getViewSize(2) / this.width;
this.state.leftMarginRatio = this.splitView.getViewSize(0) / this.lastLayoutPosition.width;
this.state.rightMarginRatio = this.splitView.getViewSize(2) / this.lastLayoutPosition.width;
}
}
@@ -188,12 +185,12 @@ export class CenteredViewLayout implements IDisposable {
this.resizeSplitViews();
}));
this.splitView.layout(this.width);
this.splitView.layout(this.lastLayoutPosition.width, this.lastLayoutPosition);
const backgroundColor = this.style ? this.style.background : undefined;
this.emptyViews = [createEmptyView(backgroundColor), createEmptyView(backgroundColor)];
this.splitView.addView(this.emptyViews[0], distributeSizing, 0);
this.splitView.addView(toSplitViewView(this.view, () => this.height), distributeSizing, 1);
this.splitView.addView(toSplitViewView(this.view, () => this.lastLayoutPosition.height), distributeSizing, 1);
this.splitView.addView(this.emptyViews[1], distributeSizing, 2);
this.resizeSplitViews();
@@ -206,7 +203,7 @@ export class CenteredViewLayout implements IDisposable {
this.splitView = undefined;
this.emptyViews = undefined;
this.container.appendChild(this.view.element);
this.view.layout(this.width, this.height, 0, 0);
this.view.layout(this.lastLayoutPosition.width, this.lastLayoutPosition.height, this.lastLayoutPosition.top, this.lastLayoutPosition.left);
}
}
@@ -1383,12 +1383,14 @@ export class SplitView<TLayoutContext = undefined> extends Disposable {
}
override dispose(): void {
super.dispose();
this.sashDragState?.disposable.dispose();
dispose(this.viewItems);
this.viewItems = [];
this.sashItems.forEach(i => i.disposable.dispose());
this.sashItems = [];
super.dispose();
}
}
+32
View File
@@ -632,3 +632,35 @@ export class LRUCache<K, V> extends LinkedMap<K, V> {
}
}
}
export class CounterSet<T> {
private map = new Map<T, number>();
add(value: T): CounterSet<T> {
this.map.set(value, (this.map.get(value) || 0) + 1);
return this;
}
delete(value: T): boolean {
let counter = this.map.get(value) || 0;
if (counter === 0) {
return false;
}
counter--;
if (counter === 0) {
this.map.delete(value);
} else {
this.map.set(value, counter);
}
return true;
}
has(value: T): boolean {
return this.map.has(value);
}
}
+4 -1
View File
@@ -44,6 +44,7 @@ export interface INodeProcess {
env: IProcessEnvironment;
versions?: {
electron?: string;
chrome?: string;
};
type?: string;
cwd: () => string;
@@ -135,7 +136,9 @@ export const enum Platform {
Linux,
Windows
}
export function PlatformToString(platform: Platform) {
export type PlatformName = 'Web' | 'Windows' | 'Mac' | 'Linux';
export function PlatformToString(platform: Platform): PlatformName {
switch (platform) {
case Platform.Web: return 'Web';
case Platform.Mac: return 'Mac';
+3
View File
@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { IStringDictionary } from 'vs/base/common/collections';
import { PlatformName } from 'vs/base/common/platform';
export interface IBuiltInExtension {
readonly name: string;
@@ -198,11 +199,13 @@ export interface IExeBasedExtensionTip {
export interface IRemoteExtensionTip {
friendlyName: string;
extensionId: string;
supportedPlatforms?: PlatformName[];
}
export interface IVirtualWorkspaceExtensionTip {
friendlyName: string;
extensionId: string;
supportedPlatforms?: PlatformName[];
}
export interface ISurveyData {
+10 -8
View File
@@ -7,7 +7,7 @@ import { transformErrorForSerialization } from 'vs/base/common/errors';
import { Emitter, Event } from 'vs/base/common/event';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { getAllMethodNames } from 'vs/base/common/objects';
import { globals, isWeb } from 'vs/base/common/platform';
import { isWeb } from 'vs/base/common/platform';
import * as strings from 'vs/base/common/strings';
const INITIALIZE = '$initialize';
@@ -324,12 +324,14 @@ export class SimpleWorkerClient<W extends object, H extends object> extends Disp
// Gather loader configuration
let loaderConfiguration: any = null;
if (typeof globals.require !== 'undefined' && typeof globals.require.getConfig === 'function') {
const globalRequire: { getConfig?(): object } | undefined = (globalThis as any).require;
if (typeof globalRequire !== 'undefined' && typeof globalRequire.getConfig === 'function') {
// Get the configuration from the Monaco AMD Loader
loaderConfiguration = globals.require.getConfig();
} else if (typeof globals.requirejs !== 'undefined') {
loaderConfiguration = globalRequire.getConfig();
} else if (typeof (globalThis as any).requirejs !== 'undefined') {
// Get the configuration from requirejs
loaderConfiguration = globals.requirejs.s.contexts._.config;
loaderConfiguration = (globalThis as any).requirejs.s.contexts._.config;
}
const hostMethods = getAllMethodNames(host);
@@ -527,17 +529,17 @@ export class SimpleWorkerServer<H extends object> {
// Since this is in a web worker, enable catching errors
loaderConfig.catchError = true;
globals.require.config(loaderConfig);
globalThis.require.config(loaderConfig);
}
return new Promise<string[]>((resolve, reject) => {
// Use the global require to be sure to get the global config
// ESM-comment-begin
const req = (globals.require || require);
const req = (globalThis.require || require);
// ESM-comment-end
// ESM-uncomment-begin
// const req = globals.require;
// const req = globalThis.require;
// ESM-uncomment-end
req([moduleId], (module: { create: IRequestHandlerFactory<H> }) => {
+17 -18
View File
@@ -112,33 +112,32 @@
* @param {string | undefined} language
*/
function getNLSConfiguration(commit, userDataPath, metaDataFile, locale, language) {
if (process.env['VSCODE_DEV']) {
const defaultResult = function (locale) {
perf.mark('code/didGenerateNls');
return Promise.resolve({ locale, availableLanguages: {} });
};
perf.mark('code/willGenerateNls');
// We are in development mode. So we don't have a built version
if (process.env['VSCODE_DEV']) {
return defaultResult(locale);
}
// Also in development mode if we don't have a commit
if (!commit) {
return defaultResult(locale);
}
// We have a built version so we have extracted nls file. Try to find
// the right file to use.
// If we didn't specify a language, use the default
if (!language) {
return Promise.resolve({ locale, availableLanguages: {} });
// If we didn't specify a language, or if we specified English or English US,
// use the default.
if (!language || language === 'en' || language === 'en-us') {
return defaultResult(locale);
}
// If we specified English or English US, return that as the available language.
if (language === 'en' || language === 'en-us') {
return Promise.resolve({ locale, availableLanguages: { '*': 'en' } });
}
perf.mark('code/willGenerateNls');
const defaultResult = function (locale) {
perf.mark('code/didGenerateNls');
return Promise.resolve({ locale, availableLanguages: {} });
};
try {
if (!commit) {
return defaultResult(locale);
}
return getLanguagePackConfigurations(userDataPath).then(configs => {
if (!configs) {
return defaultResult(locale);
+10 -31
View File
@@ -48,13 +48,8 @@ export function listProcesses(rootPid: number): Promise<ProcessItem> {
function findName(cmd: string): string {
const SHARED_PROCESS_HINT = /--vscode-window-kind=shared-process/i; // TODO@bpasero remove me
const ISSUE_REPORTER_HINT = /--vscode-window-kind=issue-reporter/i;
const PROCESS_EXPLORER_HINT = /--vscode-window-kind=process-explorer/i;
const UTILITY_NETWORK_HINT = /--utility-sub-type=network/i;
const UTILITY_EXTENSION_HOST_HINT = /--vscode-utility-kind=extensionHost/i;
const UTILITY_FILE_WATCHER_HOST_HINT = /--vscode-utility-kind=fileWatcher/i;
const UTILITY_SHARED_PROCESS_HINT = /--vscode-utility-kind=shared-process/i;
const NODEJS_PROCESS_HINT = /--ms-enable-electron-run-as-node/i;
const WINDOWS_CRASH_REPORTER = /--crashes-directory/i;
const WINDOWS_PTY = /\\pipe\\winpty-control/i;
const WINDOWS_CONSOLE_HOST = /conhost\.exe/i;
@@ -70,7 +65,7 @@ export function listProcesses(rootPid: number): Promise<ProcessItem> {
return 'winpty-process';
}
//find windows console host process
// find windows console host process
if (WINDOWS_CONSOLE_HOST.exec(cmd)) {
return 'console-window-host (Windows internal process)';
}
@@ -79,35 +74,13 @@ export function listProcesses(rootPid: number): Promise<ProcessItem> {
let matches = TYPE.exec(cmd);
if (matches && matches.length === 2) {
if (matches[1] === 'renderer') {
if (SHARED_PROCESS_HINT.exec(cmd)) {
return 'shared-process';
}
if (ISSUE_REPORTER_HINT.exec(cmd)) {
return 'issue-reporter';
}
if (PROCESS_EXPLORER_HINT.exec(cmd)) {
return 'process-explorer';
}
return `window`;
} else if (matches[1] === 'utility') {
if (UTILITY_NETWORK_HINT.exec(cmd)) {
return 'utility-network-service';
}
if (UTILITY_EXTENSION_HOST_HINT.exec(cmd)) {
return 'extension-host';
}
if (UTILITY_FILE_WATCHER_HOST_HINT.exec(cmd)) {
return 'file-watcher';
}
if (UTILITY_SHARED_PROCESS_HINT.exec(cmd)) {
return 'shared-process';
}
return 'utility-process';
} else if (matches[1] === 'extensionHost') {
return 'extension-host'; // normalize remote extension host type
}
@@ -126,9 +99,15 @@ export function listProcesses(rootPid: number): Promise<ProcessItem> {
if (result) {
if (cmd.indexOf('node ') < 0 && cmd.indexOf('node.exe') < 0) {
return `electron_node ${result}`;
return `electron-nodejs (${result})`;
}
}
// find Electron node.js processes
if (NODEJS_PROCESS_HINT.exec(cmd)) {
return `electron-nodejs (${cmd})`;
}
return cmd;
}
+4 -1
View File
@@ -14,6 +14,9 @@ import * as nls from 'vs/nls';
import { Entry, open as _openZip, ZipFile } from 'yauzl';
import * as yazl from 'yazl';
export const CorruptZipMessage: string = 'end of central directory record signature not found';
const CORRUPT_ZIP_PATTERN = new RegExp(CorruptZipMessage);
export interface IExtractOptions {
overwrite?: boolean;
@@ -63,7 +66,7 @@ function toExtractError(err: Error): ExtractError {
let type: ExtractErrorType | undefined = undefined;
if (/end of central directory record signature not found/.test(err.message)) {
if (CORRUPT_ZIP_PATTERN.test(err.message)) {
type = 'CorruptZip';
}
+1 -1
View File
@@ -949,7 +949,7 @@ export class IPCServer<TContext = string> implements IChannelServer<TContext>, I
* An `IPCClient` is both a channel client and a channel server.
*
* As the owner of a protocol, you should extend both this
* and the `IPCClient` classes to get IPC implementations
* and the `IPCServer` classes to get IPC implementations
* for your protocol.
*/
export class IPCClient<TContext = string> implements IChannelClient, IChannelServer<TContext>, IDisposable {
+58 -17
View File
@@ -189,7 +189,15 @@ export class NodeSocket implements ISocket {
}
const enum Constants {
MinHeaderByteSize = 2
MinHeaderByteSize = 2,
/**
* If we need to write a large buffer, we will split it into 256KB chunks and
* send each chunk as a websocket message. This is to prevent that the sending
* side is stuck waiting for the entire buffer to be compressed before writing
* to the underlying socket or that the receiving side is stuck waiting for the
* entire message to be received before processing the bytes.
*/
MaxWebSocketMessageLength = 256 * 1024 // 256 KB
}
const enum ReadState {
@@ -272,7 +280,14 @@ export class WebSocketNodeSocket extends Disposable implements ISocket, ISocketT
}));
this._incomingData = new ChunkStream();
this._register(this.socket.onData(data => this._acceptChunk(data)));
this._register(this.socket.onClose((e) => this._onClose.fire(e)));
this._register(this.socket.onClose(async (e) => {
// Delay surfacing the close event until the async inflating is done
// and all data has been emitted
if (this._flowManager.isProcessingReadQueue()) {
await Event.toPromise(this._flowManager.onDidFinishProcessingReadQueue);
}
this._onClose.fire(e);
}));
}
public override dispose(): void {
@@ -300,7 +315,23 @@ export class WebSocketNodeSocket extends Disposable implements ISocket, ISocketT
}
public write(buffer: VSBuffer): void {
this._flowManager.writeMessage(buffer);
// If we write many logical messages (let's say 1000 messages of 100KB) during a single process tick, we do
// this thing where we install a process.nextTick timer and group all of them together and we then issue a
// single WebSocketNodeSocket.write with a 100MB buffer.
//
// The first problem is that the actual writing to the underlying node socket will only happen after all of
// the 100MB have been deflated (due to waiting on zlib flush). The second problem is on the reading side,
// where we will get a single WebSocketNodeSocket.onData event fired when all the 100MB have arrived,
// delaying processing the 1000 received messages until all have arrived, instead of processing them as each
// one arrives.
//
// We therefore split the buffer into chunks, and issue a write for each chunk.
let start = 0;
while (start < buffer.byteLength) {
this._flowManager.writeMessage(buffer.slice(start, Math.min(start + Constants.MaxWebSocketMessageLength, buffer.byteLength)));
start += Constants.MaxWebSocketMessageLength;
}
}
private _write(buffer: VSBuffer, compressed: boolean): void {
@@ -465,6 +496,9 @@ class WebSocketFlowManager extends Disposable {
private readonly _writeQueue: VSBuffer[] = [];
private readonly _readQueue: { data: VSBuffer; isCompressed: boolean; isLastFrameOfMessage: boolean }[] = [];
private readonly _onDidFinishProcessingReadQueue = this._register(new Emitter<void>());
public readonly onDidFinishProcessingReadQueue = this._onDidFinishProcessingReadQueue.event;
private readonly _onDidFinishProcessingWriteQueue = this._register(new Emitter<void>());
public readonly onDidFinishProcessingWriteQueue = this._onDidFinishProcessingWriteQueue.event;
@@ -565,6 +599,11 @@ class WebSocketFlowManager extends Disposable {
}
}
this._isProcessingReadQueue = false;
this._onDidFinishProcessingReadQueue.fire();
}
public isProcessingReadQueue(): boolean {
return (this._isProcessingReadQueue);
}
/**
@@ -733,14 +772,10 @@ export function createRandomIPCHandle(): string {
return `\\\\.\\pipe\\vscode-ipc-${randomSuffix}-sock`;
}
// Mac/Unix: use socket file and prefer
// XDG_RUNTIME_DIR over tmpDir
let result: string;
if (XDG_RUNTIME_DIR) {
result = join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);
} else {
result = join(getNodeDependencies().os.tmpdir(), `vscode-ipc-${randomSuffix}.sock`);
}
// Mac & Unix: Use socket file
// Unix: Prefer XDG_RUNTIME_DIR over user data path
const basePath = process.platform !== 'darwin' && XDG_RUNTIME_DIR ? XDG_RUNTIME_DIR : getNodeDependencies().os.tmpdir();
const result = join(basePath, `vscode-ipc-${randomSuffix}.sock`);
// Validate length
validateIPCHandleLength(result);
@@ -756,14 +791,20 @@ export function createStaticIPCHandle(directoryPath: string, type: string, versi
return `\\\\.\\pipe\\${scope}-${version}-${type}-sock`;
}
// Mac/Unix: use socket file and prefer
// XDG_RUNTIME_DIR over user data path
// unless portable
// Mac & Unix: Use socket file
// Unix: Prefer XDG_RUNTIME_DIR over user data path, unless portable
// Trim the version and type values for the socket to prevent too large
// file names causing issues: https://unix.stackexchange.com/q/367008
const versionForSocket = version.substr(0, 4);
const typeForSocket = type.substr(0, 6);
const scopeForSocket = scope.substr(0, 8);
let result: string;
if (XDG_RUNTIME_DIR && !process.env['VSCODE_PORTABLE']) {
result = join(XDG_RUNTIME_DIR, `vscode-${scope.substr(0, 8)}-${version}-${type}.sock`);
if (process.platform !== 'darwin' && XDG_RUNTIME_DIR && !process.env['VSCODE_PORTABLE']) {
result = join(XDG_RUNTIME_DIR, `vscode-${scopeForSocket}-${versionForSocket}-${typeForSocket}.sock`);
} else {
result = join(directoryPath, `${version}-${type}.sock`);
result = join(directoryPath, `${versionForSocket}-${typeForSocket}.sock`);
}
// Validate length
@@ -5,7 +5,7 @@
import * as assert from 'assert';
import { EventEmitter } from 'events';
import { createServer, Socket } from 'net';
import { AddressInfo, connect, createServer, Server, Socket } from 'net';
import { tmpdir } from 'os';
import { Barrier, timeout } from 'vs/base/common/async';
import { VSBuffer } from 'vs/base/common/buffer';
@@ -706,4 +706,63 @@ suite('WebSocketNodeSocket', () => {
assert.deepStrictEqual(actual, 'Helloworld');
});
});
test('Large buffers are split and sent in chunks', async () => {
let receivingSideOnDataCallCount = 0;
let receivingSideTotalBytes = 0;
const receivingSideSocketClosedBarrier = new Barrier();
const server = await listenOnRandomPort((socket) => {
// stop the server when the first connection is received
server.close();
const webSocketNodeSocket = new WebSocketNodeSocket(new NodeSocket(socket), true, null, false);
webSocketNodeSocket.onData((data) => {
receivingSideOnDataCallCount++;
receivingSideTotalBytes += data.byteLength;
});
webSocketNodeSocket.onClose(() => {
webSocketNodeSocket.dispose();
receivingSideSocketClosedBarrier.open();
});
});
const socket = connect({
host: '127.0.0.1',
port: (<AddressInfo>server.address()).port
});
const buff = generateRandomBuffer(1 * 1024 * 1024);
const webSocketNodeSocket = new WebSocketNodeSocket(new NodeSocket(socket), true, null, false);
webSocketNodeSocket.write(buff);
await webSocketNodeSocket.drain();
webSocketNodeSocket.dispose();
await receivingSideSocketClosedBarrier.wait();
assert.strictEqual(receivingSideTotalBytes, buff.byteLength);
assert.strictEqual(receivingSideOnDataCallCount, 4);
});
function generateRandomBuffer(size: number): VSBuffer {
const buff = VSBuffer.alloc(size);
for (let i = 0; i < size; i++) {
buff.writeUInt8(Math.floor(256 * Math.random()), i);
}
return buff;
}
function listenOnRandomPort(handler: (socket: Socket) => void): Promise<Server> {
return new Promise((resolve, reject) => {
const server = createServer(handler).listen(0);
server.on('listening', () => {
resolve(server);
});
server.on('error', (err) => {
reject(err);
});
});
}
});
+13 -12
View File
@@ -5,7 +5,7 @@
(function () {
const MonacoEnvironment = (<any>self).MonacoEnvironment;
const MonacoEnvironment = (<any>globalThis).MonacoEnvironment;
const monacoBaseUrl = MonacoEnvironment && MonacoEnvironment.baseUrl ? MonacoEnvironment.baseUrl : '../../../';
const trustedTypesPolicy = (
@@ -29,10 +29,10 @@
try {
const func = (
trustedTypesPolicy
? self.eval(<any>trustedTypesPolicy.createScript('', 'true'))
? globalThis.eval(<any>trustedTypesPolicy.createScript('', 'true'))
: new Function('true')
);
func.call(self);
func.call(globalThis);
return true;
} catch (err) {
return false;
@@ -41,12 +41,12 @@
function loadAMDLoader() {
return new Promise<void>((resolve, reject) => {
if (typeof (<any>self).define === 'function' && (<any>self).define.amd) {
if (typeof (<any>globalThis).define === 'function' && (<any>globalThis).define.amd) {
return resolve();
}
const loaderSrc: string | TrustedScriptURL = monacoBaseUrl + 'vs/loader.js';
const isCrossOrigin = (/^((http:)|(https:)|(file:))/.test(loaderSrc) && loaderSrc.substring(0, self.origin.length) !== self.origin);
const isCrossOrigin = (/^((http:)|(https:)|(file:))/.test(loaderSrc) && loaderSrc.substring(0, globalThis.origin.length) !== globalThis.origin);
if (!isCrossOrigin && canUseEval()) {
// use `fetch` if possible because `importScripts`
// is synchronous and can lead to deadlocks on Safari
@@ -59,10 +59,10 @@
text = `${text}\n//# sourceURL=${loaderSrc}`;
const func = (
trustedTypesPolicy
? self.eval(trustedTypesPolicy.createScript('', text) as unknown as string)
? globalThis.eval(trustedTypesPolicy.createScript('', text) as unknown as string)
: new Function(text)
);
func.call(self);
func.call(globalThis);
resolve();
}).then(undefined, reject);
return;
@@ -92,12 +92,13 @@
require([moduleId], function (ws) {
setTimeout(function () {
const messageHandler = ws.create((msg: any, transfer?: Transferable[]) => {
(<any>self).postMessage(msg, transfer);
(<any>globalThis).postMessage(msg, transfer);
}, null);
self.onmessage = (e: MessageEvent) => messageHandler.onmessage(e.data, e.ports);
globalThis.onmessage = (e: MessageEvent) => messageHandler.onmessage(e.data, e.ports);
while (beforeReadyMessages.length > 0) {
self.onmessage(beforeReadyMessages.shift()!);
const e = beforeReadyMessages.shift()!;
messageHandler.onmessage(e.data, e.ports);
}
}, 0);
});
@@ -107,13 +108,13 @@
// If the loader is already defined, configure it immediately
// This helps in the bundled case, where we must load nls files
// and they need a correct baseUrl to be loaded.
if (typeof (<any>self).define === 'function' && (<any>self).define.amd) {
if (typeof (<any>globalThis).define === 'function' && (<any>globalThis).define.amd) {
configureAMDLoader();
}
let isFirstMessage = true;
const beforeReadyMessages: MessageEvent[] = [];
self.onmessage = (message: MessageEvent) => {
globalThis.onmessage = (message: MessageEvent) => {
if (!isFirstMessage) {
beforeReadyMessages.push(message);
return;
+3 -3
View File
@@ -1248,13 +1248,13 @@ export class CodeApplication extends Disposable {
// Logging
switch (type) {
case WindowError.PROCESS_GONE:
this.logService.error(`SharedProcess: renderer process gone (reason: ${details?.reason || '<unknown>'}, code: ${details?.exitCode || '<unknown>'})`);
this.logService.error(`[SharedProcess] renderer process gone (reason: ${details?.reason || '<unknown>'}, code: ${details?.exitCode || '<unknown>'})`);
break;
case WindowError.UNRESPONSIVE:
this.logService.error('SharedProcess: detected unresponsive');
this.logService.error('[SharedProcess] detected unresponsive');
break;
case WindowError.LOAD:
this.logService.error(`SharedProcess: failed to load (reason: ${details?.reason || '<unknown>'}, code: ${details?.exitCode || '<unknown>'})`);
this.logService.error(`[SharedProcess] failed to load (reason: ${details?.reason || '<unknown>'}, code: ${details?.exitCode || '<unknown>'})`);
break;
}
+4 -4
View File
@@ -16,7 +16,7 @@ import { IPathWithLineAndColumn, isValidBasename, parseLineAndColumnAware, sanit
import { once } from 'vs/base/common/functional';
import { getPathLabel } from 'vs/base/common/labels';
import { Schemas } from 'vs/base/common/network';
import { basename, join, resolve } from 'vs/base/common/path';
import { basename, resolve } from 'vs/base/common/path';
import { mark } from 'vs/base/common/performance';
import { IProcessEnvironment, isMacintosh, isWindows, OS } from 'vs/base/common/platform';
import { cwd } from 'vs/base/common/process';
@@ -131,7 +131,7 @@ class CodeMain {
});
// Delay creation of spdlog for perf reasons (https://github.com/microsoft/vscode/issues/72906)
bufferLogService.logger = loggerService.createLogger(URI.file(join(environmentMainService.logsPath, 'main.log')), { id: 'mainLog', name: localize('mainLog', "Main") });
bufferLogService.logger = loggerService.createLogger('main', { name: localize('mainLog', "Main") });
// Lifecycle
once(lifecycleMainService.onWillShutdown)(evt => {
@@ -162,7 +162,7 @@ class CodeMain {
services.set(IEnvironmentMainService, environmentMainService);
// Logger
const loggerService = new LoggerMainService(getLogLevel(environmentMainService));
const loggerService = new LoggerMainService(getLogLevel(environmentMainService), environmentMainService.logsHome);
services.set(ILoggerMainService, loggerService);
// Log: We need to buffer the spdlog logs until we are sure
@@ -246,7 +246,7 @@ class CodeMain {
Promise.all<string | undefined>([
environmentMainService.extensionsPath,
environmentMainService.codeCachePath,
environmentMainService.logsPath,
environmentMainService.logsHome.fsPath,
userDataProfilesMainService.defaultProfile.globalStorageHome.fsPath,
environmentMainService.workspaceStorageHome.fsPath,
environmentMainService.localHistoryHome.fsPath,
@@ -23,7 +23,7 @@ import { isRemoteDiagnosticError, SystemInfo } from 'vs/platform/diagnostics/com
import { ElectronIPCMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService';
import { IssueReporterData, IssueReporterExtensionData, IssueReporterStyles, IssueReporterWindowConfiguration, IssueType } from 'vs/platform/issue/common/issue';
import { normalizeGitHubUrl } from 'vs/platform/issue/common/issueReporterUtil';
import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';
import { INativeHostService } from 'vs/platform/native/common/native';
import { NativeHostService } from 'vs/platform/native/electron-sandbox/nativeHostService';
import { applyZoom, zoomIn, zoomOut } from 'vs/platform/window/electron-sandbox/window';
@@ -19,7 +19,7 @@ import { IRemoteDiagnosticError, isRemoteDiagnosticError } from 'vs/platform/dia
import { ByteSize } from 'vs/platform/files/common/files';
import { ElectronIPCMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService';
import { ProcessExplorerData, ProcessExplorerStyles, ProcessExplorerWindowConfiguration } from 'vs/platform/issue/common/issue';
import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';
import { INativeHostService } from 'vs/platform/native/common/native';
import { NativeHostService } from 'vs/platform/native/electron-sandbox/nativeHostService';
import { getIconsStyleSheet } from 'vs/platform/theme/browser/iconsStyleSheet';
import { applyZoom, zoomIn, zoomOut } from 'vs/platform/window/electron-sandbox/window';
@@ -163,7 +163,7 @@ class ErrorRenderer implements ITreeRenderer<IRemoteDiagnosticError, void, IProc
class ProcessRenderer implements ITreeRenderer<ProcessItem, void, IProcessItemTemplateData> {
constructor(private platform: string, private totalMem: number, private mapPidToWindowTitle: Map<number, string>) { }
constructor(private platform: string, private totalMem: number, private mapPidToName: Map<number, string>) { }
templateId: string = 'process';
renderTemplate(container: HTMLElement): IProcessItemTemplateData {
@@ -179,13 +179,13 @@ class ProcessRenderer implements ITreeRenderer<ProcessItem, void, IProcessItemTe
renderElement(node: ITreeNode<ProcessItem, void>, index: number, templateData: IProcessItemTemplateData, height: number | undefined): void {
const { element } = node;
let name = element.name;
if (name === 'window') {
const windowTitle = this.mapPidToWindowTitle.get(element.pid);
name = windowTitle !== undefined ? `${name} (${this.mapPidToWindowTitle.get(element.pid)})` : name;
}
const pid = element.pid.toFixed(0);
let name = element.name;
if (this.mapPidToName.has(element.pid)) {
name = this.mapPidToName.get(element.pid)!;
}
templateData.name.textContent = name;
templateData.name.title = element.cmd;
@@ -230,7 +230,7 @@ function isProcessItem(item: any): item is ProcessItem {
class ProcessExplorer {
private lastRequestTime: number;
private mapPidToWindowTitle = new Map<number, string>();
private mapPidToName = new Map<number, string>();
private nativeHostService: INativeHostService;
@@ -243,10 +243,12 @@ class ProcessExplorer {
this.applyStyles(data.styles);
this.setEventHandlers(data);
// Map window process pids to titles, annotate process names with this when rendering to distinguish between them
ipcRenderer.on('vscode:windowsInfoResponse', (event: unknown, windows: any[]) => {
this.mapPidToWindowTitle = new Map<number, string>();
windows.forEach(window => this.mapPidToWindowTitle.set(window.pid, window.title));
ipcRenderer.on('vscode:pidToNameResponse', (event: unknown, pidToNames: [number, string][]) => {
this.mapPidToName = new Map<number, string>();
for (const [pid, name] of pidToNames) {
this.mapPidToName.set(pid, name);
}
});
ipcRenderer.on('vscode:listProcessesResponse', async (event: unknown, processRoots: MachineProcessInformation[]) => {
@@ -267,7 +269,7 @@ class ProcessExplorer {
});
this.lastRequestTime = Date.now();
ipcRenderer.send('vscode:windowsInfoRequest');
ipcRenderer.send('vscode:pidToNameRequest');
ipcRenderer.send('vscode:listProcesses');
}
@@ -304,7 +306,7 @@ class ProcessExplorer {
const { totalmem } = await this.nativeHostService.getOSStatistics();
const renderers = [
new ProcessRenderer(this.data.platform, totalmem, this.mapPidToWindowTitle),
new ProcessRenderer(this.data.platform, totalmem, this.mapPidToName),
new ProcessHeaderTreeRenderer(),
new MachineRenderer(),
new ErrorRenderer()
@@ -556,7 +558,7 @@ class ProcessExplorer {
// Wait at least a second between requests.
if (waited > 1000) {
ipcRenderer.send('vscode:windowsInfoRequest');
ipcRenderer.send('vscode:pidToNameRequest');
ipcRenderer.send('vscode:listProcesses');
} else {
this.requestProcessList(waited);
+11 -9
View File
@@ -39,8 +39,7 @@ import { InstantiationService } from 'vs/platform/instantiation/common/instantia
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { ILanguagePackService } from 'vs/platform/languagePacks/common/languagePacks';
import { NativeLanguagePackService } from 'vs/platform/languagePacks/node/languagePacks';
import { ConsoleLogger, getLogLevel, ILogger, ILogService, LogLevel } from 'vs/platform/log/common/log';
import { SpdLogLogger } from 'vs/platform/log/node/spdlogLog';
import { ConsoleLogger, getLogLevel, ILogger, ILoggerService, ILogService, LogLevel } from 'vs/platform/log/common/log';
import { FilePolicyService } from 'vs/platform/policy/common/filePolicyService';
import { IPolicyService, NullPolicyService } from 'vs/platform/policy/common/policy';
import { NativePolicyService } from 'vs/platform/policy/node/nativePolicyService';
@@ -62,6 +61,8 @@ import { UserDataProfilesReadonlyService } from 'vs/platform/userDataProfile/nod
import { resolveMachineId } from 'vs/platform/telemetry/node/telemetryUtils';
import { ExtensionsProfileScannerService } from 'vs/platform/extensionManagement/node/extensionsProfileScannerService';
import { LogService } from 'vs/platform/log/common/logService';
import { LoggerService } from 'vs/platform/log/node/loggerService';
import { localize } from 'vs/nls';
class CliMain extends Disposable {
@@ -124,15 +125,18 @@ class CliMain extends Disposable {
environmentService.extensionsPath
].map(path => path ? Promises.mkdir(path, { recursive: true }) : undefined));
// Logger
const loggerService = new LoggerService(getLogLevel(environmentService), environmentService.logsHome);
services.set(ILoggerService, loggerService);
// Log
const logLevel = getLogLevel(environmentService);
const spdLogLogger = new SpdLogLogger('cli', join(environmentService.logsPath, 'cli.log'), true, false, logLevel);
const logger = this._register(loggerService.createLogger('cli', { name: localize('cli', "CLI") }));
const otherLoggers: ILogger[] = [];
if (logLevel === LogLevel.Trace) {
otherLoggers.push(new ConsoleLogger(logLevel));
if (loggerService.getLogLevel() === LogLevel.Trace) {
otherLoggers.push(new ConsoleLogger(loggerService.getLogLevel()));
}
const logService = this._register(new LogService(spdLogLogger, otherLoggers));
const logService = this._register(new LogService(logger, otherLoggers));
services.set(ILogService, logService);
// Files
@@ -142,8 +146,6 @@ class CliMain extends Disposable {
const diskFileSystemProvider = this._register(new DiskFileSystemProvider(logService));
fileService.registerProvider(Schemas.file, diskFileSystemProvider);
// State
// Uri Identity
const uriIdentityService = new UriIdentityService(fileService);
services.set(IUriIdentityService, uriIdentityService);
@@ -6,7 +6,7 @@
import { RunOnceScheduler } from 'vs/base/common/async';
import { onUnexpectedError } from 'vs/base/common/errors';
import { Disposable } from 'vs/base/common/lifecycle';
import { basename, dirname, join } from 'vs/base/common/path';
import { basename, dirname, joinPath } from 'vs/base/common/resources';
import { Promises } from 'vs/base/node/pfs';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { ILogService } from 'vs/platform/log/common/log';
@@ -29,10 +29,10 @@ export class LogsDataCleaner extends Disposable {
this.logService.trace('[logs cleanup]: Starting to clean up old logs.');
try {
const currentLog = basename(this.environmentService.logsPath);
const logsRoot = dirname(this.environmentService.logsPath);
const currentLog = basename(this.environmentService.logsHome);
const logsRoot = dirname(this.environmentService.logsHome);
const logFiles = await Promises.readdir(logsRoot);
const logFiles = await Promises.readdir(logsRoot.fsPath);
const allSessions = logFiles.filter(logFile => /^\d{8}T\d{6}$/.test(logFile));
const oldSessions = allSessions.sort().filter(session => session !== currentLog);
@@ -41,7 +41,7 @@ export class LogsDataCleaner extends Disposable {
if (sessionsToDelete.length > 0) {
this.logService.trace(`[logs cleanup]: Removing log folders '${sessionsToDelete.join(', ')}'`);
await Promise.all(sessionsToDelete.map(sessionToDelete => Promises.rm(join(logsRoot, sessionToDelete))));
await Promise.all(sessionsToDelete.map(sessionToDelete => Promises.rm(joinPath(logsRoot, sessionToDelete).fsPath)));
}
} catch (error) {
onUnexpectedError(error);
@@ -13,11 +13,8 @@ import { ILogService } from 'vs/platform/log/common/log';
import { StorageClient } from 'vs/platform/storage/common/storageIpc';
import { EXTENSION_DEVELOPMENT_EMPTY_WINDOW_WORKSPACE } from 'vs/platform/workspace/common/workspace';
import { NON_EMPTY_WORKSPACE_ID_LENGTH } from 'vs/platform/workspaces/node/workspaces';
/* eslint-disable local/code-layering, local/code-import-patterns */
// TODO@bpasero layer is not allowed in utility process
import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/services';
import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';
import { INativeHostService } from 'vs/platform/native/common/native';
import { IMainProcessService } from 'vs/platform/ipc/common/mainProcessService';
export class UnusedWorkspaceStorageDataCleaner extends Disposable {
@@ -3,12 +3,17 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/* eslint-disable local/code-layering, local/code-import-patterns */
// TODO@bpasero remove these once utility process is the only way
import { Server as BrowserWindowMessagePortServer } from 'vs/base/parts/ipc/electron-browser/ipc.mp';
import { SharedProcessWorkerService } from 'vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService';
import { ILocalPtyService } from 'vs/platform/terminal/electron-sandbox/terminal';
import { hostname, release } from 'os';
import { toErrorMessage } from 'vs/base/common/errorMessage';
import { onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/errors';
import { combinedDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle';
import { Schemas } from 'vs/base/common/network';
import { joinPath } from 'vs/base/common/resources';
import { URI } from 'vs/base/common/uri';
import { IPCServer, ProxyChannel, StaticRouter } from 'vs/base/parts/ipc/common/ipc';
import { Server as UtilityProcessMessagePortServer, once } from 'vs/base/parts/ipc/node/ipc.mp';
@@ -72,6 +77,7 @@ import { UserDataSyncService } from 'vs/platform/userDataSync/common/userDataSyn
import { UserDataSyncChannel } from 'vs/platform/userDataSync/common/userDataSyncServiceIpc';
import { UserDataSyncStoreManagementService, UserDataSyncStoreService } from 'vs/platform/userDataSync/common/userDataSyncStoreService';
import { IUserDataProfileStorageService } from 'vs/platform/userDataProfile/common/userDataProfileStorageService';
import { NativeUserDataProfileStorageService } from 'vs/platform/userDataProfile/node/userDataProfileStorageService';
import { ActiveWindowManager } from 'vs/platform/windows/node/windowTracker';
import { ISignService } from 'vs/platform/sign/common/sign';
import { SignService } from 'vs/platform/sign/node/signService';
@@ -103,24 +109,16 @@ import { localize } from 'vs/nls';
import { LogService } from 'vs/platform/log/common/logService';
import { ipcUtilityProcessWorkerChannelName, IUtilityProcessWorkerConfiguration } from 'vs/platform/utilityProcess/common/utilityProcessWorkerService';
import { isUtilityProcess } from 'vs/base/parts/sandbox/node/electronTypes';
/* eslint-disable local/code-layering, local/code-import-patterns */
// TODO@bpasero layer is not allowed in utility process
import { Server as BrowserWindowMessagePortServer } from 'vs/base/parts/ipc/electron-browser/ipc.mp';
import { ExtensionTipsService } from 'vs/platform/extensionManagement/electron-sandbox/extensionTipsService';
import { ExtensionRecommendationNotificationServiceChannelClient } from 'vs/platform/extensionRecommendations/electron-sandbox/extensionRecommendationsIpc';
import { MessagePortMainProcessService } from 'vs/platform/ipc/electron-browser/mainProcessService';
import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/services';
import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';
import { NativeStorageService } from 'vs/platform/storage/electron-sandbox/storageService';
import { ILocalPtyService } from 'vs/platform/terminal/electron-sandbox/terminal';
import { UserDataAutoSyncService } from 'vs/platform/userDataSync/electron-sandbox/userDataAutoSyncService';
import { UserDataProfileStorageService } from 'vs/platform/userDataProfile/electron-sandbox/userDataProfileStorageService';
import { SharedProcessWorkerService } from 'vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService';
import { SharedProcessRequestService } from 'vs/platform/request/electron-browser/sharedProcessRequestService';
import { RemoteTunnelService } from 'vs/platform/remoteTunnel/electron-browser/remoteTunnelService';
import { ISharedProcessLifecycleService, SharedProcessLifecycleService } from 'vs/platform/lifecycle/electron-browser/sharedProcessLifecycleService';
import { ExtensionsProfileScannerService } from 'vs/platform/extensionManagement/electron-sandbox/extensionsProfileScannerService';
import { ISharedProcessLifecycleService, SharedProcessLifecycleService } from 'vs/platform/lifecycle/node/sharedProcessLifecycleService';
import { RemoteTunnelService } from 'vs/platform/remoteTunnel/node/remoteTunnelService';
import { ExtensionsProfileScannerService } from 'vs/platform/extensionManagement/node/extensionsProfileScannerService';
import { RequestChannelClient } from 'vs/platform/request/common/requestIpc';
import { ExtensionRecommendationNotificationServiceChannelClient } from 'vs/platform/extensionRecommendations/common/extensionRecommendationsIpc';
import { INativeHostService } from 'vs/platform/native/common/native';
import { UserDataAutoSyncService } from 'vs/platform/userDataSync/node/userDataAutoSyncService';
import { ExtensionTipsService } from 'vs/platform/extensionManagement/node/extensionTipsService';
import { IMainProcessService, MainProcessService } from 'vs/platform/ipc/common/mainProcessService';
import { RemoteStorageService } from 'vs/platform/storage/common/storageService';
class SharedProcessMain extends Disposable {
@@ -145,9 +143,14 @@ class SharedProcessMain extends Disposable {
private registerListeners(): void {
// Shared process lifecycle
const onExit = async () => {
this.lifecycleService?.fireOnWillShutdown();
this.dispose();
let didExit = false;
const onExit = () => {
if (!didExit) {
didExit = true;
this.lifecycleService?.fireOnWillShutdown();
this.dispose();
}
};
process.once('exit', onExit);
if (isUtilityProcess(process)) {
@@ -217,7 +220,7 @@ class SharedProcessMain extends Disposable {
// Main Process
const mainRouter = new StaticRouter(ctx => ctx === 'main');
const mainProcessService = new MessagePortMainProcessService(this.server, mainRouter);
const mainProcessService = new MainProcessService(this.server, mainRouter);
services.set(IMainProcessService, mainProcessService);
// Policies
@@ -229,11 +232,11 @@ class SharedProcessMain extends Disposable {
services.set(INativeEnvironmentService, environmentService);
// Logger
const loggerService = new LoggerChannelClient(undefined, this.configuration.logLevel, this.configuration.loggers.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource) })), mainProcessService.getChannel('logger'));
const loggerService = new LoggerChannelClient(undefined, this.configuration.logLevel, environmentService.logsHome, this.configuration.loggers.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource) })), mainProcessService.getChannel('logger'));
services.set(ILoggerService, loggerService);
// Log
const logger = this._register(loggerService.createLogger(joinPath(URI.file(environmentService.logsPath), 'sharedprocess.log'), { id: 'sharedLog', name: localize('sharedLog', "Shared") }));
const logger = this._register(loggerService.createLogger('sharedprocess', { name: localize('sharedLog', "Shared") }));
const consoleLogger = this._register(new ConsoleLogger(logger.getLevel()));
const logService = this._register(new LogService(logger, [consoleLogger]));
services.set(ILogService, logService);
@@ -266,7 +269,7 @@ class SharedProcessMain extends Disposable {
fileService.registerProvider(Schemas.vscodeUserData, userDataFileSystemProvider);
// User Data Profiles
const userDataProfilesService = this._register(new UserDataProfilesService(this.configuration.profiles.all, URI.revive(this.configuration.profiles.home), mainProcessService.getChannel('userDataProfiles')));
const userDataProfilesService = this._register(new UserDataProfilesService(this.configuration.profiles.all, URI.revive(this.configuration.profiles.home).with({ scheme: environmentService.userRoamingDataHome.scheme }), mainProcessService.getChannel('userDataProfiles')));
services.set(IUserDataProfilesService, userDataProfilesService);
// Configuration
@@ -274,7 +277,7 @@ class SharedProcessMain extends Disposable {
services.set(IConfigurationService, configurationService);
// Storage (global access only)
const storageService = new NativeStorageService(undefined, { defaultProfile: userDataProfilesService.defaultProfile, currentProfile: userDataProfilesService.defaultProfile }, mainProcessService, environmentService);
const storageService = new RemoteStorageService(undefined, { defaultProfile: userDataProfilesService.defaultProfile, currentProfile: userDataProfilesService.defaultProfile }, mainProcessService, environmentService);
services.set(IStorageService, storageService);
this._register(toDisposable(() => storageService.flush()));
@@ -289,7 +292,7 @@ class SharedProcessMain extends Disposable {
services.set(IUriIdentityService, uriIdentityService);
// Request
services.set(IRequestService, new SharedProcessRequestService(mainProcessService, configurationService, logService));
services.set(IRequestService, new RequestChannelClient(mainProcessService.getChannel('request')));
// Checksum
services.set(IChecksumService, new SyncDescriptor(ChecksumService, undefined, false /* proxied to other processes */));
@@ -373,7 +376,7 @@ class SharedProcessMain extends Disposable {
services.set(IUserDataSyncBackupStoreService, new SyncDescriptor(UserDataSyncBackupStoreService, undefined, false /* Eagerly cleans up old backups */));
services.set(IUserDataSyncEnablementService, new SyncDescriptor(UserDataSyncEnablementService, undefined, true));
services.set(IUserDataSyncService, new SyncDescriptor(UserDataSyncService, undefined, false /* Initializes the Sync State */));
services.set(IUserDataProfileStorageService, new SyncDescriptor(UserDataProfileStorageService, undefined, true));
services.set(IUserDataProfileStorageService, new SyncDescriptor(NativeUserDataProfileStorageService, undefined, true));
services.set(IUserDataSyncResourceProviderService, new SyncDescriptor(UserDataSyncResourceProviderService, undefined, true));
// Terminal
@@ -383,7 +386,7 @@ class SharedProcessMain extends Disposable {
shortGraceTime: LocalReconnectConstants.ShortGraceTime,
scrollback: configurationService.getValue<number>(TerminalSettingId.PersistentSessionScrollback) ?? 100
},
localize('ptyHost', "Pty Host"),
false,
configurationService,
environmentService,
logService,
+3 -6
View File
@@ -14,23 +14,20 @@ class TabFocusImpl {
private _tabFocusTerminal: boolean = false;
private _tabFocusEditor: boolean = false;
private readonly _onDidChangeTabFocus = new Emitter<boolean>();
public readonly onDidChangeTabFocus: Event<boolean> = this._onDidChangeTabFocus.event;
private readonly _onDidChangeTabFocus = new Emitter<void>();
public readonly onDidChangeTabFocus: Event<void> = this._onDidChangeTabFocus.event;
public getTabFocusMode(context: TabFocusContext): boolean {
return context === TabFocusContext.Terminal ? this._tabFocusTerminal : this._tabFocusEditor;
}
public setTabFocusMode(tabFocusMode: boolean, context: TabFocusContext): void {
if ((context === TabFocusContext.Terminal && this._tabFocusTerminal === tabFocusMode) || (context === TabFocusContext.Editor && this._tabFocusEditor === tabFocusMode)) {
return;
}
if (context === TabFocusContext.Terminal) {
this._tabFocusTerminal = tabFocusMode;
} else {
this._tabFocusEditor = tabFocusMode;
}
this._onDidChangeTabFocus.fire(this._tabFocusTerminal);
this._onDidChangeTabFocus.fire();
}
}
@@ -239,8 +239,11 @@ export abstract class AbstractCodeEditorService extends Disposable implements IC
this._transientWatchers[uri] = w;
}
w.set(key, value);
this._onDidChangeTransientModelProperty.fire(model);
const previousValue = w.get(key);
if (previousValue !== value) {
w.set(key, value);
this._onDidChangeTransientModelProperty.fire(model);
}
}
public getTransientModelProperty(model: ITextModel, key: string): any {
+1 -1
View File
@@ -199,7 +199,6 @@ export class View extends ViewEventHandler {
this._linesContent.appendChild(contentViewOverlays.getDomNode());
this._linesContent.appendChild(rulers.domNode);
this._linesContent.appendChild(blockOutline.domNode);
this._linesContent.appendChild(this._viewZones.domNode);
this._linesContent.appendChild(this._viewLines.getDomNode());
this._linesContent.appendChild(this._contentWidgets.domNode);
@@ -211,6 +210,7 @@ export class View extends ViewEventHandler {
this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover);
this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());
this._overflowGuardContainer.appendChild(minimap.getDomNode());
this._overflowGuardContainer.appendChild(blockOutline.domNode);
this.domNode.appendChild(this._overflowGuardContainer);
if (overflowWidgetsDomNode) {
@@ -6,6 +6,7 @@
.monaco-editor .blockDecorations-container {
position: absolute;
top: 0;
pointer-events: none;
}
.monaco-editor .blockDecorations-block {
@@ -18,6 +18,7 @@ export class BlockDecorations extends ViewPart {
private readonly blocks: FastDomNode<HTMLElement>[] = [];
private contentWidth: number = -1;
private contentLeft: number = 0;
constructor(context: ViewContext) {
super(context);
@@ -41,6 +42,12 @@ export class BlockDecorations extends ViewPart {
didChange = true;
}
const newContentLeft = layoutInfo.contentLeft;
if (this.contentLeft !== newContentLeft) {
this.contentLeft = newContentLeft;
didChange = true;
}
return didChange;
}
@@ -97,11 +104,13 @@ export class BlockDecorations extends ViewPart {
: ctx.getVerticalOffsetAfterLineNumber(decoration.range.endLineNumber, true);
}
const [paddingTop, paddingRight, paddingBottom, paddingLeft] = decoration.options.blockPadding ?? [0, 0, 0, 0];
block.setClassName('blockDecorations-block ' + decoration.options.blockClassName);
block.setLeft(ctx.scrollLeft);
block.setWidth(this.contentWidth);
block.setTop(top);
block.setHeight(bottom - top);
block.setLeft(ctx.scrollLeft + this.contentLeft - paddingLeft);
block.setWidth(this.contentWidth + paddingLeft + paddingRight);
block.setTop(top - ctx.scrollTop - paddingTop);
block.setHeight(bottom - top + paddingTop + paddingBottom);
count++;
}
@@ -98,7 +98,8 @@ const editorConfiguration: IConfigurationNode = {
'editor.experimental.asyncTokenization': {
type: 'boolean',
default: false,
description: nls.localize('editor.experimental.asyncTokenization', "Controls whether the tokenization should happen asynchronously on a web worker.")
description: nls.localize('editor.experimental.asyncTokenization', "Controls whether the tokenization should happen asynchronously on a web worker."),
tags: ['experimental'],
},
'editor.language.brackets': {
type: ['array', 'null'],
+27 -2
View File
@@ -50,9 +50,23 @@ export interface ILanguageService {
readonly languageIdCodec: ILanguageIdCodec;
/**
* An event emitted when a language is needed for the first time.
* An event emitted when basic language features are requested for the first time.
* This event is emitted when embedded languages are encountered (e.g. JS code block inside Markdown)
* or when a language is associated to a text model.
*
* **Note**: Basic language features refers to language configuration related features.
* **Note**: This event is a superset of `onDidRequestRichLanguageFeatures`
*/
onDidEncounterLanguage: Event<string>;
onDidRequestBasicLanguageFeatures: Event<string>;
/**
* An event emitted when rich language features are requested for the first time.
* This event is emitted when a language is associated to a text model.
*
* **Note**: Rich language features refers to tokenizers, language features based on providers, etc.
* **Note**: This event is a subset of `onDidRequestRichLanguageFeatures`
*/
onDidRequestRichLanguageFeatures: Event<string>;
/**
* An event emitted when languages have changed.
@@ -140,4 +154,15 @@ export interface ILanguageService {
* Will fall back to 'plaintext' if the `languageId` cannot be determined.
*/
createByFilepathOrFirstLine(resource: URI | null, firstLine?: string): ILanguageSelection;
/**
* Request basic language features for a language.
*/
requestBasicLanguageFeatures(languageId: string): void;
/**
* Request rich language features for a language.
*/
requestRichLanguageFeatures(languageId: string): void;
}
+12 -1
View File
@@ -22,6 +22,7 @@ import { IGuidesTextModelPart } from 'vs/editor/common/textModelGuides';
import { ITokenizationTextModelPart } from 'vs/editor/common/tokenizationTextModelPart';
import { ThemeColor } from 'vs/base/common/themables';
import { UndoRedoGroup } from 'vs/platform/undoRedo/common/undoRedo';
import { ILanguageSelection } from 'vs/editor/common/languages/language';
/**
* Vertical Lane in the overview ruler of the editor.
@@ -98,6 +99,8 @@ export interface IModelDecorationOptions {
* In this case, the range must be empty and set to the last line.
*/
blockIsAfterEnd?: boolean | null;
blockPadding?: [top: number, right: number, bottom: number, left: number] | null;
/**
* Message to be rendered when hovering over the glyph margin decoration.
*/
@@ -871,7 +874,15 @@ export interface ITextModel {
* @param source The source of the call that set the language.
* @internal
*/
setMode(languageId: string, source?: string): void;
setLanguage(languageId: string, source?: string): void;
/**
* Set the current language mode associated with the model.
* @param languageSelection The new language selection.
* @param source The source of the call that set the language.
* @internal
*/
setLanguage(languageSelection: ILanguageSelection, source?: string): void;
/**
* Returns the real (inner-most) language mode at a given position.
@@ -12,6 +12,10 @@ export class TextEditInfo {
public readonly newLength: Length
) {
}
toString(): string {
return `[${lengthToObj(this.startOffset)}...${lengthToObj(this.endOffset)}) -> ${lengthToObj(this.newLength)}`;
}
}
export class BeforeEditPositionMapper {

Some files were not shown because too many files have changed in this diff Show More