From 6a0ea074f9f25f15e7a60181d6882945899b5356 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 30 Jul 2021 13:20:59 -0700 Subject: [PATCH 01/28] Set mime to markdown when changing to markdown language mode (#129853) Fixes #128873 --- .../workbench/contrib/notebook/browser/contrib/coreActions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts index 6c92f48da49d9..2b264acf7415c 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts @@ -1650,7 +1650,7 @@ registerAction2(class ChangeCellLanguageAction extends NotebookCellAction Date: Fri, 30 Jul 2021 14:49:44 -0700 Subject: [PATCH 02/28] Update opacity on hover on top insert toolbar (#129863) --- src/vs/workbench/contrib/notebook/browser/media/notebook.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vs/workbench/contrib/notebook/browser/media/notebook.css b/src/vs/workbench/contrib/notebook/browser/media/notebook.css index 53321b66dfdf7..7c55495c5eca9 100644 --- a/src/vs/workbench/contrib/notebook/browser/media/notebook.css +++ b/src/vs/workbench/contrib/notebook/browser/media/notebook.css @@ -730,6 +730,8 @@ opacity: 1; } */ +.monaco-workbench .notebookOverlay .cell-list-top-cell-toolbar-container:focus-within, +.monaco-workbench .notebookOverlay .cell-list-top-cell-toolbar-container:hover, .monaco-workbench .notebookOverlay.notebook-editor-editable > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row .cell-bottom-toolbar-container:hover, .monaco-workbench .notebookOverlay.notebook-editor-editable > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row .cell-bottom-toolbar-container:focus-within { opacity: 1; From bc77f8d30d179aebc54e07415d05d111efa4e624 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Mon, 2 Aug 2021 12:13:48 +0200 Subject: [PATCH 03/28] Makes eslint-plugin-header a dev-dependency. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index df3d305290801..e067a47a7791a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,6 @@ "@vscode/vscode-languagedetection": "1.0.15", "applicationinsights": "1.0.8", "chokidar": "3.5.1", - "eslint-plugin-header": "3.1.1", "graceful-fs": "4.2.6", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.3", @@ -131,6 +130,7 @@ "deemon": "^1.4.0", "electron": "13.1.7", "eslint": "6.8.0", + "eslint-plugin-header": "3.1.1", "eslint-plugin-jsdoc": "^19.1.0", "event-stream": "3.3.4", "fancy-log": "^1.3.3", From ebb58622450200233e485718b30922456e03e2a4 Mon Sep 17 00:00:00 2001 From: Raymond Zhao Date: Mon, 2 Aug 2021 12:53:04 -0700 Subject: [PATCH 04/28] Ran OSS tool again, bump distro (#129990) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e067a47a7791a..2ed7b5277aa64 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "code-oss-dev", "version": "1.59.0", - "distro": "3b178e90461e217e4b51870f136c316327a58f66", + "distro": "e865cd688a44ef2dc82d167eaa1a88fc56476f15", "author": { "name": "Microsoft Corporation" }, From 7982bc0f689dc52205350905be590416dc3a1627 Mon Sep 17 00:00:00 2001 From: Tyler James Leonhardt Date: Mon, 2 Aug 2021 14:47:34 -0700 Subject: [PATCH 05/28] Instantiate language detection once (#129983) --- .../browser/languageDetectionService.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/services/languageDetection/browser/languageDetectionService.ts b/src/vs/workbench/services/languageDetection/browser/languageDetectionService.ts index 7c7543ec7f331..5e330ec47a9ed 100644 --- a/src/vs/workbench/services/languageDetection/browser/languageDetectionService.ts +++ b/src/vs/workbench/services/languageDetection/browser/languageDetectionService.ts @@ -168,6 +168,11 @@ export class LanguageDetectionService extends Disposable implements ILanguageDet } } -Registry.as(Extensions.Workbench) - .registerWorkbenchContribution(LanguageDetectionService, LifecyclePhase.Eventually); +export class LanguageDetectionWorkbenchContribution { + + constructor(@ILanguageDetectionService _: ILanguageDetectionService) { } +} + registerSingleton(ILanguageDetectionService, LanguageDetectionService); +Registry.as(Extensions.Workbench) + .registerWorkbenchContribution(LanguageDetectionWorkbenchContribution, LifecyclePhase.Eventually); From 4101265bf25ee7d23307dcfde202eba7dc7b1ec5 Mon Sep 17 00:00:00 2001 From: Logan Ramos Date: Mon, 2 Aug 2021 17:59:40 -0400 Subject: [PATCH 06/28] Bump telemetry package (#129995) --- extensions/git/package.json | 21 +- extensions/git/yarn.lock | 412 +---------------- extensions/github-authentication/package.json | 5 +- extensions/github-authentication/yarn.lock | 366 +-------------- .../html-language-features/package.json | 2 +- extensions/html-language-features/yarn.lock | 405 +---------------- extensions/image-preview/package.json | 2 +- extensions/image-preview/yarn.lock | 417 +----------------- .../json-language-features/package.json | 2 +- extensions/json-language-features/yarn.lock | 405 +---------------- .../markdown-language-features/package.json | 2 +- .../markdown-language-features/yarn.lock | 417 +----------------- .../microsoft-authentication/package.json | 2 +- extensions/microsoft-authentication/yarn.lock | 366 +-------------- extensions/simple-browser/package.json | 2 +- extensions/simple-browser/yarn.lock | 412 +---------------- .../typescript-language-features/package.json | 3 +- .../typescript-language-features/yarn.lock | 412 +---------------- 18 files changed, 61 insertions(+), 3592 deletions(-) diff --git a/extensions/git/package.json b/extensions/git/package.json index 39b40e94dfd69..64272305e50f2 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -1553,10 +1553,10 @@ "command": "git.branchFrom", "group": "branch@4" }, - { - "command": "git.renameBranch", - "group": "branch@5" - }, + { + "command": "git.renameBranch", + "group": "branch@5" + }, { "command": "git.deleteBranch", "group": "branch@6" @@ -1692,8 +1692,15 @@ "default": true }, "git.autofetch": { - "type": ["boolean", "string"], - "enum": [true, false, "all"], + "type": [ + "boolean", + "string" + ], + "enum": [ + true, + false, + "all" + ], "scope": "resource", "markdownDescription": "%config.autofetch%", "default": false, @@ -2376,7 +2383,7 @@ "file-type": "^7.2.0", "iconv-lite-umd": "0.6.8", "jschardet": "2.3.0", - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^4.0.0", "vscode-uri": "^2.0.0", "which": "^1.3.0" diff --git a/extensions/git/yarn.lock b/extensions/git/yarn.lock index 7e6cc02073504..3f3fa21fdfd6f 100644 --- a/extensions/git/yarn.lock +++ b/extensions/git/yarn.lock @@ -2,179 +2,6 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - "@types/byline@4.2.31": version "4.2.31" resolved "https://registry.yarnpkg.com/@types/byline/-/byline-4.2.31.tgz#0e61fcb9c03e047d21c4496554c7116297ab60cd" @@ -194,14 +21,6 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.0.tgz#3eb56d13a1de1d347ecb1957c6860c911704bc44" integrity sha512-/Sge3BymXo4lKc31C8OINJgXLaw+7vL1/L1pGiBNpGrBiT8FQiaFpSYV0uhTaG4y78vcMBTMFsWaHDvuD+xGzQ== -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - "@types/node@*": version "8.0.51" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb" @@ -212,118 +31,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - "@types/which@^1.0.28": version "1.0.28" resolved "https://registry.yarnpkg.com/@types/which/-/which-1.0.28.tgz#016e387629b8817bed653fe32eab5d11279c8df6" integrity sha1-AW44dim4gXvtZT/jLqtdESecjfY= -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - file-type@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-7.2.0.tgz#113cfed52e1d6959ab80248906e2f25a8cdccb74" integrity sha1-ETz+1S4daVmrgCSJBuLyWozcy3Q= -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" - iconv-lite-umd@0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.8.tgz#5ad310ec126b260621471a2d586f7f37b9958ec0" @@ -339,118 +61,10 @@ jschardet@2.3.0: resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-2.3.0.tgz#06e2636e16c8ada36feebbdc08aa34e6a9b3ff75" integrity sha512-6I6xT7XN/7sBB7q8ObzKbmv5vN+blzLcboDE1BNEsEfmRXJValMxO6OIRT69ylPBRemS3rw6US+CMCar0OBc9g== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^4.0.0: version "4.0.0" @@ -468,21 +82,3 @@ which@^1.3.0: integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== dependencies: isexe "^2.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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/extensions/github-authentication/package.json b/extensions/github-authentication/package.json index b8f127c4146a2..c8a5a2ca43cb1 100644 --- a/extensions/github-authentication/package.json +++ b/extensions/github-authentication/package.json @@ -39,7 +39,6 @@ "command": "github-enterprise.provide-token", "title": "Manually Provide Token", "category": "GitHub Enterprise" - } ], "menus": { @@ -67,7 +66,7 @@ "configuration": { "title": "GitHub Enterprise Authentication Provider", "properties": { - "github-enterprise.uri" : { + "github-enterprise.uri": { "type": "string", "description": "URI of your GitHub Enterprise Instance" } @@ -87,7 +86,7 @@ "dependencies": { "node-fetch": "2.6.1", "uuid": "8.1.0", - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^5.0.0", "vscode-tas-client": "^0.1.22" }, diff --git a/extensions/github-authentication/yarn.lock b/extensions/github-authentication/yarn.lock index a784f38895909..2464a3a15db04 100644 --- a/extensions/github-authentication/yarn.lock +++ b/extensions/github-authentication/yarn.lock @@ -2,187 +2,6 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - "@types/node-fetch@^2.5.7": version "2.5.7" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" @@ -201,46 +20,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - "@types/uuid@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.0.0.tgz#165aae4819ad2174a17476dbe66feebd549556c0" integrity sha512-xSQfNcvOiE5f9dyd4Kzxbof1aTrLobL278pGLKOZI6esGfZ7ts9Ka16CzIN6Y8hFHE1C7jIBZokULhK1bOgjRw== -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -253,15 +37,6 @@ axios@^0.21.1: dependencies: follow-redirects "^1.10.0" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -269,38 +44,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - follow-redirects@^1.10.0: version "1.13.3" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" @@ -315,18 +63,6 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -339,53 +75,11 @@ mime-types@^2.1.12: dependencies: mime-db "1.44.0" -node-fetch@2.6.1, node-fetch@^2.6.0: +node-fetch@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - tas-client@0.1.21: version "0.1.21" resolved "https://registry.yarnpkg.com/tas-client/-/tas-client-0.1.21.tgz#62275d5f75266eaae408f7463364748cb92f220d" @@ -393,47 +87,15 @@ tas-client@0.1.21: dependencies: axios "^0.21.1" -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - uuid@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^5.0.0: version "5.0.0" @@ -446,21 +108,3 @@ vscode-tas-client@^0.1.22: integrity sha512-1sYH73nhiSRVQgfZkLQNJW7VzhKM9qNbCe8QyXgiKkLhH4GflDXRPAK4yy4P41jUgula+Fc9G7i5imj1dlKfaw== dependencies: tas-client "0.1.21" - -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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/extensions/html-language-features/package.json b/extensions/html-language-features/package.json index f5c2c88d349f9..e40622b0def3a 100644 --- a/extensions/html-language-features/package.json +++ b/extensions/html-language-features/package.json @@ -240,7 +240,7 @@ ] }, "dependencies": { - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-languageclient": "^7.0.0", "vscode-nls": "^5.0.0" }, diff --git a/extensions/html-language-features/yarn.lock b/extensions/html-language-features/yarn.lock index bf30c262075f7..d1cadeb6b168a 100644 --- a/extensions/html-language-features/yarn.lock +++ b/extensions/html-language-features/yarn.lock @@ -2,237 +2,11 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "16.4.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48" - integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg== - "@types/node@14.x": version "14.14.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -246,73 +20,11 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - 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" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -320,18 +32,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -339,48 +39,6 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== - -semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - semver@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" @@ -388,52 +46,10 @@ semver@^7.3.4: dependencies: lru-cache "^6.0.0" -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-jsonrpc@6.0.0: version "6.0.0" @@ -467,19 +83,6 @@ vscode-nls@^5.0.0: resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== -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" diff --git a/extensions/image-preview/package.json b/extensions/image-preview/package.json index e52185da41471..656b735c28c66 100644 --- a/extensions/image-preview/package.json +++ b/extensions/image-preview/package.json @@ -81,7 +81,7 @@ "watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose" }, "dependencies": { - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^5.0.0" }, "repository": { diff --git a/extensions/image-preview/yarn.lock b/extensions/image-preview/yarn.lock index 288ac34400629..218991b90f654 100644 --- a/extensions/image-preview/yarn.lock +++ b/extensions/image-preview/yarn.lock @@ -2,421 +2,12 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "16.4.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48" - integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg== - -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - 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" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== - -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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/extensions/json-language-features/package.json b/extensions/json-language-features/package.json index e09820e67f6a8..7b2a8d29c0244 100644 --- a/extensions/json-language-features/package.json +++ b/extensions/json-language-features/package.json @@ -135,7 +135,7 @@ }, "dependencies": { "request-light": "^0.5.4", - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-languageclient": "^7.0.0", "vscode-nls": "^5.0.0" }, diff --git a/extensions/json-language-features/yarn.lock b/extensions/json-language-features/yarn.lock index ff89a62678f76..6fbba7e094066 100644 --- a/extensions/json-language-features/yarn.lock +++ b/extensions/json-language-features/yarn.lock @@ -2,237 +2,11 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "16.4.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48" - integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg== - "@types/node@14.x": version "14.14.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" integrity sha512-3pwDJjp1PWacPTpH0LcfhgjvurQvrZFBrC6xxjaUEZ7ifUtT32jtjPxEMMblpqd2Mvx+k8haqQJLQxolyGN/cQ== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -246,73 +20,11 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - 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" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -320,18 +32,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -339,53 +39,11 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - request-light@^0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/request-light/-/request-light-0.5.4.tgz#497a98c6d8ae49536417a5e2d7f383b934f3e38c" integrity sha512-t3566CMweOFlUk7Y1DJMu5OrtpoZEb6aSTsLQVT3wtrIEJ5NhcY9G/Oqxvjllzl4a15zXfFlcr9q40LbLVQJqw== -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: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - semver@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" @@ -393,52 +51,10 @@ semver@^7.3.4: dependencies: lru-cache "^6.0.0" -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-jsonrpc@6.0.0: version "6.0.0" @@ -472,19 +88,6 @@ vscode-nls@^5.0.0: resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== -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" diff --git a/extensions/markdown-language-features/package.json b/extensions/markdown-language-features/package.json index 5854a8ce7d9ea..f9750857b35ef 100644 --- a/extensions/markdown-language-features/package.json +++ b/extensions/markdown-language-features/package.json @@ -355,7 +355,7 @@ "highlight.js": "^10.4.1", "markdown-it": "^12.0.3", "markdown-it-front-matter": "^0.2.1", - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^5.0.0" }, "devDependencies": { diff --git a/extensions/markdown-language-features/yarn.lock b/extensions/markdown-language-features/yarn.lock index 5989e18dd3109..1ecfce6a73bee 100644 --- a/extensions/markdown-language-features/yarn.lock +++ b/extensions/markdown-language-features/yarn.lock @@ -2,179 +2,6 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - "@types/highlight.js@10.1.0": version "10.1.0" resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-10.1.0.tgz#89bb0c202997d7a90a07bd2ec1f7d00c56bb90b4" @@ -199,131 +26,21 @@ resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.2.tgz#5d9ad19e6e6508cdd2f2596df86fd0aade598660" integrity sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA= -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "16.4.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48" - integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg== - -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - "@types/vscode-webview@^1.57.0": version "1.57.0" resolved "https://registry.yarnpkg.com/@types/vscode-webview/-/vscode-webview-1.57.0.tgz#bad5194d45ae8d03afc1c0f67f71ff5e7a243bbf" integrity sha512-x3Cb/SMa1IwRHfSvKaZDZOTh4cNoG505c3NjTqGlMC082m++x/ETUmtYniDsw6SSmYzZXO8KBNhYxR0+VqymqA== -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -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" - highlight.js@*, highlight.js@^10.4.1: version "10.4.1" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" @@ -336,23 +53,11 @@ linkify-it@^3.0.1: dependencies: uc.micro "^1.0.1" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - markdown-it-front-matter@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/markdown-it-front-matter/-/markdown-it-front-matter-0.2.1.tgz#dca49a827bb3cebb0528452c1d87dff276eb28dc" @@ -374,89 +79,6 @@ mdurl@^1.0.1: resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - uc.micro@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" @@ -467,43 +89,12 @@ uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== - -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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/extensions/microsoft-authentication/package.json b/extensions/microsoft-authentication/package.json index 4f2c8b3cc2cd0..b116cb7ec62ea 100644 --- a/extensions/microsoft-authentication/package.json +++ b/extensions/microsoft-authentication/package.json @@ -59,7 +59,7 @@ "sha.js": "2.4.11", "stream": "0.0.2", "uuid": "^8.2.0", - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^5.0.0" }, "repository": { diff --git a/extensions/microsoft-authentication/yarn.lock b/extensions/microsoft-authentication/yarn.lock index e98a897e07b7e..89df5bd95e69b 100644 --- a/extensions/microsoft-authentication/yarn.lock +++ b/extensions/microsoft-authentication/yarn.lock @@ -2,187 +2,6 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - "@types/node-fetch@^2.5.7": version "2.5.7" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" @@ -215,46 +34,11 @@ dependencies: "@types/node" "*" -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - "@types/uuid@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.0.0.tgz#165aae4819ad2174a17476dbe66feebd549556c0" integrity sha512-xSQfNcvOiE5f9dyd4Kzxbof1aTrLobL278pGLKOZI6esGfZ7ts9Ka16CzIN6Y8hFHE1C7jIBZokULhK1bOgjRw== -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -273,15 +57,6 @@ buffer@^5.6.0: base64-js "^1.0.2" ieee754 "^1.1.4" -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -289,43 +64,16 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - emitter-component@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.1.1.tgz#065e2dbed6959bf470679edabeaf7981d1003ab6" integrity sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY= -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - dependencies: - shimmer "^1.2.0" - form-data@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" @@ -345,18 +93,6 @@ inherits@^2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -369,26 +105,11 @@ mime-types@^2.1.12: dependencies: mime-db "1.44.0" -node-fetch@2.6.1, node-fetch@^2.6.0: +node-fetch@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - "randombytes@github:rmacfarlane/randombytes#b28d4ecee46262801ea09f15fa1f1513a05c5971": version "2.1.0" resolved "https://codeload.github.com/rmacfarlane/randombytes/tar.gz/b28d4ecee46262801ea09f15fa1f1513a05c5971" @@ -405,23 +126,6 @@ safe-buffer@^5.1.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -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" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - sha.js@2.4.11: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -430,16 +134,6 @@ sha.js@2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - stream@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stream/-/stream-0.0.2.tgz#7f5363f057f6592c5595f00bc80a27f5cec1f0ef" @@ -447,67 +141,17 @@ stream@0.0.2: dependencies: emitter-component "^1.1.1" -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - uuid@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== - -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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/extensions/simple-browser/package.json b/extensions/simple-browser/package.json index 4aa359c9c1eb7..4aa2c77c77db3 100644 --- a/extensions/simple-browser/package.json +++ b/extensions/simple-browser/package.json @@ -66,7 +66,7 @@ "watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose" }, "dependencies": { - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^5.0.0" }, "devDependencies": { diff --git a/extensions/simple-browser/yarn.lock b/extensions/simple-browser/yarn.lock index 2608290aa80be..ea90b4181e7ac 100644 --- a/extensions/simple-browser/yarn.lock +++ b/extensions/simple-browser/yarn.lock @@ -2,426 +2,22 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "16.4.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48" - integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg== - -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - "@types/vscode-webview@^1.57.0": version "1.57.0" resolved "https://registry.yarnpkg.com/@types/vscode-webview/-/vscode-webview-1.57.0.tgz#bad5194d45ae8d03afc1c0f67f71ff5e7a243bbf" integrity sha512-x3Cb/SMa1IwRHfSvKaZDZOTh4cNoG505c3NjTqGlMC082m++x/ETUmtYniDsw6SSmYzZXO8KBNhYxR0+VqymqA== -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - 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" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -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.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-codicons@^0.0.14: version "0.0.14" resolved "https://registry.yarnpkg.com/vscode-codicons/-/vscode-codicons-0.0.14.tgz#e0d05418e2e195564ff6f6a2199d70415911c18f" integrity sha512-6CEH5KT9ct5WMw7n5dlX7rB8ya4CUI2FSq1Wk36XaW+c5RglFtAanUV0T+gvZVVFhl/WxfjTvFHq06Hz9c1SLA== -vscode-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== - -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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index bd9a9b9bf57e7..8d361da9a69d0 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -34,7 +34,7 @@ "jsonc-parser": "^2.2.1", "semver": "5.5.1", "typescript-vscode-sh-plugin": "^0.7.3", - "vscode-extension-telemetry": "0.2.4", + "vscode-extension-telemetry": "0.2.6", "vscode-nls": "^5.0.0" }, "devDependencies": { @@ -304,7 +304,6 @@ "markdownDescription": "%configuration.inlayHints.variableTypes.enabled%", "scope": "resource" }, - "typescript.inlayHints.propertyDeclarationTypes.enabled": { "type": "boolean", "default": false, diff --git a/extensions/typescript-language-features/yarn.lock b/extensions/typescript-language-features/yarn.lock index c28f4ce35aaac..fc0c2463cba0c 100644 --- a/extensions/typescript-language-features/yarn.lock +++ b/extensions/typescript-language-features/yarn.lock @@ -2,192 +2,6 @@ # yarn lockfile v1 -"@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== - dependencies: - tslib "^2.0.0" - -"@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== - -"@azure/core-auth@^1.3.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" - integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== - dependencies: - "@azure/abort-controller" "^1.0.0" - tslib "^2.2.0" - -"@azure/core-http@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.1.0.tgz#9fb564aea06484eaf9f05cf4fae16fd16f640383" - integrity sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" - process "^0.11.10" - tough-cookie "^4.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== - dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.2.tgz#ad2d06478eeda7835f53def7e4566981b47d9787" - integrity sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw== - dependencies: - tslib "^2.0.0" - -"@microsoft/applicationinsights-analytics-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-2.6.4.tgz#22ad17276ed922f2f0e66b7efe304f31c50ede64" - integrity sha512-BHx3U6H4j3ddtl2wSJNt+kX2jG+qsvH4mNnimFJjZ4Mq9dheD3o6ghnBH8gQjIb5Up09JdyV5itsTZf1aC84Dg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-channel-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-2.6.4.tgz#49c139e8d801835bfba25547cb57d030286dec8a" - integrity sha512-ps9ZglUw8nzou9/CxmfRgHO7aGjhopu9YqsadbQL6yz/q8LSj1w30+ADa3gSMYCEEy8FQrDo5e5UebDEnX/w+A== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-common@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-2.6.4.tgz#c3a4129c727127271c93c7e23b86cf18fcb9e3a0" - integrity sha512-/YLrKpxXL8zusjzu8GTYPuRrKw0OzUD4rLh8mxSlUZWK+SLOE/1loizJIesmd6OLgcgmOTrd1iZFVsuxn20b/g== - dependencies: - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-core-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.6.4.tgz#163caa31c02e72cfe02fc4abebd6bffd6b587de3" - integrity sha512-rYxfJzl4aLXFGOLsRoJqyKj5qfhQTz1u/eXSo6N6gIIr/D+RCVNJZKVzeBh3xOOytm4UBGRshK0QFZJlIQL3Kw== - dependencies: - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-dependencies-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-2.6.4.tgz#6d120965cdc3ef5798feac6bc729bc97d40a4bb5" - integrity sha512-mJ/yTe00HPlUpQCmQWGhY3ronlkhsPgIYBWjxstN4NHRO4Qt17/ITxFoRa+r50J8Sf4ouc4qBoEFSVc56x80bg== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-properties-js@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-2.6.4.tgz#d779cd552277e6049b30efe71024a39bad5264e7" - integrity sha512-SdIR3gVX46N0RdC0zV/pXKoCxwT+2+79ek6hVXvXa2o2I+JfgYEAxb1Q8flYNGEdlFd/Ge7BHcJLqFvjat1t4Q== - dependencies: - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/applicationinsights-shims@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.0.tgz#ee622588f14e58ae3c055b12431da8ed55d71991" - integrity sha512-OaKew7f7acuNFgKYjMSPrRTRQi93xUyONWeeCeBlJSx7oRNJaL0TqbTvW6j5GHnSr3mhinPtAQ+rCQWASBnOrg== - -"@microsoft/applicationinsights-web@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web/-/applicationinsights-web-2.6.4.tgz#509069c798a4da2c2b2b494bb15eb328425d4e86" - integrity sha512-/lBngt78Q7YNs8Llu1xz22f9oT5Rr2lo1QmSSSSKal30HL6kkzkP14J2E6+0+O5dRmyTDgOSiEePt6AhF8NFzg== - dependencies: - "@microsoft/applicationinsights-analytics-js" "2.6.4" - "@microsoft/applicationinsights-channel-js" "2.6.4" - "@microsoft/applicationinsights-common" "2.6.4" - "@microsoft/applicationinsights-core-js" "2.6.4" - "@microsoft/applicationinsights-dependencies-js" "2.6.4" - "@microsoft/applicationinsights-properties-js" "2.6.4" - "@microsoft/applicationinsights-shims" "2.0.0" - "@microsoft/dynamicproto-js" "^1.1.4" - -"@microsoft/dynamicproto-js@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.4.tgz#40e1c0ad20743fcee1604a7df2c57faf0aa1af87" - integrity sha512-Ot53G927ykMF8cQ3/zq4foZtdk+Tt1YpX7aUTHxBU7UHNdkEiBvBfZSq+rnlUmKCJ19VatwPG4mNzvcGpBj4og== - -"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.1.tgz#03c72f548431da5820a0c8864d1401e348e7e79f" - integrity sha512-H5Djcc2txGAINgf3TNaq4yFofYSIK3722PM89S/3R8FuI/eqi1UscajlXk7EBkG9s2pxss/q6SHlpturaavXaw== - -"@opentelemetry/core@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-0.23.0.tgz#611a39255ac8296a79fbc6548a6d3b1bc87ee17e" - integrity sha512-7COVsnGEW96ITjc0waWYo/R27sFqjPUg4SCoP8XL48zAGr9zjzeuJoQe/xVchs7op//qOeeEEeBxiBvXy2QS0Q== - dependencies: - "@opentelemetry/semantic-conventions" "0.23.0" - semver "^7.1.3" - -"@opentelemetry/resources@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-0.23.0.tgz#221c123306708ceac707599e3a201896b953f53b" - integrity sha512-sAiaoQ0pOwjaaKySuwCUlvej/W9M5d+SxpcuBFUBUojqRlEAYDbx1FHClPnKtOysIb9rXJDQvM3xlH++7NQQzg== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - -"@opentelemetry/semantic-conventions@0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.23.0.tgz#ec1467fd71f6551628b60cd2107acc923b9b77cc" - integrity sha512-Tzo+VGR1zlzLbjVI+7mlDJ2xuaUsue4scWvFlK+fzcUfn9siF4NWbxoC2X6Br2B/g4dsq1OAwAYsPVYIEoY2rQ== - -"@opentelemetry/tracing@^0.23.0": - version "0.23.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/tracing/-/tracing-0.23.0.tgz#bf80a987f57508f2202170f4f2bc4385988ecb02" - integrity sha512-3vNLS55bE0CG1RBDz7+wAAKpLjbl8fhQKqM4MvTy/LYHSolgyM5BNutSb/TcA9LtWvkdI0djgFXxeRig1OFqoQ== - dependencies: - "@opentelemetry/core" "0.23.0" - "@opentelemetry/resources" "0.23.0" - "@opentelemetry/semantic-conventions" "0.23.0" - lodash.merge "^4.6.2" - -"@types/node-fetch@^2.5.0": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "16.4.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48" - integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg== - "@types/node@14.x": version "14.14.43" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.43.tgz#26bcbb0595b305400e8ceaf9a127a7f905ae49c8" @@ -198,245 +12,27 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" integrity sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== - dependencies: - "@types/node" "*" - -applicationinsights@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-2.1.4.tgz#bb124c67f162d2935b24d9960aede916ba8e352a" - integrity sha512-5cMAyW7jwHvdrKk4KU9VD6GR4o5D458KbdmAKKRp9SP9UNuY4pQHJoX60EmE14IlCXbIJd9CWUPhF4xQpCcwoQ== - dependencies: - "@azure/core-http" "^2.0.0" - "@opentelemetry/api" "^1.0.0" - "@opentelemetry/tracing" "^0.23.0" - cls-hooked "^4.2.2" - continuation-local-storage "^3.2.1" - diagnostic-channel "1.0.0" - diagnostic-channel-publishers "1.0.1" - -async-hook-jl@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" - integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== - dependencies: - stack-chain "^1.3.7" - -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -cls-hooked@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" - integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== - dependencies: - async-hook-jl "^1.7.6" - emitter-listener "^1.0.1" - semver "^5.4.1" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -diagnostic-channel-publishers@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.1.tgz#8209b38f327bec6a0a1716e8ff892c0c9e1cbb96" - integrity sha512-9D6XicU15MLXVtYEaBc3q1Di/4ciUFMULApfBc8/RUUwBk7g16t7/aFKZF4Kt4B3aFBtCbsTYJRAMKCSFaYWDA== - -diagnostic-channel@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-1.0.0.tgz#6d5611784ddb3d48086dd45a07d7431a945200aa" - integrity sha512-v7Clmg5HG9XwIhqgbBRfwFzwZhxjvESZ33uu1cgcCLkdb9ZxgtY78eAgQMEQ39UecQ//4K5W75iq6LFBtAQD8w== - dependencies: - semver "^5.3.0" - -emitter-listener@^1.0.1, emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== - 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" - jsonc-parser@^2.2.1: version "2.3.1" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -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== - -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.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== -semver@^5.3.0, semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.1.3: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -shimmer@^1.1.0, shimmer@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" - integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== - -stack-chain@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tslib@^2.0.0, tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - typescript-vscode-sh-plugin@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/typescript-vscode-sh-plugin/-/typescript-vscode-sh-plugin-0.7.3.tgz#acdc223e5baf2cd43b8e9cf21775fba162b05029" integrity sha512-IAjOX1fE35G6DiNCJv6oq7JmYkPV7KI/g1SGX6i8Cgauv7hsXbS94fboSZNM2Dai+m3xNGARHG5V6Ka7YcZRgQ== -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -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-extension-telemetry@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.4.tgz#6a699b227252a8d5335ba080efc15eb587c6aace" - integrity sha512-rq6H+4ImptROvNW7qKPXfXkztj5Zycwz9NN2E82D7JBTpLBIGh3sF2O+AUzBbnofaTGB7qlGoeGGPzqA1x/6OQ== - dependencies: - "@microsoft/applicationinsights-web" "^2.6.4" - applicationinsights "2.1.4" +vscode-extension-telemetry@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.2.6.tgz#fa40b711e2fde2d10813df372192ae7d494d6428" + integrity sha512-wQ8EEr3tQnAB5K3CyLScOEmiEVR3NNOtaOnf6XuJdOJFZnCPFT8Adc3mYPIzcTJwE720pL0ybt+Peigz197nTQ== vscode-nls@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== - -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" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== From ff43f8bb844628f8766bd66412f42412f55dcb8e Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Tue, 3 Aug 2021 17:09:44 +0200 Subject: [PATCH 07/28] workbench.action.tasks.build no longer triggers build but opens a list of tasks (#130043) Fixes #130028 --- .../workbench/contrib/tasks/common/taskConfiguration.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts b/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts index 963131367597f..50ab002dd992b 100644 --- a/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts +++ b/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts @@ -1741,9 +1741,14 @@ namespace TaskParser { } context.taskLoadIssues = Objects.deepClone(baseLoadIssues); } - if ((defaultBuildTask.rank > -1) && (defaultBuildTask.rank < 2) && defaultBuildTask.task) { + // There is some special logic for tasks with the labels "build" and "test". + // Even if they are not marked as a task group Build or Test, we automagically group them as such. + // However, if they are already grouped as Build or Test, we don't need to add this grouping. + const defaultBuildGroupName = Types.isString(defaultBuildTask.task?.configurationProperties.group) ? defaultBuildTask.task?.configurationProperties.group : defaultBuildTask.task?.configurationProperties.group?._id; + const defaultTestTaskGroupName = Types.isString(defaultTestTask.task?.configurationProperties.group) ? defaultTestTask.task?.configurationProperties.group : defaultTestTask.task?.configurationProperties.group?._id; + if ((defaultBuildGroupName !== Tasks.TaskGroup.Build._id) && (defaultBuildTask.rank > -1) && (defaultBuildTask.rank < 2) && defaultBuildTask.task) { defaultBuildTask.task.configurationProperties.group = Tasks.TaskGroup.Build; - } else if ((defaultTestTask.rank > -1) && (defaultTestTask.rank < 2) && defaultTestTask.task) { + } else if ((defaultTestTaskGroupName !== Tasks.TaskGroup.Test._id) && (defaultTestTask.rank > -1) && (defaultTestTask.rank < 2) && defaultTestTask.task) { defaultTestTask.task.configurationProperties.group = Tasks.TaskGroup.Test; } From cead2f699cd0afb2464d8d3ad975776051583b4f Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Tue, 3 Aug 2021 17:16:26 +0200 Subject: [PATCH 08/28] Task spinner not showing in the status bar (#130050) Fixes #130048 --- src/vs/workbench/contrib/tasks/browser/task.contribution.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/tasks/browser/task.contribution.ts b/src/vs/workbench/contrib/tasks/browser/task.contribution.ts index b3bceff32705d..ee37709ea3e28 100644 --- a/src/vs/workbench/contrib/tasks/browser/task.contribution.ts +++ b/src/vs/workbench/contrib/tasks/browser/task.contribution.ts @@ -38,6 +38,7 @@ import { TasksQuickAccessProvider } from 'vs/workbench/contrib/tasks/browser/tas import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { TaskDefinitionRegistry } from 'vs/workbench/contrib/tasks/common/taskDefinitionRegistry'; import { TerminalMenuBarGroup } from 'vs/workbench/contrib/terminal/browser/terminalMenus'; +import { isString } from 'vs/base/common/types'; const SHOW_TASKS_COMMANDS_CONTEXT = ContextKeyExpr.or(ShellExecutionSupportedContext, ProcessExecutionSupportedContext); @@ -150,7 +151,7 @@ export class TaskStatusBarContributions extends Disposable implements IWorkbench return false; } - if (event.group !== TaskGroup.Build) { + if ((isString(event.group) ? event.group : event.group?._id) !== TaskGroup.Build._id) { return true; } From 8f58c1f457bd2ddf6cf81120c450c783b6e8c01b Mon Sep 17 00:00:00 2001 From: Logan Ramos Date: Tue, 3 Aug 2021 14:02:58 -0400 Subject: [PATCH 09/28] Set context key on more than just the working tree (#130061) --- extensions/git/src/repository.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 7de371a1a3a8c..2c07c2757204c 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -1916,7 +1916,7 @@ export class Repository implements Disposable { this.setCountBadge(); // Update context key with changed resources - commands.executeCommand('setContext', 'git.changedResources', workingTree.map(r => r.resourceUri.fsPath.toString())); + commands.executeCommand('setContext', 'git.changedResources', [...merge, ...index, ...workingTree, ...untracked].map(r => r.resourceUri.fsPath.toString())); this._onDidChangeStatus.fire(); From deb07b8720598ec5bef9c0df50cf080b4af833fc Mon Sep 17 00:00:00 2001 From: Harald Kirschner Date: Wed, 4 Aug 2021 10:42:02 -0700 Subject: [PATCH 10/28] Reverting #125570 (#130130) --- .../keybinding/common/abstractKeybindingService.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/vs/platform/keybinding/common/abstractKeybindingService.ts b/src/vs/platform/keybinding/common/abstractKeybindingService.ts index 56122f34f20d2..c8379d7547cc5 100644 --- a/src/vs/platform/keybinding/common/abstractKeybindingService.ts +++ b/src/vs/platform/keybinding/common/abstractKeybindingService.ts @@ -24,9 +24,6 @@ interface CurrentChord { label: string | null; } -// Skip logging for high-frequency text editing commands -const HIGH_FREQ_COMMANDS = /^(cursor|delete)/; - export abstract class AbstractKeybindingService extends Disposable implements IKeybindingService { public _serviceBrand: undefined; @@ -266,9 +263,7 @@ export abstract class AbstractKeybindingService extends Disposable implements IK } else { this._commandService.executeCommand(resolveResult.commandId, resolveResult.commandArgs).then(undefined, err => this._notificationService.warn(err)); } - if (!HIGH_FREQ_COMMANDS.test(resolveResult.commandId)) { - this._telemetryService.publicLog2('workbenchActionExecuted', { id: resolveResult.commandId, from: 'keybinding' }); - } + this._telemetryService.publicLog2('workbenchActionExecuted', { id: resolveResult.commandId, from: 'keybinding' }); } return shouldPreventDefault; From 379476f0e13988d90fab105c5c19e7abc8b1dea8 Mon Sep 17 00:00:00 2001 From: Harald Kirschner Date: Wed, 4 Aug 2021 13:11:41 -0700 Subject: [PATCH 11/28] Hide non-functional walkthroughs in virtual workspaces --- .../gettingStarted/common/gettingStartedContent.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/welcome/gettingStarted/common/gettingStartedContent.ts b/src/vs/workbench/contrib/welcome/gettingStarted/common/gettingStartedContent.ts index 33435cfde5688..505d8151bc077 100644 --- a/src/vs/workbench/contrib/welcome/gettingStarted/common/gettingStartedContent.ts +++ b/src/vs/workbench/contrib/welcome/gettingStarted/common/gettingStartedContent.ts @@ -147,6 +147,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ id: 'findLanguageExtensions', title: localize('gettingStarted.findLanguageExts.title', "Rich support for all your languages"), description: localize('gettingStarted.findLanguageExts.description.interpolated', "Code smarter with syntax highlighting, code completion, linting and debugging. While many languages are built-in, many more can be added as extensions.\n{0}", Button(localize('browseLangExts', "Browse Language Extensions"), 'command:workbench.extensions.action.showLanguageExtensions')), + when: 'virtualWorkspace != \'vscode-vfs\'', media: { type: 'svg', altText: 'Language extensions', path: 'languages.svg' }, @@ -161,7 +162,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ id: 'workspaceTrust', title: localize('gettingStarted.workspaceTrust.title', "Safely browse and edit code"), description: localize('gettingStarted.workspaceTrust.description.interpolated', "{0} lets you decide whether your project folders should **allow or restrict** automatic code execution __(required for extensions, debugging, etc)__.\nOpening a file/folder will prompt to grant trust. You can always {1} later.", Button(localize('workspaceTrust', "Workspace Trust"), 'https://github.com/microsoft/vscode-docs/blob/workspaceTrust/docs/editor/workspace-trust.md'), Button(localize('enableTrust', "enable trust"), 'command:toSide:workbench.action.manageTrustedDomain')), - when: '!isWorkspaceTrusted && workspaceFolderCount == 0', + when: 'virtualWorkspace != \'vscode-vfs\' && !isWorkspaceTrusted && workspaceFolderCount == 0', media: { type: 'svg', altText: 'Workspace Trust editor in Restricted mode and a primary button for switching to Trusted mode.', path: 'workspaceTrust.svg' }, @@ -219,7 +220,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ id: 'terminal', title: localize('gettingStarted.terminal.title', "Convenient built-in terminal"), description: localize('gettingStarted.terminal.description.interpolated', "Quickly run shell commands and monitor build output, right next to your code.\n{0}", Button(localize('showTerminal', "Show Terminal Panel"), 'command:workbench.action.terminal.toggleTerminal')), - when: 'remoteName != codespaces && !terminalIsOpen', + when: 'virtualWorkspace != \'vscode-vfs\' && remoteName != codespaces && !terminalIsOpen', media: { type: 'svg', altText: 'Integrated terminal running a few npm commands', path: 'terminal.svg' }, @@ -228,6 +229,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ id: 'extensions', title: localize('gettingStarted.extensions.title', "Limitless extensibility"), description: localize('gettingStarted.extensions.description.interpolated', "Extensions are VS Code's power-ups. They range from handy productivity hacks, expanding out-of-the-box features, to adding completely new capabilities.\n{0}", Button(localize('browseRecommended', "Browse Recommended Extensions"), 'command:workbench.extensions.action.showRecommendedExtensions')), + when: 'virtualWorkspace != \'vscode-vfs\'', media: { type: 'svg', altText: 'VS Code extension marketplace with featured language extensions', path: 'extensions.svg' }, @@ -281,7 +283,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ id: 'debugging', title: localize('gettingStarted.debug.title', "Watch your code in action"), description: localize('gettingStarted.debug.description.interpolated', "Accelerate your edit, build, test, and debug loop by setting up a launch configuration.\n{0}", Button(localize('runProject', "Run your Project"), 'command:workbench.action.debug.selectandstart')), - when: 'workspaceFolderCount != 0', + when: 'virtualWorkspace != \'vscode-vfs\' && workspaceFolderCount != 0', media: { type: 'svg', altText: 'Run and debug view.', path: 'debug.svg', }, @@ -316,7 +318,7 @@ export const walkthroughs: GettingStartedWalkthroughContent = [ { id: 'tasks', title: localize('gettingStarted.tasks.title', "Automate your project tasks"), - when: 'workspaceFolderCount != 0', + when: 'virtualWorkspace != \'vscode-vfs\' && workspaceFolderCount != 0', description: localize('gettingStarted.tasks.description.interpolated', "Create tasks for your common workflows and enjoy the integrated experience of running scripts and automatically checking results.\n{0}", Button(localize('runTasks', "Run Auto-detected Tasks"), 'command:workbench.action.tasks.runTask')), media: { type: 'svg', altText: 'Task runner.', path: 'runTask.svg', From 90012702403c565b7287e6e64491b6664a773eda Mon Sep 17 00:00:00 2001 From: Anton Kosyakov Date: Fri, 6 Aug 2021 05:57:16 +0000 Subject: [PATCH 12/28] code web server initial commit --- .eslintrc.json | 24 +- .gitignore | 4 +- .gitpod.Dockerfile | 57 ++ .gitpod.yml | 29 + .leewayignore | 4 + .vscode/launch.json | 15 + BUILD.yaml | 17 + WORKSPACE.yaml | 1 + build/azure-pipelines/common/sign-win32.js | 17 + build/azure-pipelines/common/sign.js | 77 ++ build/gulpfile.extensions.js | 4 +- build/gulpfile.server.js | 332 +++++++ build/hygiene.js | 22 +- build/lib/compilation.js | 20 +- build/lib/compilation.ts | 20 +- build/lib/electron.js | 2 +- build/npm/postinstall.js | 8 +- product.json | 521 +++++++++- resources/server/manifest.json | 5 + scripts/setup-google-adc.sh | 22 + src/server-cli.js | 8 + src/server.js | 12 + src/serverUriTransformer.js | 60 ++ .../browser/workbench/workbench-dev.html | 63 ++ .../server/browser/workbench/workbench.html | 62 ++ src/vs/server/browser/workbench/workbench.ts | 404 ++++++++ src/vs/server/node/cli.main.ts | 214 ++++ src/vs/server/node/cli.ts | 21 + src/vs/server/node/server.main.ts | 912 ++++++++++++++++++ src/vs/server/node/server.ts | 7 + yarn.lock | 15 +- 31 files changed, 2926 insertions(+), 53 deletions(-) create mode 100644 .gitpod.Dockerfile create mode 100644 .gitpod.yml create mode 100644 .leewayignore create mode 100644 BUILD.yaml create mode 100644 WORKSPACE.yaml create mode 100644 build/azure-pipelines/common/sign-win32.js create mode 100644 build/azure-pipelines/common/sign.js create mode 100644 build/gulpfile.server.js create mode 100644 resources/server/manifest.json create mode 100755 scripts/setup-google-adc.sh create mode 100644 src/server-cli.js create mode 100644 src/server.js create mode 100644 src/serverUriTransformer.js create mode 100644 src/vs/server/browser/workbench/workbench-dev.html create mode 100644 src/vs/server/browser/workbench/workbench.html create mode 100644 src/vs/server/browser/workbench/workbench.ts create mode 100644 src/vs/server/node/cli.main.ts create mode 100644 src/vs/server/node/cli.ts create mode 100644 src/vs/server/node/server.main.ts create mode 100644 src/vs/server/node/server.ts diff --git a/.eslintrc.json b/.eslintrc.json index c04b1ce18d523..dddb42fc4fd1a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -789,6 +789,18 @@ "**/vs/workbench/workbench.web.api" ] }, + { + "target": "**/vs/server/browser/**", + "restrictions": [ + "vs/nls", + "vs/css!./**/*", + "**/vs/base/**/{common,browser}/**", + "**/vs/base/parts/**/{common,browser}/**", + "**/vs/platform/**/{common,browser}/**", + "**/vs/code/**/{common,browser}/**", + "**/vs/workbench/workbench.web.api" + ] + }, { "target": "**/vs/code/node/**", "restrictions": [ @@ -824,7 +836,7 @@ ] }, { - "target": "**/vs/server/**", + "target": "**/vs/server/node/**", "restrictions": [ "vs/nls", "**/vs/base/**/{common,node}/**", @@ -981,16 +993,6 @@ "xterm*" ] } - ], - "header/header": [ - 2, - "block", - [ - "---------------------------------------------------------------------------------------------", - " * Copyright (c) Microsoft Corporation. All rights reserved.", - " * Licensed under the MIT License. See License.txt in the project root for license information.", - " *--------------------------------------------------------------------------------------------" - ] ] }, "overrides": [ diff --git a/.gitignore b/.gitignore index 95f843584c0e4..3672121444947 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.DS_Store +*.DS_Store .cache npm-debug.log Thumbs.db @@ -7,8 +7,6 @@ node_modules/ extensions/**/dist/ /out*/ /extensions/**/out/ -src/vs/server -resources/server build/node_modules coverage/ test_data/ diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 0000000000000..3cbe7a34d0717 --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,57 @@ +FROM gitpod/workspace-full:latest + +USER root + +# leeway +ENV LEEWAY_NESTED_WORKSPACE=true +RUN cd /usr/bin && curl -fsSL https://github.com/gitpod-io/leeway/releases/download/v0.2.5/leeway_0.2.5_Linux_x86_64.tar.gz | tar xz + +USER gitpod + +# We use latest major version of Node.js distributed VS Code. (see about dialog in your local VS Code) +RUN bash -c ". .nvm/nvm.sh \ + && nvm install 14 \ + && nvm use 14 \ + && nvm alias default 14" + +RUN echo "nvm use default &>/dev/null" >> ~/.bashrc.d/51-nvm-fix + +# Install dependencies +RUN sudo apt-get update \ + && sudo apt-get install -y --no-install-recommends \ + xvfb x11vnc fluxbox dbus-x11 x11-utils x11-xserver-utils xdg-utils \ + fbautostart xterm eterm gnome-terminal gnome-keyring seahorse nautilus \ + libx11-dev libxkbfile-dev libsecret-1-dev libnotify4 libnss3 libxss1 \ + libasound2 libgbm1 xfonts-base xfonts-terminus fonts-noto fonts-wqy-microhei \ + fonts-droid-fallback vim-tiny nano libgconf2-dev libgtk-3-dev twm \ + && sudo apt-get clean && sudo rm -rf /var/cache/apt/* && sudo rm -rf /var/lib/apt/lists/* && sudo rm -rf /tmp/* + +## Register leeway autocompletion in bashrc +RUN bash -c "echo . \<\(leeway bash-completion\) >> ~/.bashrc" + +### Google Cloud ### +# not installed via repository as then 'docker-credential-gcr' is not available +ARG GCS_DIR=/opt/google-cloud-sdk +ENV PATH=$GCS_DIR/bin:$PATH +RUN sudo chown gitpod: /opt \ + && mkdir $GCS_DIR \ + && curl -fsSL https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-344.0.0-linux-x86_64.tar.gz \ + | tar -xzvC /opt \ + && /opt/google-cloud-sdk/install.sh --quiet --usage-reporting=false --bash-completion=true \ + --additional-components docker-credential-gcr alpha beta \ + # needed for access to our private registries + && docker-credential-gcr configure-docker + +# Install tools for gsutil +RUN sudo install-packages \ + gcc \ + python-dev \ + python-setuptools + +RUN bash -c "pip uninstall crcmod; pip install --no-cache-dir -U crcmod" + +# Set Application Default Credentials (ADC) based on user-provided env var +RUN echo ". /workspace/vscode/scripts/setup-google-adc.sh" >> ~/.bashrc + +ENV LEEWAY_WORKSPACE_ROOT=/workspace/vscode +ENV LEEWAY_REMOTE_CACHE_BUCKET=gitpod-core-leeway-cache-branch diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000000000..917dfcc8702c8 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,29 @@ +image: + file: .gitpod.Dockerfile +ports: + - port: 3000 + onOpen: open-browser +tasks: + - init: | + export VSCODE_INIT_BUILD_DIR=$(leeway describe "//:init" -t "/tmp/build/{{ .Metadata.Name }}.{{ .Metadata.Version }}") + leeway build + sudo cp -rup "$VSCODE_INIT_BUILD_DIR/install/." . | true + command: | + gp sync-done init + export NODE_ENV=development + export VSCODE_DEV=1 + yarn gulp watch-init + name: watch app + - command: | + export NODE_ENV=development + export VSCODE_DEV=1 + gp sync-await init + node out/server.js + name: run app + openMode: split-right +github: + prebuilds: + pullRequestsFromForks: true +vscode: + extensions: + - dbaeumer.vscode-eslint diff --git a/.leewayignore b/.leewayignore new file mode 100644 index 0000000000000..83e4d532948d0 --- /dev/null +++ b/.leewayignore @@ -0,0 +1,4 @@ +/node_modules/ +/out/ +/.build/ +/.git/ \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 65911dc3294c4..f48d6f4ed94e6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,6 +1,21 @@ { "version": "0.1.0", "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Code Server", + "args": [ + "${workspaceFolder}/out/server.js" + ], + "outFiles": [ + "${workspaceFolder}/out/**/*.js" + ], + "env": { + "NODE_ENV": "development", + "VSCODE_DEV": "1" + } + }, { "type": "node", "request": "launch", diff --git a/BUILD.yaml b/BUILD.yaml new file mode 100644 index 0000000000000..e1e418e348c0a --- /dev/null +++ b/BUILD.yaml @@ -0,0 +1,17 @@ +packages: + - name: install + type: generic + srcs: + - "**" + config: + commands: + - ["yarn"] + - name: init + type: generic + deps: + - ":install" + config: + commands: + - ["yarn", "--cwd", "./install/build", "compile"] + - ["yarn", "--cwd", "./install", "compile"] + - ["yarn", "--cwd", "./install", "download-builtin-extensions"] diff --git a/WORKSPACE.yaml b/WORKSPACE.yaml new file mode 100644 index 0000000000000..3054d1bcff669 --- /dev/null +++ b/WORKSPACE.yaml @@ -0,0 +1 @@ +defaultTarget: "//:init" diff --git a/build/azure-pipelines/common/sign-win32.js b/build/azure-pipelines/common/sign-win32.js new file mode 100644 index 0000000000000..3cc503a8e6b9b --- /dev/null +++ b/build/azure-pipelines/common/sign-win32.js @@ -0,0 +1,17 @@ +"use strict"; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +const sign_1 = require("./sign"); +const path = require("path"); +(0, sign_1.main)([ + process.env['EsrpCliDllPath'], + 'windows', + process.env['ESRPPKI'], + process.env['ESRPAADUsername'], + process.env['ESRPAADPassword'], + path.dirname(process.argv[2]), + path.basename(process.argv[2]) +]); diff --git a/build/azure-pipelines/common/sign.js b/build/azure-pipelines/common/sign.js new file mode 100644 index 0000000000000..94ddf5fe2463d --- /dev/null +++ b/build/azure-pipelines/common/sign.js @@ -0,0 +1,77 @@ +"use strict"; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.main = void 0; +const cp = require("child_process"); +const fs = require("fs"); +const tmp = require("tmp"); +const crypto = require("crypto"); +function getParams(type) { + switch (type) { + case 'windows': + return '[{"keyCode":"CP-230012","operationSetCode":"SigntoolSign","parameters":[{"parameterName":"OpusName","parameterValue":"VS Code"},{"parameterName":"OpusInfo","parameterValue":"https://code.visualstudio.com/"},{"parameterName":"Append","parameterValue":"/as"},{"parameterName":"FileDigest","parameterValue":"/fd \\"SHA256\\""},{"parameterName":"PageHash","parameterValue":"/NPH"},{"parameterName":"TimeStamp","parameterValue":"/tr \\"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\\" /td sha256"}],"toolName":"sign","toolVersion":"1.0"},{"keyCode":"CP-230012","operationSetCode":"SigntoolVerify","parameters":[{"parameterName":"VerifyAll","parameterValue":"/all"}],"toolName":"sign","toolVersion":"1.0"}]'; + case 'rpm': + return '[{ "keyCode": "CP-450779-Pgp", "operationSetCode": "LinuxSign", "parameters": [], "toolName": "sign", "toolVersion": "1.0" }]'; + case 'darwin-sign': + return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppDeveloperSign","parameters":[{"parameterName":"Hardening","parameterValue":"--options=runtime"}],"toolName":"sign","toolVersion":"1.0"}]'; + case 'darwin-notarize': + return '[{"keyCode":"CP-401337-Apple","operationSetCode":"MacAppNotarize","parameters":[{"parameterName":"BundleId","parameterValue":"$(BundleIdentifier)"}],"toolName":"sign","toolVersion":"1.0"}]'; + default: + throw new Error(`Sign type ${type} not found`); + } +} +function main([esrpCliPath, type, cert, username, password, folderPath, pattern]) { + tmp.setGracefulCleanup(); + const patternPath = tmp.tmpNameSync(); + fs.writeFileSync(patternPath, pattern); + const paramsPath = tmp.tmpNameSync(); + fs.writeFileSync(paramsPath, getParams(type)); + const keyFile = tmp.tmpNameSync(); + const key = crypto.randomBytes(32); + const iv = crypto.randomBytes(16); + fs.writeFileSync(keyFile, JSON.stringify({ key: key.toString('hex'), iv: iv.toString('hex') })); + const clientkeyPath = tmp.tmpNameSync(); + const clientkeyCypher = crypto.createCipheriv('aes-256-cbc', key, iv); + let clientkey = clientkeyCypher.update(password, 'utf8', 'hex'); + clientkey += clientkeyCypher.final('hex'); + fs.writeFileSync(clientkeyPath, clientkey); + const clientcertPath = tmp.tmpNameSync(); + const clientcertCypher = crypto.createCipheriv('aes-256-cbc', key, iv); + let clientcert = clientcertCypher.update(cert, 'utf8', 'hex'); + clientcert += clientcertCypher.final('hex'); + fs.writeFileSync(clientcertPath, clientcert); + const args = [ + esrpCliPath, + 'vsts.sign', + '-a', username, + '-k', clientkeyPath, + '-z', clientcertPath, + '-f', folderPath, + '-p', patternPath, + '-u', 'false', + '-x', 'regularSigning', + '-b', 'input.json', + '-l', 'AzSecPack_PublisherPolicyProd.xml', + '-y', 'inlineSignParams', + '-j', paramsPath, + '-c', '9997', + '-t', '120', + '-g', '10', + '-v', 'Tls12', + '-s', 'https://api.esrp.microsoft.com/api/v1', + '-m', '0', + '-o', 'Microsoft', + '-i', 'https://www.microsoft.com', + '-n', '5', + '-r', 'true', + '-e', keyFile, + ]; + cp.spawnSync('dotnet', args, { stdio: 'inherit' }); +} +exports.main = main; +if (require.main === module) { + main(process.argv.slice(2)); +} diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index b2379127dd215..e31f8ea0e24f4 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -222,7 +222,9 @@ const compileExtensionsBuildTask = task.define('compile-extensions-build', task. )); gulp.task(compileExtensionsBuildTask); -gulp.task(task.define('extensions-ci', task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask))); +const compileExtensionsCi = task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask); +gulp.task(task.define('extensions-ci', compileExtensionsCi)); +exports.compileExtensionsCi = compileExtensionsCi; exports.compileExtensionsBuildTask = compileExtensionsBuildTask; diff --git a/build/gulpfile.server.js b/build/gulpfile.server.js new file mode 100644 index 0000000000000..40def428c7270 --- /dev/null +++ b/build/gulpfile.server.js @@ -0,0 +1,332 @@ +/*!-------------------------------------------------------- +* Copyright (C) Gitpod. All rights reserved. +*--------------------------------------------------------*/ + +// @ts-check +'use strict'; + +const gulp = require('gulp'); +const path = require('path'); +const es = require('event-stream'); +const util = require('./lib/util'); +const task = require('./lib/task'); +const common = require('./lib/optimize'); +const product = require('../product.json'); +const rename = require('gulp-rename'); +const replace = require('gulp-replace'); +const filter = require('gulp-filter'); +const _ = require('underscore'); +const { getProductionDependencies } = require('./lib/dependencies'); +const vfs = require('vinyl-fs'); +const packageJson = require('../package.json'); + +const { compileBuildTask } = require('./gulpfile.compile'); +gulp.task(task.define('compile-web-server', compileBuildTask)); +const { compileExtensionsCi } = require('./gulpfile.extensions'); + +gulp.task(task.define('watch-init', require('./lib/compilation').watchTask('out', false))); + +const root = path.dirname(__dirname); +const commit = util.getVersion(root); +const date = new Date().toISOString(); + +/** + * @param {{ + * qualifier: string + * header?: string + * }} options + */ +function defineTasks(options) { + const qualifier = options.qualifier; + const webResources = [ + // Workbench + 'out-build/vs/{base,platform,editor,workbench}/**/*.{svg,png,jpg}', + `out-build/vs/${qualifier}/browser/workbench/*.html`, + 'out-build/vs/base/browser/ui/codicons/codicon/**', + 'out-build/vs/**/markdown.css', + + // Webview + 'out-build/vs/workbench/contrib/webview/browser/pre/**', + + // Extension Worker + 'out-build/vs/workbench/services/extensions/worker/extensionHostWorkerMain.js', + 'out-build/vs/workbench/services/extensions/worker/extensionHostWorkerMain.js.map', + 'out-build/vs/workbench/services/extensions/worker/*.html', + + // Excludes + '!out-build/vs/**/{node,electron-browser,electron-sandbox,electron-main}/**', + '!out-build/vs/editor/standalone/**', + '!out-build/vs/workbench/**/*-tb.png', + '!**/test/**' + ]; + + const serverResources = [ + // Server + `out-build/${qualifier}-cli.js`, + `out-build/${qualifier}.js`, + 'out-build/bootstrap.js', + 'out-build/bootstrap-fork.js', + 'out-build/bootstrap-node.js', + 'out-build/bootstrap-amd.js', + 'out-build/paths.js', + 'out-build/serverUriTransformer.js', + 'out-build/vs/base/common/performance.js', + + // Excludes + '!out-build/vs/**/{node,browser,electron-browser,electron-sandbox,electron-main}/**', + '!out-build/vs/editor/standalone/**', + '!**/test/**' + ]; + + const buildfile = require('../src/buildfile'); + + const webEntryPoints = _.flatten([ + buildfile.entrypoint('vs/workbench/workbench.web.api'), + buildfile.base, + buildfile.workerExtensionHost, + buildfile.workerNotebook, + buildfile.keyboardMaps, + buildfile.workbenchWeb + ]).map(p => { + if (p.name === 'vs/code/browser/workbench/workbench') { + return { + ...p, + name: `vs/${qualifier}/browser/workbench/workbench` + }; + } + return p; + }); + + const serverEntryPoints = _.flatten([ + buildfile.entrypoint(`vs/${qualifier}/node/cli`), + buildfile.entrypoint(`vs/${qualifier}/node/server`), + buildfile.entrypoint('vs/workbench/services/extensions/node/extensionHostProcess'), + buildfile.entrypoint('vs/platform/files/node/watcher/unix/watcherApp'), + buildfile.entrypoint('vs/platform/files/node/watcher/nsfw/watcherApp') + ]); + + const outWeb = `out-${qualifier}-web`; + + const optimizeWebTask = task.define(`optimize-${qualifier}-web`, task.series( + util.rimraf(outWeb), + common.optimizeTask({ + src: 'out-build', + entryPoints: _.flatten(webEntryPoints), + resources: webResources, + loaderConfig: common.loaderConfig(), + out: outWeb, + bundleInfo: undefined, + header: options?.header + }) + )); + gulp.task(optimizeWebTask); + + const outServer = `out-${qualifier}-server`; + + const optimizeServerTask = task.define(`optimize-${qualifier}-server`, task.series( + util.rimraf(outServer), + common.optimizeTask({ + src: 'out-build', + entryPoints: _.flatten(serverEntryPoints), + resources: serverResources, + loaderConfig: common.loaderConfig(), + out: outServer, + bundleInfo: undefined, + header: options?.header + }) + )); + gulp.task(optimizeServerTask); + + const optimizeWebServerTask = task.define(`optimize-${qualifier}`, task.parallel(optimizeWebTask, optimizeServerTask)); + gulp.task(optimizeWebServerTask); + + const outWebMin = outWeb + '-min'; + + const minifyWebTask = task.define(`minify-${qualifier}-web`, task.series( + optimizeWebTask, + util.rimraf(outWebMin), + common.minifyTask(outWeb) + )); + gulp.task(minifyWebTask); + + const outServerMin = outServer + '-min'; + + const minifyServerTask = task.define(`minify-${qualifier}-server`, task.series( + optimizeServerTask, + util.rimraf(outServerMin), + common.minifyTask(outServer, '/out') + )); + gulp.task(minifyWebTask); + + const minifyWebServerTask = task.define(`minify-${qualifier}`, task.parallel(minifyWebTask, minifyServerTask)); + gulp.task(minifyWebServerTask); + + /** + * @param {string} sourceFolderName + * @param {string} destinationFolderName + */ + function packageWebTask(sourceFolderName, destinationFolderName) { + const destination = path.join(path.dirname(root), destinationFolderName); + + return () => { + const json = require('gulp-json-editor'); + + const src = gulp.src(sourceFolderName + '/**', { base: '.' }) + .pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); })); + + const sources = es.merge(src); + + let version = packageJson.version; + const quality = product.quality; + + if (quality && quality !== 'stable') { + version += '-' + quality; + } + + const productJsonStream = gulp.src(['product.json'], { base: '.' }) + .pipe(json({ commit, date })); + + const base = 'remote/web'; + + const dependenciesSrc = _.flatten(getProductionDependencies(path.join(root, base)) + .map(d => path.relative(root, d.path)) + .map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`])); + + const runtimeDependencies = gulp.src(dependenciesSrc, { base, dot: true }) + .pipe(filter(['**', '!**/package-lock.json', '!**/yarn.lock'])) + .pipe(util.cleanNodeModules(path.join(__dirname, '.webignore'))); + + const name = product.applicationName; + const packageJsonStream = gulp.src([base + '/package.json'], { base }) + .pipe(json({ name, version })); + + const indexStream = gulp.src([`out-build/vs/${qualifier}/browser/workbench/workbench.html`], { base: `out-build/vs/${qualifier}/browser/workbench` }) + .pipe(rename('index.html')) + .pipe(replace('static/', '')); + + const manifest = gulp.src(`resources/${qualifier}/manifest.json`, { base: 'resources/' + qualifier }) + .pipe(json({ + name: product.nameLong, + 'short_name': product.nameShort + })); + + let all = es.merge( + packageJsonStream, + productJsonStream, + // license, + sources, + runtimeDependencies, + indexStream, + // favicon, + manifest, + // pwaicons + ); + + let result = all + .pipe(util.skipDirectories()) + .pipe(util.fixWin32DirectoryPermissions()); + + return result.pipe(vfs.dest(destination)); + }; + } + + /** + * @param {string} sourceFolderName + * @param {string} destinationFolderName + */ + function packageServerTask(sourceFolderName, destinationFolderName) { + const destination = path.join(path.dirname(root), destinationFolderName); + + return () => { + const json = require('gulp-json-editor'); + + const src = gulp.src(sourceFolderName + '/**', { base: '.' }) + .pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); })); + + const extensions = gulp.src('.build/extensions/**', { base: '.build', dot: true }); + + const sources = es.merge(src, extensions); + + let version = packageJson.version; + const quality = product.quality; + + if (quality && quality !== 'stable') { + version += '-' + quality; + } + + const productJsonStream = gulp.src(['product.json'], { base: '.' }) + .pipe(json({ commit, date })); + + const base = 'remote'; + const dependenciesSrc = _.flatten(getProductionDependencies(path.join(root, base)) + .map(d => path.relative(root, d.path)) + .map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`])); + + const runtimeDependencies = gulp.src(dependenciesSrc, { base, dot: true }) + .pipe(filter(['**', '!**/package-lock.json', '!**/yarn.lock'])) + .pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore'))); + + const name = product.applicationName; + const packageJsonStream = gulp.src([base + '/package.json'], { base }) + .pipe(json({ name, version })); + + let all = es.merge( + packageJsonStream, + productJsonStream, + // license, + sources, + runtimeDependencies + ); + + let result = all + .pipe(util.skipDirectories()) + .pipe(util.fixWin32DirectoryPermissions()); + + return result.pipe(vfs.dest(destination)); + }; + } + + const dashed = (str) => (str ? `-${str}` : ``); + + ['', 'min'].forEach(minified => { + const destination = qualifier + '-pkg'; + const destinationWeb = qualifier + '-pkg-web'; + const destinationServer = qualifier + '-pkg-server'; + + const webRoot = path.join(path.dirname(root), destinationWeb); + const packageWeb = task.define(`package-${qualifier}-web${dashed(minified)}`, task.series( + util.rimraf(webRoot), + packageWebTask(outWeb + dashed(minified), destinationWeb) + )); + gulp.task(packageWeb); + + const serverRoot = path.join(path.dirname(root), destinationServer); + const packageServer = task.define(`package-${qualifier}-server${dashed(minified)}`, task.series( + util.rimraf(serverRoot), + packageServerTask(outServer + dashed(minified), destinationServer) + )); + gulp.task(packageServer); + + const packageRoot = path.join(path.dirname(root), destination); + const packageWebServer = task.define(`package-${qualifier}${dashed(minified)}`, task.series( + task.parallel(packageWeb, packageServer), + util.rimraf(packageRoot), + () => gulp.src(path.join(webRoot, '**'), { base: webRoot }).pipe(gulp.dest(packageRoot)), + () => gulp.src(path.join(serverRoot, '**'), { base: serverRoot }).pipe(gulp.dest(packageRoot)) + )); + gulp.task(packageWebServer); + + const webServerTask = task.define(`${qualifier}${dashed(minified)}`, task.series( + compileBuildTask, + compileExtensionsCi, + minified ? minifyWebServerTask : optimizeWebServerTask, + packageWebServer + )); + gulp.task(webServerTask); + }); +} + +defineTasks({ + qualifier: 'server' +}); +exports.defineTasks = defineTasks; diff --git a/build/hygiene.js b/build/hygiene.js index 9d6756dbc86d7..0c043400d10fc 100644 --- a/build/hygiene.js +++ b/build/hygiene.js @@ -28,10 +28,10 @@ function hygiene(some, linting = true) { const productJson = es.through(function (file) { const product = JSON.parse(file.contents.toString('utf8')); - if (product.extensionsGallery) { - console.error(`product.json: Contains 'extensionsGallery'`); + /* if (product.extensionsGallery) { + console.error('product.json: Contains "extensionsGallery"'); errorCount++; - } + } */ this.emit('data', file); }); @@ -59,13 +59,15 @@ function hygiene(some, linting = true) { }); const copyrights = es.through(function (file) { - const lines = file.__lines; - - for (let i = 0; i < copyrightHeaderLines.length; i++) { - if (lines[i] !== copyrightHeaderLines[i]) { - console.error(file.relative + ': Missing or bad copyright statement'); - errorCount++; - break; + if (file.relative.indexOf('vs/server') === -1) { + const lines = file.__lines; + + for (let i = 0; i < copyrightHeaderLines.length; i++) { + if (lines[i] !== copyrightHeaderLines[i]) { + console.error(file.relative + ': Missing or bad copyright statement'); + errorCount++; + break; + } } } diff --git a/build/lib/compilation.js b/build/lib/compilation.js index c6e9196abceed..a56c43ff01b3c 100644 --- a/build/lib/compilation.js +++ b/build/lib/compilation.js @@ -16,6 +16,7 @@ const util = require("./util"); const fancyLog = require("fancy-log"); const ansiColors = require("ansi-colors"); const os = require("os"); +const replace = require('gulp-replace'); const watch = require('./watch'); const reporter = (0, reporter_1.createReporter)(); function getTypeScriptCompilerOptions(src) { @@ -35,6 +36,22 @@ function getTypeScriptCompilerOptions(src) { function createCompile(src, build, emitError) { const tsb = require('gulp-tsb'); const sourcemaps = require('gulp-sourcemaps'); + const rootDir = path.dirname(path.dirname(__dirname)); + const product = JSON.parse(fs.readFileSync(path.join(rootDir, 'product.json'), 'utf-8')); + // Running out of sources + if (!build) { + Object.assign(product, { + nameShort: `${product.nameShort} Dev`, + nameLong: `${product.nameLong} Dev`, + dataFolderName: `${product.dataFolderName}-dev` + }); + } + Object.assign(product, { + commit: util.getVersion(rootDir), + date: new Date().toISOString(), + version: JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8')).version + }); + const productJson = JSON.stringify(product, undefined, 4); const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json'); const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) }); if (!build) { @@ -48,6 +65,7 @@ function createCompile(src, build, emitError) { const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path))); const input = es.through(); const output = input + .pipe(replace(/{\s*\/\*BUILD->INSERT_PRODUCT_CONFIGURATION\*\/\s*}/, productJson, { skipBinary: true })) .pipe(utf8Filter) .pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise .pipe(utf8Filter.restore) @@ -59,7 +77,7 @@ function createCompile(src, build, emitError) { .pipe(noDeclarationsFilter.restore) .pipe(sourcemaps.write('.', { addComment: false, - includeContent: !!build, + includeContent: true, sourceRoot: overrideOptions.sourceRoot })) .pipe(tsFilter.restore) diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts index 3db8cf0f9178f..ad803ac86f7d8 100644 --- a/build/lib/compilation.ts +++ b/build/lib/compilation.ts @@ -17,6 +17,7 @@ import * as fancyLog from 'fancy-log'; import * as ansiColors from 'ansi-colors'; import * as os from 'os'; import ts = require('typescript'); +const replace = require('gulp-replace'); const watch = require('./watch'); @@ -41,6 +42,22 @@ function createCompile(src: string, build: boolean, emitError?: boolean) { const tsb = require('gulp-tsb') as typeof import('gulp-tsb'); const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps'); + const rootDir = path.dirname(path.dirname(__dirname)); + const product = JSON.parse(fs.readFileSync(path.join(rootDir, 'product.json'), 'utf-8')); + // Running out of sources + if (!build) { + Object.assign(product, { + nameShort: `${product.nameShort} Dev`, + nameLong: `${product.nameLong} Dev`, + dataFolderName: `${product.dataFolderName}-dev` + }); + } + Object.assign(product, { + commit: util.getVersion(rootDir), + date: new Date().toISOString(), + version: JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8')).version + }); + const productJson = JSON.stringify(product, undefined, 4); const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json'); const overrideOptions = { ...getTypeScriptCompilerOptions(src), inlineSources: Boolean(build) }; @@ -59,6 +76,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) { const input = es.through(); const output = input + .pipe(replace(/{\s*\/\*BUILD->INSERT_PRODUCT_CONFIGURATION\*\/\s*}/, productJson, { skipBinary: true })) .pipe(utf8Filter) .pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise .pipe(utf8Filter.restore) @@ -70,7 +88,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) { .pipe(noDeclarationsFilter.restore) .pipe(sourcemaps.write('.', { addComment: false, - includeContent: !!build, + includeContent: true, sourceRoot: overrideOptions.sourceRoot })) .pipe(tsFilter.restore) diff --git a/build/lib/electron.js b/build/lib/electron.js index 871cf23232261..f5ce733ffccf6 100644 --- a/build/lib/electron.js +++ b/build/lib/electron.js @@ -12,7 +12,7 @@ const filter = require("gulp-filter"); const _ = require("underscore"); const util = require("./util"); function isDocumentSuffix(str) { - return str != undefined && (str === 'document' || str === 'script' || str === 'file' || str === 'source code'); + return str === 'document' || str === 'script' || str === 'file' || str === 'source code'; } const root = path.dirname(path.dirname(__dirname)); const product = JSON.parse(fs.readFileSync(path.join(root, 'product.json'), 'utf8')); diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js index f86ceb779a98b..beb412369d399 100644 --- a/build/npm/postinstall.js +++ b/build/npm/postinstall.js @@ -88,5 +88,9 @@ runtime "${runtime}"`; yarnInstall(watchPath); } -cp.execSync('git config pull.rebase merges'); -cp.execSync('git config blame.ignoreRevsFile .git-blame-ignore'); +try { + cp.execSync('git config pull.rebase merges'); + cp.execSync('git config blame.ignoreRevsFile .git-blame-ignore'); +} catch (e) { + console.error(e) +} diff --git a/product.json b/product.json index 82ecda763d6e7..93414d45bf251 100644 --- a/product.json +++ b/product.json @@ -1,35 +1,506 @@ { - "nameShort": "Code - OSS", - "nameLong": "Code - OSS", - "applicationName": "code-oss", - "dataFolderName": ".vscode-oss", - "win32MutexName": "vscodeoss", + "nameShort": "Code Web Server", + "nameLong": "Code Web Server", + "applicationName": "code-web-server", + "dataFolderName": ".code-web-server", + "win32MutexName": "codewebserver", "licenseName": "MIT", - "licenseUrl": "https://github.com/microsoft/vscode/blob/main/LICENSE.txt", - "win32DirName": "Microsoft Code OSS", - "win32NameVersion": "Microsoft Code OSS", - "win32RegValueName": "CodeOSS", + "licenseUrl": "https://github.com/gitpod-io/vscode/blob/web-server/LICENSE.txt", + "win32DirName": "Code Web Server", + "win32NameVersion": "Code Web Server", + "win32RegValueName": "CodeWebServer", "win32AppId": "{{E34003BB-9E10-4501-8C11-BE3FAA83F23F}", "win32x64AppId": "{{D77B7E06-80BA-4137-BCF4-654B95CCEBC5}", "win32arm64AppId": "{{D1ACE434-89C5-48D1-88D3-E2991DF85475}", "win32UserAppId": "{{C6065F05-9603-4FC4-8101-B9781A25D88E}", "win32x64UserAppId": "{{CC6B787D-37A0-49E8-AE24-8559A032BE0C}", "win32arm64UserAppId": "{{3AEBF0C8-F733-4AD4-BADE-FDB816D53D7B}", - "win32AppUserModelId": "Microsoft.CodeOSS", - "win32ShellNameShort": "C&ode - OSS", - "darwinBundleIdentifier": "com.visualstudio.code.oss", - "linuxIconName": "com.visualstudio.code.oss", + "win32AppUserModelId": "Gitp&d.Code", + "win32ShellNameShort": "Gitp&od C&ode", + "darwinBundleIdentifier": "code.web.server", + "linuxIconName": "code.web.server", "licenseFileName": "LICENSE.txt", - "reportIssueUrl": "https://github.com/microsoft/vscode/issues/new", - "urlProtocol": "code-oss", - "webviewContentExternalBaseUrlTemplate": "https://{{uuid}}.vscode-webview.net/{{quality}}/{{commit}}/out/vs/workbench/contrib/webview/browser/pre/", + "reportIssueUrl": "https://github.com/gitpod-io/gitpod/issues/new", + "urlProtocol": "code-web-server", "extensionAllowedProposedApi": [ + "GitHub.vscode-pull-request-github-insiders", + "GitHub.vscode-pull-request-github", + "GitHub.vscode-pull-request-github-insiders", + "ms-python.python", + "ms-vscode.js-debug-nightly", + "ms-vscode.js-debug", + "ms-vscode.lsif-browser", "ms-vscode.vscode-js-profile-flame", "ms-vscode.vscode-js-profile-table", - "ms-vscode.remotehub", - "ms-vscode.remotehub-insiders", - "GitHub.remotehub", - "GitHub.remotehub-insiders" + "ms-vscode.vscode-selfhost-test-provider", + "dbaeumer.vscode-eslint" + ], + "extensionTips": { + "msjsdiag.debugger-for-chrome": "{**/*.ts,**/*.tsx,**/*.js,**/*.jsx,**/*.es6,**/.babelrc}", + "firefox-devtools.vscode-firefox-debug": "{**/*.ts,**/*.tsx,**/*.js,**/*.jsx,**/*.es6,**/.babelrc}", + "golang.Go": "**/*.go", + "ms-vscode.PowerShell": "{**/*.ps1,**/*.psd1,**/*.psm1,**/*.ps.config,**/*.ps1.config}", + "austin.code-gnu-global": "{**/*.c,**/*.cpp,**/*.h}", + "Ionide.Ionide-fsharp": "{**/*.fsx,**/*.fsi,**/*.fs,**/*.ml,**/*.mli}", + "dbaeumer.vscode-eslint": "{**/*.js,**/*.jsx,**/*.es6,**/.eslintrc.*,**/.eslintrc,**/.babelrc,**/jsconfig.json}", + "dbaeumer.jshint": "{**/*.js,**/*.jsx,**/*.es6,**/.babelrc,**/jsconfig.json,**/.jshintrc,**/.jshintignore}", + "ms-vscode.vscode-typescript-tslint-plugin": "{**/tslint.json}", + "bmewburn.vscode-intelephense-client": "{**/*.php,**/php.ini}", + "felixfbecker.php-intellisense": "{**/*.php,**/php.ini}", + "felixfbecker.php-debug": "{**/*.php,**/php.ini}", + "ikappas.phpcs": "{**/*.php,**/php.ini}", + "rust-lang.rust": "{**/*.rs,**/*.rslib}", + "ms-vscode.cpptools-extension-pack": "{**/*.c,**/*.cpp,**/*.cc,**/.cxx,**/*.hh,**/*.hpp,**/*.hxx,**/*.h}", + "DavidAnson.vscode-markdownlint": "{**/*.md}", + "ms-azuretools.vscode-docker": "{**/dockerfile,**/Dockerfile,**/docker-compose.yml,**/docker-compose.*.yml,**/*.cs,**/project.json,**/global.json,**/*.csproj,**/*.cshtml,**/*.sln,**/appsettings.json,**/*.py,**/*.ipynb,**/*.js,**/*.ts,**/package.json}", + "EditorConfig.EditorConfig": "{**/.editorconfig}", + "HookyQR.beautify": "{**/.jsbeautifyrc,**/*.js,**/*.jsx,**/*.es6,**/.eslintrc.*,**/.babelrc,**/jsconfig.json}", + "donjayamanne.githistory": "{**/.gitignore,**/.git}", + "felipecaputo.git-project-manager": "{**/.gitignore,**/.git}", + "eamodio.gitlens": "{**/.gitignore,**/.git}", + "rebornix.Ruby": "{**/*.rb,**/*.erb,**/*.reek,**/.fasterer.yml,**/ruby-lint.yml,**/.rubocop.yml}", + "DotJoshJohnson.xml": "{**/*.xml}", + "shinnn.stylelint": "{**/.stylelintrc,**/stylelint.config.js}", + "eg2.vscode-npm-script": "{**/package.json}", + "ms-mssql.mssql": "{**/*.sql}", + "bajdzis.vscode-database": "{**/*.sql}", + "mtxr.sqltools": "{**/*.sql}", + "usqlextpublisher.usql-vscode-ext": "{**/*.usql}", + "ms-vscode.sublime-keybindings": "{**/.sublime-project,**/.sublime-workspace}", + "k--kato.intellij-idea-keybindings": "{**/.idea}", + "christian-kohler.npm-intellisense": "{**/package.json}", + "octref.vetur": "{**/*.vue}", + "ms-python.python": "{**/*.py,**/*.ipynb}", + "cake-build.cake-vscode": "{**/build.cake}", + "Angular.ng-template": "{**/.angular-cli.json,**/angular.json,**/*.ng.html,**/*.ng,**/*.ngml}", + "vscjava.vscode-maven": "**/pom.xml", + "ms-azuretools.vscode-azureterraform": "**/*.tf", + "HashiCorp.terraform": "**/*.tf", + "vsciot-vscode.vscode-arduino": "**/*.ino", + "ms-kubernetes-tools.vscode-kubernetes-tools": "{**/Chart.yaml}", + "GoogleCloudTools.cloudcode": "{**/skaffold.yaml}", + "Oracle.oracledevtools": "{**/*.sql}" + }, + "extensionImportantTips": { + "ms-python.python": { + "name": "Python", + "languages": [ + "python" + ], + "pattern": "{**/*.py,**/*.ipynb}" + }, + "golang.Go": { + "name": "Go", + "languages": [ + "go" + ], + "pattern": "**/*.go" + }, + "vscjava.vscode-java-pack": { + "name": "Java", + "languages": [ + "java" + ], + "pattern": "{**/*.java}", + "isExtensionPack": true + }, + "ms-vscode.PowerShell": { + "name": "PowerShell", + "languages": [ + "powershell" + ], + "pattern": "{**/*.ps1,**/*.psd1,**/*.psm1}" + }, + "ms-vscode.cpptools": { + "name": "C/C++", + "languages": [ + "c", + "cpp" + ], + "pattern": "{**/*.c,**/*.cpp,**/*.cc,**/.cxx,**/*.hh,**/*.hpp,**/*.hxx,**/*.h}" + }, + "ms-azuretools.vscode-docker": { + "name": "Docker", + "languages": [ + "dockerfile" + ], + "pattern": "{**/dockerfile,**/Dockerfile,**/docker-compose.yml,**/docker-compose.*.yml}" + }, + "octref.vetur": { + "name": "Vetur", + "languages": [ + "vue" + ], + "pattern": "{**/*.vue}" + }, + "ms-vscode.cmake-tools": { + "name": "CMake Tools", + "pattern": "{**/CMakeLists.txt}" + }, + "msazurermtools.azurerm-vscode-tools": { + "name": "Azure Resource Manager", + "pattern": "{**/azuredeploy.json}" + }, + "ms-azuretools.vscode-bicep": { + "name": "Bicep", + "pattern": "{**/*.bicep}" + }, + "svelte.svelte-vscode": { + "name": "Svelte", + "pattern": "{**/*.svelte}" + } + }, + "keymapExtensionTips": [ + "vscodevim.vim", + "ms-vscode.sublime-keybindings", + "ms-vscode.atom-keybindings", + "ms-vscode.brackets-keybindings", + "ms-vscode.vs-keybindings", + "ms-vscode.notepadplusplus-keybindings", + "k--kato.intellij-idea-keybindings", + "hiro-sun.vscode-emacs", + "alphabotsec.vscode-eclipse-keybindings", + "alefragnani.delphi-keybindings" + ], + "languageExtensionTips": [ + "ms-python.python", + "vscjava.vscode-java-pack", + "ecmel.vscode-html-css", + "octref.vetur", + "bmewburn.vscode-intelephense-client", + "dsznajder.es7-react-js-snippets", + "golang.go", + "ms-vscode.powershell", + "dart-code.dart-code", + "rust-lang.rust", + "rebornix.ruby" + ], + "configBasedExtensionTips": { + "git": { + "configPath": ".git/config", + "configName": "Git", + "recommendations": { + "github.vscode-pull-request-github": { + "name": "GitHub Pull Request", + "remotes": [ + "github.com" + ] + }, + "eamodio.gitlens": { + "name": "GitLens" + } + } + } + }, + "extensionKeywords": { + "md": [ + "Markdown" + ], + "js": [ + "JavaScript" + ], + "jsx": [ + "JavaScript" + ], + "es6": [ + "JavaScript" + ], + "html": [ + "Html" + ], + "ts": [ + "TypeScript" + ], + "tsx": [ + "TypeScript" + ], + "css": [ + "CSS" + ], + "scss": [ + "SASS" + ], + "txt": [ + "Text" + ], + "php": [ + "PHP" + ], + "php3": [ + "PHP" + ], + "php4": [ + "PHP" + ], + "ph3": [ + "PHP" + ], + "ph4": [ + "PHP" + ], + "xml": [ + "XML" + ], + "py": [ + "Python" + ], + "pyc": [ + "Python" + ], + "pyd": [ + "Python" + ], + "pyo": [ + "Python" + ], + "pyw": [ + "Python" + ], + "pyz": [ + "Python" + ], + "java": [ + "Java" + ], + "class": [ + "Java" + ], + "jar": [ + "Java" + ], + "c": [ + "c", + "objective c", + "objective-c" + ], + "m": [ + "objective c", + "objective-c" + ], + "mm": [ + "objective c", + "objective-c" + ], + "cpp": [ + "cpp", + "c plus plus", + "c", + "c++" + ], + "cc": [ + "cpp", + "c plus plus", + "c", + "c++" + ], + "cxx": [ + "cpp", + "c plus plus", + "c++" + ], + "hh": [ + "cpp", + "c plus plus", + "c++" + ], + "hpp": [ + "cpp", + "c++" + ], + "h": [ + "cpp", + "c plus plus", + "c++", + "c", + "objective c", + "objective-c" + ], + "sql": [ + "sql" + ], + "sh": [ + "bash" + ], + "bash": [ + "bash" + ], + "zsh": [ + "bash", + "zshell" + ], + "cs": [ + "c#", + "csharp" + ], + "csproj": [ + "c#", + "csharp" + ], + "sln": [ + "c#", + "csharp" + ], + "go": [ + "go" + ], + "sty": [ + "latex" + ], + "tex": [ + "latex" + ], + "ps": [ + "powershell" + ], + "ps1": [ + "powershell" + ], + "rs": [ + "rust" + ], + "rslib": [ + "rust" + ], + "hs": [ + "haskell" + ], + "lhs": [ + "haskell" + ], + "scm": [ + "scheme" + ], + "ss": [ + "scheme" + ], + "clj": [ + "clojure" + ], + "cljs": [ + "clojure" + ], + "cljc": [ + "clojure" + ], + "edn": [ + "clojure" + ], + "erl": [ + "erlang" + ], + "hrl": [ + "erlang" + ], + "scala": [ + "scala" + ], + "sc": [ + "scala" + ], + "pl": [ + "perl" + ], + "pm": [ + "perl" + ], + "t": [ + "perl" + ], + "pod": [ + "perl" + ], + "groovy": [ + "groovy" + ], + "swift": [ + "swift" + ], + "rb": [ + "ruby" + ], + "rbw": [ + "ruby" + ], + "jl": [ + "julia" + ], + "f": [ + "fortran" + ], + "for": [ + "fortran" + ], + "f90": [ + "fortran" + ], + "f95": [ + "fortran" + ], + "coffee": [ + "CoffeeScript" + ], + "litcoffee": [ + "CoffeeScript" + ], + "yaml": [ + "yaml" + ], + "yml": [ + "yaml" + ], + "dart": [ + "dart" + ], + "json": [ + "json" + ] + }, + "extensionAllowedBadgeProviders": [ + "api.bintray.com", + "api.travis-ci.com", + "api.travis-ci.org", + "app.fossa.io", + "badge.buildkite.com", + "badge.fury.io", + "badge.waffle.io", + "badgen.net", + "badges.frapsoft.com", + "badges.gitter.im", + "badges.greenkeeper.io", + "cdn.travis-ci.com", + "cdn.travis-ci.org", + "ci.appveyor.com", + "circleci.com", + "cla.opensource.microsoft.com", + "codacy.com", + "codeclimate.com", + "codecov.io", + "coveralls.io", + "david-dm.org", + "deepscan.io", + "dev.azure.com", + "docs.rs", + "flat.badgen.net", + "gemnasium.com", + "githost.io", + "gitlab.com", + "godoc.org", + "goreportcard.com", + "img.shields.io", + "isitmaintained.com", + "marketplace.visualstudio.com", + "nodesecurity.io", + "opencollective.com", + "snyk.io", + "travis-ci.com", + "travis-ci.org", + "visualstudio.com", + "vsmarketplacebadge.apphb.com", + "www.bithound.io", + "www.versioneye.com" + ], + "extensionAllowedBadgeProvidersRegex": [ + "^https:\\/\\/github\\.com\\/[^/]+\\/[^/]+\\/workflows\\/.*badge\\.svg" ], "builtInExtensions": [ { @@ -122,5 +593,15 @@ "publisherDisplayName": "Microsoft" } } + ], + "extensionsGallery": { + "serviceUrl": "https://open-vsx.org/vscode/gallery", + "itemUrl": "https://open-vsx.org/vscode/item", + "resourceUrlTemplate": "https://open-vsx.org/vscode/asset/{publisher}/{name}/{version}/Microsoft.VisualStudio.Code.WebResources/{path}", + "controlUrl": "", + "recommendationsUrl": "" + }, + "linkProtectionTrustedDomains": [ + "https://open-vsx.org" ] } diff --git a/resources/server/manifest.json b/resources/server/manifest.json new file mode 100644 index 0000000000000..80f7b447d0615 --- /dev/null +++ b/resources/server/manifest.json @@ -0,0 +1,5 @@ +{ + "start_url": "/", + "lang": "en-US", + "display": "standalone" +} diff --git a/scripts/setup-google-adc.sh b/scripts/setup-google-adc.sh new file mode 100755 index 0000000000000..30e087bf00f54 --- /dev/null +++ b/scripts/setup-google-adc.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# #### Instructions to fill the GCP_ADC_FILE env var +# 1. `gcloud auth login ` and authenticate +# 2. `gcloud auth application-default login` and authenticate +# 3. `cat ~/.config/gcloud/application_default_credentials.json` and copy the output +# 4. Go to https://gitpod.io/settings/ and create: +# - name: GCP_ADC_FILE +# - value: paste-the-output +# - repo: gitpod-io/vscode + +GCLOUD_ADC_PATH="/home/gitpod/.config/gcloud/application_default_credentials.json" + +if [ ! -f "$GCLOUD_ADC_PATH" ]; then + if [ -z "$GCP_ADC_FILE" ]; then + echo "GCP_ADC_FILE not set, doing nothing." + return; + fi + echo "$GCP_ADC_FILE" > "$GCLOUD_ADC_PATH" + echo "Set GOOGLE_APPLICATION_CREDENTIALS value based on contents from GCP_ADC_FILE" +fi +export GOOGLE_APPLICATION_CREDENTIALS="$GCLOUD_ADC_PATH" + diff --git a/src/server-cli.js b/src/server-cli.js new file mode 100644 index 0000000000000..a02cc76853865 --- /dev/null +++ b/src/server-cli.js @@ -0,0 +1,8 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +//@ts-check +'use strict'; + +require('./bootstrap-amd').load('vs/server/node/cli'); diff --git a/src/server.js b/src/server.js new file mode 100644 index 0000000000000..5ee2930271951 --- /dev/null +++ b/src/server.js @@ -0,0 +1,12 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +//@ts-check +'use strict'; + +const path = require('path'); +process.env.VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH = path.join(__dirname, '../remote/node_modules'); +require('./bootstrap-node').injectNodeModuleLookupPath(process.env.VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH); +require('./bootstrap-amd').load('vs/server/node/server'); + diff --git a/src/serverUriTransformer.js b/src/serverUriTransformer.js new file mode 100644 index 0000000000000..f0e12e2287f0f --- /dev/null +++ b/src/serverUriTransformer.js @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +//@ts-check +'use strict'; + +/** @type {(remoteAuthority: string) => import('./vs/base/common/uriIpc').IRawURITransformer} */ +module.exports = (remoteAuthority) => { + return { + /** @param {import('./vs/base/common/uri').UriComponents} uri */ + transformIncoming: uri => { + if (uri.scheme === 'vscode-remote') { + if (uri.path.startsWith('/vscode-resource')) { + // webview resources + return { + scheme: 'file', + path: JSON.parse(uri.query).requestResourcePath + }; + } + return { + scheme: 'file', + path: uri.path + }; + } + if (uri.scheme === 'file') { + return { + scheme: 'vscode-local', + path: uri.path + }; + } + return uri; + }, + transformOutgoing: uri => { + if (uri.scheme === 'file') { + return { + scheme: 'vscode-remote', + authority: remoteAuthority, + path: uri.path + }; + } + if (uri.scheme === 'vscode-local') { + return { + scheme: 'file', + path: uri.path + }; + } + return uri; + }, + transformOutgoingScheme: scheme => { + if (scheme === 'file') { + return 'vscode-remote'; + } + if (scheme === 'vscode-local') { + return 'file'; + } + return scheme; + } + }; +}; diff --git a/src/vs/server/browser/workbench/workbench-dev.html b/src/vs/server/browser/workbench/workbench-dev.html new file mode 100644 index 0000000000000..b959ba6cf0ac4 --- /dev/null +++ b/src/vs/server/browser/workbench/workbench-dev.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vs/server/browser/workbench/workbench.html b/src/vs/server/browser/workbench/workbench.html new file mode 100644 index 0000000000000..166fc2c357b16 --- /dev/null +++ b/src/vs/server/browser/workbench/workbench.html @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vs/server/browser/workbench/workbench.ts b/src/vs/server/browser/workbench/workbench.ts new file mode 100644 index 0000000000000..604c6968320d9 --- /dev/null +++ b/src/vs/server/browser/workbench/workbench.ts @@ -0,0 +1,404 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { isStandalone } from 'vs/base/browser/browser'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { Event } from 'vs/base/common/event'; +import { Schemas } from 'vs/base/common/network'; +import { isEqual } from 'vs/base/common/resources'; +import { URI } from 'vs/base/common/uri'; +import { request } from 'vs/base/parts/request/browser/request'; +import { localize } from 'vs/nls'; +import { parseLogLevel } from 'vs/platform/log/common/log'; +import { defaultWebSocketFactory } from 'vs/platform/remote/browser/browserSocketFactory'; +import { isFolderToOpen, isWorkspaceToOpen } from 'vs/platform/windows/common/windows'; +import { create, ICredentialsProvider, IHomeIndicator, IProductQualityChangeHandler, IWindowIndicator, IWorkspace, IWorkspaceProvider } from 'vs/workbench/workbench.web.api'; + +function doCreateUri(path: string, queryValues: Map): URI { + let query: string | undefined = undefined; + + if (queryValues) { + let index = 0; + queryValues.forEach((value, key) => { + if (!query) { + query = ''; + } + + const prefix = (index++ === 0) ? '' : '&'; + query += `${prefix}${key}=${encodeURIComponent(value)}`; + }); + } + + return URI.parse(window.location.href).with({ path, query }); +} + +interface ICredential { + service: string; + account: string; + password: string; +} + +class LocalStorageCredentialsProvider implements ICredentialsProvider { + + static readonly CREDENTIALS_OPENED_KEY = 'credentials.provider'; + + private readonly authService: string | undefined; + + private _credentials: ICredential[] | undefined; + private get credentials(): ICredential[] { + if (!this._credentials) { + try { + const serializedCredentials = window.localStorage.getItem(LocalStorageCredentialsProvider.CREDENTIALS_OPENED_KEY); + if (serializedCredentials) { + this._credentials = JSON.parse(serializedCredentials); + } + } catch (error) { + // ignore + } + + if (!Array.isArray(this._credentials)) { + this._credentials = []; + } + } + + return this._credentials; + } + + private save(): void { + window.localStorage.setItem(LocalStorageCredentialsProvider.CREDENTIALS_OPENED_KEY, JSON.stringify(this.credentials)); + } + + async getPassword(service: string, account: string): Promise { + return this.doGetPassword(service, account); + } + + private async doGetPassword(service: string, account?: string): Promise { + for (const credential of this.credentials) { + if (credential.service === service) { + if (typeof account !== 'string' || account === credential.account) { + return credential.password; + } + } + } + + return null; + } + + async setPassword(service: string, account: string, password: string): Promise { + this.doDeletePassword(service, account); + + this.credentials.push({ service, account, password }); + + this.save(); + + try { + if (password && service === this.authService) { + const value = JSON.parse(password); + if (Array.isArray(value) && value.length === 0) { + await this.logout(service); + } + } + } catch (error) { + console.log(error); + } + } + + async deletePassword(service: string, account: string): Promise { + const result = await this.doDeletePassword(service, account); + + if (result && service === this.authService) { + try { + await this.logout(service); + } catch (error) { + console.log(error); + } + } + + return result; + } + + private async doDeletePassword(service: string, account: string): Promise { + let found = false; + + this._credentials = this.credentials.filter(credential => { + if (credential.service === service && credential.account === account) { + found = true; + + return false; + } + + return true; + }); + + if (found) { + this.save(); + } + + return found; + } + + async findPassword(service: string): Promise { + return this.doGetPassword(service); + } + + async findCredentials(service: string): Promise> { + return this.credentials + .filter(credential => credential.service === service) + .map(({ account, password }) => ({ account, password })); + } + + private async logout(service: string): Promise { + const queryValues: Map = new Map(); + queryValues.set('logout', String(true)); + queryValues.set('service', service); + + await request({ + url: doCreateUri('/auth/logout', queryValues).toString(true) + }, CancellationToken.None); + } +} + +class WorkspaceProvider implements IWorkspaceProvider { + + static QUERY_PARAM_EMPTY_WINDOW = 'ew'; + static QUERY_PARAM_FOLDER = 'folder'; + static QUERY_PARAM_WORKSPACE = 'workspace'; + + static QUERY_PARAM_PAYLOAD = 'payload'; + + readonly trusted = true; + + constructor( + readonly workspace: IWorkspace, + readonly payload: object + ) { } + + async open(workspace: IWorkspace, options?: { reuse?: boolean, payload?: object }): Promise { + if (options?.reuse && !options.payload && this.isSame(this.workspace, workspace)) { + return true; // return early if workspace and environment is not changing and we are reusing window + } + + const targetHref = this.createTargetUrl(workspace, options); + if (targetHref) { + if (options?.reuse) { + window.location.href = targetHref; + return true; + } else { + let result; + if (isStandalone) { + result = window.open(targetHref, '_blank', 'toolbar=no'); // ensures to open another 'standalone' window! + } else { + result = window.open(targetHref); + } + + return !!result; + } + } + return false; + } + + private createTargetUrl(workspace: IWorkspace, options?: { reuse?: boolean, payload?: object }): string | undefined { + + // Empty + let targetHref: string | undefined = undefined; + if (!workspace) { + targetHref = `${document.location.origin}${document.location.pathname}?${WorkspaceProvider.QUERY_PARAM_EMPTY_WINDOW}=true`; + } + + // Folder + else if (isFolderToOpen(workspace)) { + targetHref = `${document.location.origin}${document.location.pathname}?${WorkspaceProvider.QUERY_PARAM_FOLDER}=${encodeURIComponent(workspace.folderUri.toString())}`; + } + + // Workspace + else if (isWorkspaceToOpen(workspace)) { + targetHref = `${document.location.origin}${document.location.pathname}?${WorkspaceProvider.QUERY_PARAM_WORKSPACE}=${encodeURIComponent(workspace.workspaceUri.toString())}`; + } + + // Append payload if any + if (options?.payload) { + targetHref += `&${WorkspaceProvider.QUERY_PARAM_PAYLOAD}=${encodeURIComponent(JSON.stringify(options.payload))}`; + } + + return targetHref; + } + + private isSame(workspaceA: IWorkspace, workspaceB: IWorkspace): boolean { + if (!workspaceA || !workspaceB) { + return workspaceA === workspaceB; // both empty + } + + if (isFolderToOpen(workspaceA) && isFolderToOpen(workspaceB)) { + return isEqual(workspaceA.folderUri, workspaceB.folderUri); // same workspace + } + + if (isWorkspaceToOpen(workspaceA) && isWorkspaceToOpen(workspaceB)) { + return isEqual(workspaceA.workspaceUri, workspaceB.workspaceUri); // same workspace + } + + return false; + } + + hasRemote(): boolean { + if (this.workspace) { + if (isFolderToOpen(this.workspace)) { + return this.workspace.folderUri.scheme === Schemas.vscodeRemote; + } + + if (isWorkspaceToOpen(this.workspace)) { + return this.workspace.workspaceUri.scheme === Schemas.vscodeRemote; + } + } + + return true; + } +} + +class WindowIndicator implements IWindowIndicator { + + readonly onDidChange = Event.None; + + readonly label: string; + readonly tooltip: string; + readonly command: string | undefined; + + constructor(workspace: IWorkspace) { + let repositoryOwner: string | undefined = undefined; + let repositoryName: string | undefined = undefined; + + if (workspace) { + let uri: URI | undefined = undefined; + if (isFolderToOpen(workspace)) { + uri = workspace.folderUri; + } else if (isWorkspaceToOpen(workspace)) { + uri = workspace.workspaceUri; + } + + if (uri?.scheme === 'github' || uri?.scheme === 'codespace') { + [repositoryOwner, repositoryName] = uri.authority.split('+'); + } + } + + // Repo + if (repositoryName && repositoryOwner) { + this.label = localize('playgroundLabelRepository', "$(remote) VS Code Web Playground: {0}/{1}", repositoryOwner, repositoryName); + this.tooltip = localize('playgroundRepositoryTooltip', "VS Code Web Playground: {0}/{1}", repositoryOwner, repositoryName); + } + + // No Repo + else { + this.label = localize('playgroundLabel', "$(remote) VS Code Web Playground"); + this.tooltip = localize('playgroundTooltip', "VS Code Web Playground"); + } + } +} + + +(function () { + // Find workspace to open and payload + let workspace: IWorkspace; + let payload = Object.create(null); + let logLevel: string | undefined = undefined; + + const query = new URL(document.location.href).searchParams; + query.forEach((value, key) => { + switch (key) { + + // Folder + case WorkspaceProvider.QUERY_PARAM_FOLDER: + workspace = { folderUri: URI.parse(value) }; + break; + + // Workspace + case WorkspaceProvider.QUERY_PARAM_WORKSPACE: + workspace = { workspaceUri: URI.parse(value) }; + break; + + // Empty + case WorkspaceProvider.QUERY_PARAM_EMPTY_WINDOW: + workspace = undefined; + break; + + // Payload + case WorkspaceProvider.QUERY_PARAM_PAYLOAD: + try { + payload = JSON.parse(value); + } catch (error) { + console.error(error); // possible invalid JSON + } + break; + + // Log level + case 'logLevel': + logLevel = value; + break; + } + }); + + // Workspace Provider + const workspaceProvider = new WorkspaceProvider(workspace, payload); + + // Home Indicator + const homeIndicator: IHomeIndicator = { + href: 'https://github.com/microsoft/vscode', + icon: 'code', + title: localize('home', "Home") + }; + + // Window indicator (unless connected to a remote) + let windowIndicator: WindowIndicator | undefined = undefined; + if (!workspaceProvider.hasRemote()) { + windowIndicator = new WindowIndicator(workspace); + } + + // Product Quality Change Handler + const productQualityChangeHandler: IProductQualityChangeHandler = (quality) => { + let queryString = `quality=${quality}`; + + // Save all other query params we might have + const query = new URL(document.location.href).searchParams; + query.forEach((value, key) => { + if (key !== 'quality') { + queryString += `&${key}=${value}`; + } + }); + + window.location.href = `${window.location.origin}?${queryString}`; + }; + + // Finally create workbench + const remoteAuthority = window.location.host; + // TODO(ak) secure by using external endpoint + const webviewEndpoint = new URL(window.location.href); + webviewEndpoint.pathname = '/out/vs/workbench/contrib/webview/browser/pre/'; + webviewEndpoint.search = ''; + create(document.body, { + webviewEndpoint: webviewEndpoint.href, + remoteAuthority, + webSocketFactory: { + create: url => { + const codeServerUrl = new URL(url); + codeServerUrl.protocol = location.protocol === 'https:' ? 'wss:' : 'ws:'; + return defaultWebSocketFactory.create(codeServerUrl.toString()); + } + }, + resourceUriProvider: uri => { + return URI.from({ + scheme: location.protocol === 'https:' ? 'https' : 'http', + authority: remoteAuthority, + path: `/vscode-remote-resource`, + query: `path=${encodeURIComponent(uri.path)}` + }); + }, + developmentOptions: { + logLevel: logLevel ? parseLogLevel(logLevel) : undefined + }, + homeIndicator, + windowIndicator, + productQualityChangeHandler, + workspaceProvider, + credentialsProvider: new LocalStorageCredentialsProvider() + }); +})(); diff --git a/src/vs/server/node/cli.main.ts b/src/vs/server/node/cli.main.ts new file mode 100644 index 0000000000000..f270dfc96cb74 --- /dev/null +++ b/src/vs/server/node/cli.main.ts @@ -0,0 +1,214 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import * as assert from 'assert'; +import * as fs from 'fs'; +import type * as http from 'http'; +import * as path from 'path'; +import { URI } from 'vs/base/common/uri'; +import { whenDeleted } from 'vs/base/node/pfs'; +import { localize } from 'vs/nls'; +import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; +import { buildHelpMessage, buildVersionMessage, ErrorReporter, OptionDescriptions, OPTIONS as ALL_OPTIONS, parseArgs } from 'vs/platform/environment/node/argv'; +import { createWaitMarkerFile } from 'vs/platform/environment/node/wait'; +import product from 'vs/platform/product/common/product'; +import type { PipeCommand } from 'vs/workbench/api/node/extHostCLIServer'; + +const OPTIONS_KEYS: (keyof typeof ALL_OPTIONS)[] = [ + 'help', + + 'diff', + 'add', + 'goto', + 'new-window', + 'reuse-window', + 'folder-uri', + 'file-uri', + 'wait', + + 'list-extensions', + 'show-versions', + 'category', + 'install-extension', + 'uninstall-extension', + 'force', + + 'version', + 'status', + 'verbose' +]; +export interface ServerNativeParsedArgs extends NativeParsedArgs { + 'openExternal'?: string[] +} + +export interface ServerCliOptions { + createRequestOptions(): http.RequestOptions + parseArgs?(args: string[], errorReporter?: ErrorReporter): T + handleArgs?(args: T): Promise +} + +async function doMain(processArgv: string[], options: ServerCliOptions): Promise { + + let args: T; + + try { + const errorReporter: ErrorReporter = { + onUnknownOption: (id) => { + console.warn(localize('unknownOption', "Warning: '{0}' is not in the list of known options.", id)); + }, + onMultipleValues: (id, val) => { + console.warn(localize('multipleValues', "Option '{0}' is defined more than once. Using value '{1}.'", id, val)); + } + }; + + args = options.parseArgs ? options.parseArgs(processArgv.slice(2), errorReporter) : parseArgs(processArgv.slice(2), OPTIONS, errorReporter) as T; + if (args.goto) { + args._.forEach(arg => assert(/^(\w:)?[^:]+(:\d*){0,2}$/.test(arg), localize('gotoValidation', "Arguments in `--goto` mode should be in the format of `FILE(:LINE(:CHARACTER))`."))); + } + } catch (err) { + console.error(err.message); + return; + } + + // Help + if (args.help) { + const executable = `${product.applicationName}`; + console.log(buildHelpMessage(product.nameLong, executable, product.version, OPTIONS)); + } + + // Version Info + else if (args.version) { + console.log(buildVersionMessage(product.version, product.commit)); + } + + // Status + else if (args.status) { + console.log(await sendCommand(options.createRequestOptions(), { + type: 'status' + })); + } + + // open external URIs + else if (args['openExternal']) { + await sendCommand(options.createRequestOptions(), { + type: 'openExternal', + uris: args['openExternal'] + }); + } + + else if (options.handleArgs && await options.handleArgs(args)) { + return; + } + + // Extensionst Management + else if (args['list-extensions'] || args['install-extension'] || args['uninstall-extension']) { + console.log(await sendCommand(options.createRequestOptions(), { + type: 'extensionManagement', + list: args['list-extensions'] ? { + category: args.category, + showVersions: args['show-versions'] + } : undefined, + install: args['install-extension'], + uninstall: args['uninstall-extension'], + force: args['force'] + })); + } + + // Just Code + else { + const waitMarkerFilePath = args.wait ? createWaitMarkerFile(args.verbose) : undefined; + const fileURIs: string[] = [...args['file-uri'] || []]; + const folderURIs: string[] = [...args['folder-uri'] || []]; + const pendingFiles: Promise[] = []; + for (const arg of args._) { + if (arg === '-') { + // don't support reading from stdin yet + continue; + } + const filePath = path.resolve(process.cwd(), arg); + pendingFiles.push(fs.promises.stat(filePath).then(stat => { + const uris = stat.isFile() ? fileURIs : folderURIs; + uris.push(URI.parse(filePath).toString()); + }, e => { + if (e.code === 'ENOENT') { + // open a new file + fileURIs.push(URI.parse(filePath).toString()); + } else { + console.log(`failed to resolve '${filePath}' path:`, e); + } + })); + } + await Promise.all(pendingFiles); + await sendCommand(options.createRequestOptions(), { + type: 'open', + fileURIs, + folderURIs, + forceNewWindow: args['new-window'], + diffMode: args.diff, + addMode: args.add, + gotoLineMode: args.goto, + forceReuseWindow: args['reuse-window'], + waitMarkerFilePath + }); + if (waitMarkerFilePath) { + // Complete when wait marker file is deleted + await whenDeleted(waitMarkerFilePath); + } + } +} + +export async function sendCommand(options: http.RequestOptions, command: PipeCommand): Promise { + const http = await import('http'); + while (true) { + try { + return await new Promise((resolve, reject) => { + const req = http.request(options, res => { + const chunks: string[] = []; + res.setEncoding('utf8'); + res.on('data', d => chunks.push(d)); + res.on('end', () => { + const result = chunks.join(''); + if (res.statusCode !== 200) { + reject(new Error(`Bad status code: ${res.statusCode}: ${result}`)); + } else { + resolve(result); + } + }); + }); + req.on('error', err => reject(err)); + req.write(JSON.stringify(command)); + req.end(); + }); + } catch (e) { + // Code Server is not running yet, let's try again + if (e.code !== 'ECONNREFUSED') { + throw e; + } + await new Promise(resolve => setTimeout(resolve, 500)); + } + } +} + +export const OPTIONS: OptionDescriptions = { + _: ALL_OPTIONS['_'], + 'openExternal': { + type: 'string[]' + } +}; +for (const key of OPTIONS_KEYS) { + Object.assign(OPTIONS, { [key]: ALL_OPTIONS[key] }); +} + +function eventuallyExit(code: number): void { + setTimeout(() => process.exit(code), 0); +} + +export function main(processArgv: string[], options: ServerCliOptions): void { + doMain(processArgv, options) + .then(() => eventuallyExit(0)) + .then(null, err => { + console.error(err.message || err.stack || err); + eventuallyExit(1); + }); +} diff --git a/src/vs/server/node/cli.ts b/src/vs/server/node/cli.ts new file mode 100644 index 0000000000000..371fb1e05bdbd --- /dev/null +++ b/src/vs/server/node/cli.ts @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import { main } from 'vs/server/node/cli.main'; + +main(process.argv, { + createRequestOptions: () => { + const ipcHandlePath = process.env['VSCODE_IPC_HOOK_CLI']; + + if (!ipcHandlePath) { + throw new Error('Missing VSCODE_IPC_HOOK_CLI'); + } + return { + socketPath: ipcHandlePath, + method: 'POST' + }; + } +}); + + diff --git a/src/vs/server/node/server.main.ts b/src/vs/server/node/server.main.ts new file mode 100644 index 0000000000000..c24259a05200f --- /dev/null +++ b/src/vs/server/node/server.main.ts @@ -0,0 +1,912 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import * as cp from 'child_process'; +import * as crypto from 'crypto'; +import * as fs from 'fs'; +import * as http from 'http'; +import * as net from 'net'; +import * as os from 'os'; +import * as path from 'path'; +import * as url from 'url'; +import { RunOnceScheduler } from 'vs/base/common/async'; +import { VSBuffer } from 'vs/base/common/buffer'; +import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cancellation'; +import { IRemoteConsoleLog } from 'vs/base/common/console'; +import { isPromiseCanceledError, onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/errors'; +import { Emitter, Event } from 'vs/base/common/event'; +import { IDisposable } from 'vs/base/common/lifecycle'; +import { FileAccess, Schemas } from 'vs/base/common/network'; +import { join } from 'vs/base/common/path'; +import * as platform from 'vs/base/common/platform'; +import Severity from 'vs/base/common/severity'; +import { ReadableStreamEventPayload } from 'vs/base/common/stream'; +import { URI } from 'vs/base/common/uri'; +import { IRawURITransformer, transformIncomingURIs, transformOutgoingURIs, URITransformer } from 'vs/base/common/uriIpc'; +import { generateUuid } from 'vs/base/common/uuid'; +import { ClientConnectionEvent, IPCServer, IServerChannel } from 'vs/base/parts/ipc/common/ipc'; +import { PersistentProtocol, ProtocolConstants } from 'vs/base/parts/ipc/common/ipc.net'; +import { NodeSocket, WebSocketNodeSocket } from 'vs/base/parts/ipc/node/ipc.net'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { ConfigurationService } from 'vs/platform/configuration/common/configurationService'; +import { ExtensionHostDebugBroadcastChannel } from 'vs/platform/debug/common/extensionHostDebugIpc'; +import { IDownloadService } from 'vs/platform/download/common/download'; +import { DownloadService } from 'vs/platform/download/common/downloadService'; +import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; +import { IEnvironmentService, INativeEnvironmentService } from 'vs/platform/environment/common/environment'; +import { OptionDescriptions, OPTIONS, parseArgs } from 'vs/platform/environment/node/argv'; +import { NativeEnvironmentService } from 'vs/platform/environment/node/environmentService'; +import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; +import { IExtensionGalleryService, IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { ExtensionManagementChannel } from 'vs/platform/extensionManagement/common/extensionManagementIpc'; +import { ExtensionManagementService } from 'vs/platform/extensionManagement/node/extensionManagementService'; +import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { IFileService } from 'vs/platform/files/common/files'; +import { FileService } from 'vs/platform/files/common/fileService'; +import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider'; +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; +import { createDecorator, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; +import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; +import { BufferLogService } from 'vs/platform/log/common/bufferLog'; +import { ConsoleMainLogger, getLogLevel, ILogService, MultiplexLogService } from 'vs/platform/log/common/log'; +import { LogLevelChannel } from 'vs/platform/log/common/logIpc'; +import { SpdLogLogger } from 'vs/platform/log/node/spdlogLog'; +import product from 'vs/platform/product/common/product'; +import { IProductService } from 'vs/platform/product/common/productService'; +import { ConnectionType, ErrorMessage, HandshakeMessage, IRemoteExtensionHostStartParams, OKMessage, SignRequest } from 'vs/platform/remote/common/remoteAgentConnection'; +import { RemoteAgentConnectionContext } from 'vs/platform/remote/common/remoteAgentEnvironment'; +import { IRequestService } from 'vs/platform/request/common/request'; +import { RequestChannel } from 'vs/platform/request/common/requestIpc'; +import { RequestService } from 'vs/platform/request/node/requestService'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; +import { IFileChangeDto } from 'vs/workbench/api/common/extHost.protocol'; +import { IExtHostReadyMessage, IExtHostSocketMessage } from 'vs/workbench/services/extensions/common/extensionHostProtocol'; +import { Logger } from 'vs/workbench/services/extensions/common/extensionPoints'; +import { ExtensionScanner, ExtensionScannerInput, IExtensionReference } from 'vs/workbench/services/extensions/node/extensionPoints'; +import { IGetEnvironmentDataArguments, IRemoteAgentEnvironmentDTO, IScanExtensionsArguments, IScanSingleExtensionArguments } from 'vs/workbench/services/remote/common/remoteAgentEnvironmentChannel'; +import { REMOTE_FILE_SYSTEM_CHANNEL_NAME } from 'vs/workbench/services/remote/common/remoteAgentFileSystemChannel'; +import { RemoteExtensionLogFileName } from 'vs/workbench/services/remote/common/remoteAgentService'; + +export type IRawURITransformerFactory = (remoteAuthority: string) => IRawURITransformer; +export const IRawURITransformerFactory = createDecorator('rawURITransformerFactory'); + +const APP_ROOT = path.join(__dirname, '..', '..', '..', '..'); +const uriTransformerPath = path.join(APP_ROOT, 'out/serverUriTransformer'); +const rawURITransformerFactory: IRawURITransformerFactory = require.__$__nodeRequire(uriTransformerPath); + +const WEB_MAIN = path.join(APP_ROOT, 'out', 'vs', 'server', 'browser', 'workbench', 'workbench.html'); +const WEB_MAIN_DEV = path.join(APP_ROOT, 'out', 'vs', 'server', 'browser', 'workbench', 'workbench-dev.html'); + +function registerErrorHandler(logService: ILogService): void { + setUnexpectedErrorHandler(e => logService.error(e)); + // Print a console message when rejection isn't handled within N seconds. For details: + // see https://nodejs.org/api/process.html#process_event_unhandledrejection + // and https://nodejs.org/api/process.html#process_event_rejectionhandled + const unhandledPromises: Promise[] = []; + process.on('unhandledRejection', (reason: any, promise: Promise) => { + unhandledPromises.push(promise); + setTimeout(() => { + const idx = unhandledPromises.indexOf(promise); + if (idx >= 0) { + promise.catch(e => { + unhandledPromises.splice(idx, 1); + if (!isPromiseCanceledError(e)) { + logService.warn(`rejected promise not handled within 1 second: ${e}`); + if (e && e.stack) { + logService.warn(`stack trace: ${e.stack}`); + } + onUnexpectedError(reason); + } + }); + } + }, 1000); + }); + + process.on('rejectionHandled', (promise: Promise) => { + const idx = unhandledPromises.indexOf(promise); + if (idx >= 0) { + unhandledPromises.splice(idx, 1); + } + }); + + // Print a console message when an exception isn't handled. + process.on('uncaughtException', function (err: Error) { + onUnexpectedError(err); + }); +} + +interface ManagementProtocol { + protocol: PersistentProtocol + graceTimeReconnection: RunOnceScheduler + shortGraceTimeReconnection: RunOnceScheduler +} + +interface Client { + management?: ManagementProtocol + extensionHost?: cp.ChildProcess +} + +function safeDisposeProtocolAndSocket(protocol: PersistentProtocol): void { + try { + protocol.acceptDisconnect(); + const socket = protocol.getSocket(); + protocol.dispose(); + socket.dispose(); + } catch (err) { + onUnexpectedError(err); + } +} + +// TODO is it enough? +const textMimeType = new Map([ + ['.html', 'text/html'], + ['.js', 'text/javascript'], + ['.json', 'application/json'], + ['.css', 'text/css'], + ['.svg', 'image/svg+xml'] +]); + +// TODO is it enough? +const mapExtToMediaMimes = new Map([ + ['.bmp', 'image/bmp'], + ['.gif', 'image/gif'], + ['.ico', 'image/x-icon'], + ['.jpe', 'image/jpg'], + ['.jpeg', 'image/jpg'], + ['.jpg', 'image/jpg'], + ['.png', 'image/png'], + ['.tga', 'image/x-tga'], + ['.tif', 'image/tiff'], + ['.tiff', 'image/tiff'], + ['.woff', 'application/font-woff'] +]); + +function getMediaMime(forPath: string): string | undefined { + const ext = path.extname(forPath); + return mapExtToMediaMimes.get(ext.toLowerCase()); +} + +async function serveFile(logService: ILogService, req: http.IncomingMessage, res: http.ServerResponse, filePath: string, responseHeaders: http.OutgoingHttpHeaders = {}) { + try { + + // Sanity checks + filePath = path.normalize(filePath); // ensure no "." and ".." + + const stat = await fs.promises.stat(filePath); + + // Check if file modified since + const etag = `W/"${[stat.ino, stat.size, stat.mtime.getTime()].join('-')}"`; // weak validator (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) + if (req.headers['if-none-match'] === etag) { + res.writeHead(304); + return res.end(); + } + + // Headers + responseHeaders['Content-Type'] = textMimeType.get(path.extname(filePath)) || getMediaMime(filePath) || 'text/plain'; + responseHeaders['Etag'] = etag; + + res.writeHead(200, responseHeaders); + + // Data + fs.createReadStream(filePath).pipe(res); + } catch (error) { + logService.error(error.toString()); + res.writeHead(404, { 'Content-Type': 'text/plain' }); + return res.end('Not found'); + } +} + +function serveError(req: http.IncomingMessage, res: http.ServerResponse, errorCode: number, errorMessage: string): void { + res.writeHead(errorCode, { 'Content-Type': 'text/plain' }); + res.end(errorMessage); +} + +interface ServerParsedArgs extends NativeParsedArgs { + port?: string +} +const SERVER_OPTIONS: OptionDescriptions> = { + ...OPTIONS, + port: { type: 'string' } +}; + +export interface IStartServerResult { + installingInitialExtensions?: Promise +} + +export interface IServerOptions { + port?: number; + main?: string + mainDev?: string + skipExtensions?: Set + configure?(services: ServiceCollection, channelServer: IPCServer): void + start?(accessor: ServicesAccessor, channelServer: IPCServer): IStartServerResult | void + + configureExtensionHostForkOptions?(opts: cp.ForkOptions, accessor: ServicesAccessor, channelServer: IPCServer): void; + configureExtensionHostProcess?(extensionHost: cp.ChildProcess, accessor: ServicesAccessor, channelServer: IPCServer): IDisposable; + + handleRequest?(pathname: string | null, req: http.IncomingMessage, res: http.ServerResponse, accessor: ServicesAccessor, channelServer: IPCServer): Promise; +} + +export async function main(options: IServerOptions): Promise { + const devMode = !!process.env['VSCODE_DEV']; + const connectionToken = generateUuid(); + + const parsedArgs = parseArgs(process.argv, SERVER_OPTIONS); + parsedArgs['user-data-dir'] = URI.file(path.join(os.homedir(), product.dataFolderName)).fsPath; + const productService = { _serviceBrand: undefined, ...product }; + const environmentService = new NativeEnvironmentService(parsedArgs, productService); + + // see src/vs/code/electron-main/main.ts#142 + const bufferLogService = new BufferLogService(); + const logService = new MultiplexLogService([new ConsoleMainLogger(getLogLevel(environmentService)), bufferLogService]); + registerErrorHandler(logService); + + // see src/vs/code/electron-main/main.ts#204 + await Promise.all([ + environmentService.extensionsPath, + environmentService.logsPath, + environmentService.globalStorageHome.fsPath, + environmentService.workspaceStorageHome.fsPath + ].map(path => path ? fs.promises.mkdir(path, { recursive: true }) : undefined)); + + const onDidClientConnectEmitter = new Emitter(); + const channelServer = new IPCServer(onDidClientConnectEmitter.event); + channelServer.registerChannel('logger', new LogLevelChannel(logService)); + channelServer.registerChannel(ExtensionHostDebugBroadcastChannel.ChannelName, new ExtensionHostDebugBroadcastChannel()); + + const fileService = new FileService(logService); + const diskFileSystemProvider = new DiskFileSystemProvider(logService); + fileService.registerProvider(Schemas.file, diskFileSystemProvider); + + const rootPath = FileAccess.asFileUri('', require).fsPath; + const systemExtensionRoot = path.normalize(path.join(rootPath, '..', 'extensions')); + const extraDevSystemExtensionsRoot = path.normalize(path.join(rootPath, '..', '.build', 'builtInExtensions')); + const logger = new Logger((severity, source, message) => { + const msg = devMode && source ? `[${source}]: ${message}` : message; + if (severity === Severity.Error) { + logService.error(msg); + } else if (severity === Severity.Warning) { + logService.warn(msg); + } else { + logService.info(msg); + } + }); + // see used APIs in vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts + class RemoteExtensionsEnvironment implements IServerChannel { + protected extensionHostLogFileSeq = 1; + async call(ctx: RemoteAgentConnectionContext, command: string, arg?: any, cancellationToken?: CancellationToken | undefined): Promise { + if (command === 'getEnvironmentData') { + const args: IGetEnvironmentDataArguments = arg; + const uriTranformer = new URITransformer(rawURITransformerFactory(args.remoteAuthority)); + return transformOutgoingURIs({ + pid: process.pid, + connectionToken, + appRoot: URI.file(environmentService.appRoot), + settingsPath: environmentService.machineSettingsResource, + logsPath: URI.file(environmentService.logsPath), + extensionsPath: URI.file(environmentService.extensionsPath), + extensionHostLogsPath: URI.file(path.join(environmentService.logsPath, `extension_host_${this.extensionHostLogFileSeq++}`)), + globalStorageHome: environmentService.globalStorageHome, + workspaceStorageHome: environmentService.workspaceStorageHome, + userHome: environmentService.userHome, + os: platform.OS, + marks: [], + useHostProxy: false + } as IRemoteAgentEnvironmentDTO, uriTranformer); + } + if (command === 'scanSingleExtension') { + let args: IScanSingleExtensionArguments = arg; + const uriTranformer = new URITransformer(rawURITransformerFactory(args.remoteAuthority)); + args = transformIncomingURIs(args, uriTranformer); + // see scanSingleExtension in src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts + // TODO: read built nls file + const translations = {}; + const input = new ExtensionScannerInput(product.version, product.date, product.commit, args.language, devMode, URI.revive(args.extensionLocation).fsPath, args.isBuiltin, false, translations); + const extension = await ExtensionScanner.scanSingleExtension(input, logService); + if (!extension) { + return undefined; + } + return transformOutgoingURIs(extension, uriTranformer); + } + if (command === 'scanExtensions') { + let args: IScanExtensionsArguments = arg; + const uriTranformer = new URITransformer(rawURITransformerFactory(args.remoteAuthority)); + args = transformIncomingURIs(args, uriTranformer); + // see _scanInstalledExtensions in src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts + // TODO: read built nls file + const translations = {}; + let pendingSystem = ExtensionScanner.scanExtensions(new ExtensionScannerInput(product.version, product.date, product.commit, args.language, devMode, systemExtensionRoot, true, false, translations), logger); + const builtInExtensions = product.builtInExtensions; + if (devMode && builtInExtensions && builtInExtensions.length) { + pendingSystem = ExtensionScanner.mergeBuiltinExtensions(pendingSystem, ExtensionScanner.scanExtensions(new ExtensionScannerInput(product.version, product.date, product.commit, args.language, devMode, extraDevSystemExtensionsRoot, true, false, translations), logger, { + resolveExtensions: () => { + const result: IExtensionReference[] = []; + for (const extension of builtInExtensions) { + result.push({ name: extension.name, path: path.join(extraDevSystemExtensionsRoot, extension.name) }); + } + return Promise.resolve(result); + } + })); + } + const pendingUser = extensionsInstalled.then(() => ExtensionScanner.scanExtensions(new ExtensionScannerInput(product.version, product.date, product.commit, args.language, devMode, environmentService.extensionsPath, false, false, translations), logger)); + let pendingDev: Promise[] = []; + if (args.extensionDevelopmentPath) { + pendingDev = args.extensionDevelopmentPath.map(devPath => ExtensionScanner.scanOneOrMultipleExtensions(new ExtensionScannerInput(product.version, product.date, product.commit, args.language, devMode, URI.revive(devPath).fsPath, false, true, translations), logger)); + } + const result: IExtensionDescription[] = []; + const skipExtensions = new Set([...args.skipExtensions.map(ExtensionIdentifier.toKey), ...(options?.skipExtensions || [])]); + for (const extensions of await Promise.all([...pendingDev, pendingUser, pendingSystem])) { + for (let i = extensions.length - 1; i >= 0; i--) { + const extension = extensions[i]; + const key = ExtensionIdentifier.toKey(extension.identifier); + if (skipExtensions.has(key)) { + continue; + } + skipExtensions.add(key); + result.unshift(transformOutgoingURIs(extension, uriTranformer)); + } + } + return result; + } + logService.error('Unknown command: RemoteExtensionsEnvironment.' + command); + throw new Error('Unknown command: RemoteExtensionsEnvironment.' + command); + } + listen(ctx: RemoteAgentConnectionContext, event: string, arg?: any): Event { + logService.error('Unknown event: RemoteExtensionsEnvironment.' + event); + throw new Error('Unknown event: RemoteExtensionsEnvironment.' + event); + } + } + channelServer.registerChannel('remoteextensionsenvironment', new RemoteExtensionsEnvironment()); + + // see used APIs in src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel.ts + class RemoteFileSystem implements IServerChannel { + protected readonly watchers = new Map + }>(); + protected readonly watchHandles = new Map(); + async call(ctx: RemoteAgentConnectionContext, command: string, arg?: any, cancellationToken?: CancellationToken | undefined): Promise { + if (command === 'stat') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + return diskFileSystemProvider.stat(URI.revive(uriTranformer.transformIncoming(arg[0]))); + } + if (command === 'open') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + return diskFileSystemProvider.open(URI.revive(uriTranformer.transformIncoming(arg[0])), arg[1]); + } + if (command === 'close') { + return diskFileSystemProvider.close(arg[0]); + } + if (command === 'read') { + const length = arg[2]; + const data = VSBuffer.alloc(length); + const read = await diskFileSystemProvider.read(arg[0], arg[1], data.buffer, 0, length); + return [read, data.slice(0, read)]; + } + if (command === 'readFile') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + const data = await diskFileSystemProvider.readFile(URI.revive(uriTranformer.transformIncoming(arg[0]))); + return VSBuffer.wrap(data); + } + if (command === 'write') { + const data = arg[2] as VSBuffer; + await diskFileSystemProvider.write(arg[0], arg[1], data.buffer, arg[3], arg[4]); + return; + } + if (command === 'writeFile') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + const data = arg[1] as VSBuffer; + await diskFileSystemProvider.writeFile(URI.revive(uriTranformer.transformIncoming(arg[0])), data.buffer, arg[2]); + return; + } + if (command === 'delete') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + await diskFileSystemProvider.delete(URI.revive(uriTranformer.transformIncoming(arg[0])), arg[1]); + return; + } + if (command === 'mkdir') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + await diskFileSystemProvider.mkdir(URI.revive(uriTranformer.transformIncoming(arg[0]))); + return; + } + if (command === 'readdir') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + return diskFileSystemProvider.readdir(URI.revive(uriTranformer.transformIncoming(arg[0]))); + } + if (command === 'rename') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + return diskFileSystemProvider.rename( + URI.revive(uriTranformer.transformIncoming(arg[0])), + URI.revive(uriTranformer.transformIncoming(arg[1])), + arg[2] + ); + } + if (command === 'copy') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + return diskFileSystemProvider.copy( + URI.revive(uriTranformer.transformIncoming(arg[0])), + URI.revive(uriTranformer.transformIncoming(arg[1])), + arg[2] + ); + } + if (command === 'watch') { + const watcher = this.watchers.get(arg[0])?.watcher; + if (watcher) { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + const unwatch = watcher.watch(URI.revive(uriTranformer.transformIncoming(arg[2])), arg[3]); + this.watchHandles.set( + arg[0] + ':' + arg[1], + unwatch + ); + } else { + logService.error(`'filechange' event should be called before 'watch' first request`); + } + return; + } + if (command === 'unwatch') { + this.watchHandles.get(arg[0] + ':' + arg[1])?.dispose(); + this.watchHandles.delete(arg[0] + ':' + arg[1]); + return; + } + logService.error('Unknown command: RemoteFileSystem.' + command); + throw new Error('Unknown command: RemoteFileSystem.' + command); + } + protected obtainFileChangeEmitter(ctx: RemoteAgentConnectionContext, session: string): Emitter { + let existing = this.watchers.get(session); + if (existing) { + return existing.emitter; + } + const watcher = new DiskFileSystemProvider(logService); + const emitter = new Emitter({ + onLastListenerRemove: () => { + this.watchers.delete(session); + emitter.dispose(); + watcher.dispose(); + logService.info(`[session:${session}] closed watching fs`); + } + }); + logService.info(`[session:${session}] started watching fs`); + this.watchers.set(session, { watcher, emitter }); + + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + watcher.onDidChangeFile(changes => emitter.fire( + changes.map(change => ({ + resource: uriTranformer.transformOutgoingURI(change.resource), + type: change.type + } as IFileChangeDto)) + )); + watcher.onDidErrorOccur(error => emitter.fire(error)); + return emitter; + } + listen(ctx: RemoteAgentConnectionContext, event: string, arg?: any): Event { + if (event === 'filechange') { + return this.obtainFileChangeEmitter(ctx, arg[0]).event; + } + if (event === 'readFileStream') { + const uriTranformer = new URITransformer(rawURITransformerFactory(ctx.remoteAuthority)); + const resource = URI.revive(transformIncomingURIs(arg[0], uriTranformer)); + const emitter = new Emitter>({ + onLastListenerRemove: () => { + cancellationTokenSource.cancel(); + } + }); + const cancellationTokenSource = new CancellationTokenSource(); + const stream = diskFileSystemProvider.readFileStream(resource, arg[1], cancellationTokenSource.token); + stream.on('data', data => emitter.fire(VSBuffer.wrap(data))); + stream.on('error', error => emitter.fire(error)); + stream.on('end', () => { + emitter.fire('end'); + emitter.dispose(); + cancellationTokenSource.dispose(); + }); + return emitter.event; + } + logService.error('Unknown event: RemoteFileSystem.' + event); + throw new Error('Unknown event: RemoteFileSystem.' + event); + } + } + channelServer.registerChannel(REMOTE_FILE_SYSTEM_CHANNEL_NAME, new RemoteFileSystem()); + + // Init services + const services = new ServiceCollection(); + services.set(IRawURITransformerFactory, rawURITransformerFactory); + + services.set(IEnvironmentService, environmentService); + services.set(INativeEnvironmentService, environmentService); + services.set(ILogService, logService); + services.set(ITelemetryService, NullTelemetryService); + + services.set(IFileService, fileService); + + services.set(IConfigurationService, new SyncDescriptor(ConfigurationService, [environmentService.settingsResource, fileService])); + services.set(IProductService, productService); + services.set(IRequestService, new SyncDescriptor(RequestService)); + services.set(IDownloadService, new SyncDescriptor(DownloadService)); + + services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService)); + services.set(IExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); + + services.set(IRequestService, new SyncDescriptor(RequestService)); + + if (options.configure) { + options.configure(services, channelServer); + } + + let resolveExtensionsInstalled: (value?: unknown) => void; + const extensionsInstalled = new Promise(resolve => resolveExtensionsInstalled = resolve); + + // Startup + const instantiationService = new InstantiationService(services); + instantiationService.invokeFunction(accessor => { + let startResult = undefined; + if (options.start) { + startResult = options.start(accessor, channelServer); + } + if (startResult && startResult.installingInitialExtensions) { + startResult.installingInitialExtensions.then(resolveExtensionsInstalled); + } else { + resolveExtensionsInstalled(); + } + + const extensionManagementService = accessor.get(IExtensionManagementService); + channelServer.registerChannel('extensions', new ExtensionManagementChannel(extensionManagementService, requestContext => new URITransformer(rawURITransformerFactory(requestContext)))); + (extensionManagementService as ExtensionManagementService).removeDeprecatedExtensions(); + + const requestService = accessor.get(IRequestService); + channelServer.registerChannel('request', new RequestChannel(requestService)); + + // Delay creation of spdlog for perf reasons (https://github.com/microsoft/vscode/issues/72906) + bufferLogService.logger = new SpdLogLogger('main', join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), true, bufferLogService.getLevel()); + + const clients = new Map(); + + const server = http.createServer(async (req, res) => { + if (!req.url) { + return serveError(req, res, 400, 'Bad Request.'); + } + try { + const parsedUrl = url.parse(req.url, true); + const pathname = parsedUrl.pathname; + + if (options.handleRequest && await instantiationService.invokeFunction(accessor => options.handleRequest!(pathname, req, res, accessor, channelServer))) { + return; + } + + //#region headless + if (pathname === '/vscode-remote-resource') { + const filePath = parsedUrl.query['path']; + const fsPath = typeof filePath === 'string' && URI.from({ scheme: 'file', path: filePath }).fsPath; + if (!fsPath) { + return serveError(req, res, 400, 'Bad Request.'); + } + return serveFile(logService, req, res, fsPath); + } + //#region headless end + + //#region static + if (pathname === '/') { + return serveFile(logService, req, res, devMode ? options.mainDev || WEB_MAIN_DEV : options.main || WEB_MAIN); + } + if (pathname === '/manifest.json') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + return res.end(JSON.stringify({ + 'name': product.nameLong, + 'short_name': product.nameShort, + 'start_url': '/', + 'lang': 'en-US', + 'display': 'standalone' + })); + } + if (pathname) { + let relativeFilePath; + if (/^\/static\//.test(pathname)) { + relativeFilePath = path.normalize(decodeURIComponent(pathname.substr('/static/'.length))); + } else { + relativeFilePath = path.normalize(decodeURIComponent(pathname)); + } + return serveFile(logService, req, res, path.join(APP_ROOT, relativeFilePath)); + } + //#region static end + + // TODO uri callbacks ? + logService.error(`${req.method} ${req.url} not found`); + return serveError(req, res, 404, 'Not found.'); + } catch (error) { + logService.error(error); + + return serveError(req, res, 500, 'Internal Server Error.'); + } + }); + server.on('error', e => logService.error(e)); + server.on('upgrade', (req: http.IncomingMessage, socket: net.Socket) => { + if (req.headers['upgrade'] !== 'websocket' || !req.url) { + logService.error(`failed to upgrade for header "${req.headers['upgrade']}" and url: "${req.url}".`); + socket.end('HTTP/1.1 400 Bad Request'); + return; + } + const { query } = url.parse(req.url, true); + // /?reconnectionToken=c0e3a8af-6838-44fb-851b-675401030831&reconnection=false&skipWebSocketFrames=false + const reconnection = 'reconnection' in query && query['reconnection'] === 'true'; + let token: string | undefined; + if ('reconnectionToken' in query && typeof query['reconnectionToken'] === 'string') { + token = query['reconnectionToken']; + } + // TODO skipWebSocketFrames (support of VS Code desktop?) + if (!token) { + logService.error(`missing token for "${req.url}".`); + socket.end('HTTP/1.1 400 Bad Request'); + return; + } + logService.info(`[${token}] Socket upgraded for "${req.url}".`); + socket.on('error', e => { + logService.error(`[${token}] Socket failed for "${req.url}".`, e); + }); + + const acceptKey = req.headers['sec-websocket-key']; + const hash = crypto.createHash('sha1').update(acceptKey + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11').digest('base64'); + const responseHeaders = ['HTTP/1.1 101 Web Socket Protocol Handshake', 'Upgrade: WebSocket', 'Connection: Upgrade', `Sec-WebSocket-Accept: ${hash}`]; + + let permessageDeflate = false; + if (String(req.headers['sec-websocket-extensions']).indexOf('permessage-deflate') !== -1) { + permessageDeflate = true; + responseHeaders.push('Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15'); + } + + socket.write(responseHeaders.join('\r\n') + '\r\n\r\n'); + + const client = clients.get(token) || {}; + clients.set(token, client); + + const webSocket = new WebSocketNodeSocket(new NodeSocket(socket), permessageDeflate, null, permessageDeflate); + const protocol = new PersistentProtocol(webSocket); + const controlListener = protocol.onControlMessage(async raw => { + const msg = JSON.parse(raw.toString()); + if (msg.type === 'error') { + logService.error(`[${token}] error control message:`, msg.reason); + safeDisposeProtocolAndSocket(protocol); + } else if (msg.type === 'auth') { + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ + type: 'sign', + data: productService.nameShort + ' Server' + } as SignRequest))); + } else if (msg.type === 'connectionType') { + controlListener.dispose(); + // TODO version matching msg.commit + // TODO auth check msg.signedData + for (const [token, client] of clients) { + if (client.management) { + if (client.management.graceTimeReconnection.isScheduled() && !client.management.shortGraceTimeReconnection.isScheduled()) { + logService.info(`[${token}] Another connection is established, closing this connection after ${ProtocolConstants.ReconnectionShortGraceTime}ms reconnection timeout.`); + client.management.shortGraceTimeReconnection.schedule(); + } + } + if (client.extensionHost) { + client.extensionHost.send({ + type: 'VSCODE_EXTHOST_IPC_REDUCE_GRACE_TIME' + }); + } + } + if (msg.desiredConnectionType === ConnectionType.Management) { + if (!reconnection) { + if (client.management) { + logService.error(`[${token}] Falied to connect: management connection is already running.`); + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'error', reason: 'Management connection is already running.' } as ErrorMessage))); + safeDisposeProtocolAndSocket(protocol); + return; + } + + const onDidClientDisconnectEmitter = new Emitter(); + let disposed = false; + function dispose(): void { + if (disposed) { + return; + } + disposed = true; + graceTimeReconnection.dispose(); + shortGraceTimeReconnection.dispose(); + client.management = undefined; + protocol.sendDisconnect(); + const socket = protocol.getSocket(); + protocol.dispose(); + socket.end(); + onDidClientDisconnectEmitter.fire(undefined); + onDidClientDisconnectEmitter.dispose(); + logService.info(`[${token}] Management connection is disposed.`); + } + + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'ok' } as OKMessage))); + const graceTimeReconnection = new RunOnceScheduler(() => { + logService.info(`[${token}] Management connection expired after ${ProtocolConstants.ReconnectionGraceTime}ms (grace).`); + dispose(); + }, ProtocolConstants.ReconnectionGraceTime); + const shortGraceTimeReconnection = new RunOnceScheduler(() => { + logService.info(`[${token}] Management connection expired after ${ProtocolConstants.ReconnectionShortGraceTime}ms (short grace).`); + dispose(); + }, ProtocolConstants.ReconnectionShortGraceTime); + client.management = { protocol, graceTimeReconnection, shortGraceTimeReconnection }; + protocol.onDidDispose(() => dispose()); + protocol.onSocketClose(() => { + logService.info(`[${token}] Management connection socket is closed, waiting to reconnect within ${ProtocolConstants.ReconnectionGraceTime}ms.`); + graceTimeReconnection.schedule(); + }); + onDidClientConnectEmitter.fire({ protocol, onDidClientDisconnect: onDidClientDisconnectEmitter.event }); + logService.info(`[${token}] Management connection is connected.`); + } else { + if (!client.management) { + logService.error(`[${token}] Failed to reconnect: management connection is not running.`); + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'error', reason: 'Management connection is not running.' } as ErrorMessage))); + safeDisposeProtocolAndSocket(protocol); + return; + } + + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'ok' } as OKMessage))); + client.management.graceTimeReconnection.cancel(); + client.management.shortGraceTimeReconnection.cancel(); + client.management.protocol.beginAcceptReconnection(protocol.getSocket(), protocol.readEntireBuffer()); + client.management.protocol.endAcceptReconnection(); + protocol.dispose(); + logService.info(`[${token}] Management connection is reconnected.`); + } + } else if (msg.desiredConnectionType === ConnectionType.ExtensionHost) { + const params: IRemoteExtensionHostStartParams = { + language: 'en', + ...msg.args + // TODO what if params.port is 0? + }; + + if (!reconnection) { + if (client.extensionHost) { + logService.error(`[${token}] Falied to connect: extension host is already running.`); + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'error', reason: 'Extension host is already running.' } as ErrorMessage))); + safeDisposeProtocolAndSocket(protocol); + return; + } + + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ debugPort: params.port } /* Omit */))); + const initialDataChunk = Buffer.from(protocol.readEntireBuffer().buffer).toString('base64'); + protocol.dispose(); + socket.pause(); + await webSocket.drain(); + + try { + // see src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts + const opts: cp.ForkOptions = { + env: { + ...process.env, + VSCODE_AMD_ENTRYPOINT: 'vs/workbench/services/extensions/node/extensionHostProcess', + VSCODE_PIPE_LOGGING: 'true', + VSCODE_VERBOSE_LOGGING: 'true', + VSCODE_LOG_NATIVE: 'false', + VSCODE_EXTHOST_WILL_SEND_SOCKET: 'true', + VSCODE_HANDLES_UNCAUGHT_ERRORS: 'true', + VSCODE_LOG_STACK: 'true', + VSCODE_LOG_LEVEL: environmentService.verbose ? 'trace' : environmentService.logLevel + }, + // see https://github.com/akosyakov/gitpod-code/blob/33b49a273f1f6d44f303426b52eaf89f0f5cc596/src/vs/base/parts/ipc/node/ipc.cp.ts#L72-L78 + execArgv: [], + silent: true + }; + if (typeof params.port === 'number') { + if (params.port !== 0) { + opts.execArgv = [ + '--nolazy', + (params.break ? '--inspect-brk=' : '--inspect=') + params.port + ]; + } else { + // TODO we should return a dynamically allocated port to the client, + // it is better to avoid it? + opts.execArgv = ['--inspect-port=0']; + } + } + if (options.configureExtensionHostForkOptions) { + instantiationService.invokeFunction(accessor => options.configureExtensionHostForkOptions!(opts, accessor, channelServer)); + } + const extensionHost = cp.fork(FileAccess.asFileUri('bootstrap-fork', require).fsPath, ['--type=extensionHost', '--uriTransformerPath=' + uriTransformerPath], opts); + extensionHost.stdout!.setEncoding('utf8'); + extensionHost.stderr!.setEncoding('utf8'); + Event.fromNodeEventEmitter(extensionHost.stdout!, 'data')(msg => logService.info(`[${token}][extension host][${extensionHost.pid}][stdout] ${msg}`)); + Event.fromNodeEventEmitter(extensionHost.stderr!, 'data')(msg => logService.info(`[${token}][extension host][${extensionHost.pid}][stderr] ${msg}`)); + extensionHost.on('message', msg => { + if (msg && (msg).type === '__$console') { + logService.info(`[${token}][extension host][${extensionHost.pid}][__$console] ${(msg).arguments}`); + } + }); + + let disposed = false; + let toDispose: IDisposable = { dispose: () => { } }; + function dispose(): void { + if (disposed) { + return; + } + disposed = true; + toDispose.dispose(); + socket.end(); + extensionHost.kill(); + client.extensionHost = undefined; + logService.info(`[${token}] Extension host is disconnected.`); + } + + extensionHost.on('error', err => { + dispose(); + logService.error(`[${token}] Extension host failed with: `, err); + }); + extensionHost.on('exit', (code: number, signal: string) => { + dispose(); + if (code !== 0 && signal !== 'SIGTERM') { + logService.error(`[${token}] Extension host exited with code: ${code} and signal: ${signal}.`); + } + }); + + const readyListener = (msg: any) => { + if (msg && (msg).type === 'VSCODE_EXTHOST_IPC_READY') { + extensionHost.removeListener('message', readyListener); + const inflateBytes = Buffer.from(webSocket.recordedInflateBytes.buffer).toString('base64'); + extensionHost.send({ + type: 'VSCODE_EXTHOST_IPC_SOCKET', + initialDataChunk, + skipWebSocketFrames: false, // TODO skipWebSocketFrames - i.e. when we connect from Node (VS Code?) + permessageDeflate, + inflateBytes + } as IExtHostSocketMessage, socket); + logService.info(`[${token}] Extension host is connected.`); + } + }; + extensionHost.on('message', readyListener); + + if (options.configureExtensionHostProcess) { + toDispose = instantiationService.invokeFunction(accessor => options.configureExtensionHostProcess!(extensionHost, accessor, channelServer)); + } + client.extensionHost = extensionHost; + logService.info(`[${token}] Extension host is started.`); + } catch (e) { + logService.error(`[${token}] Failed to start the extension host process: `, e); + } + } else { + if (!client.extensionHost) { + logService.error(`[${token}] Failed to reconnect: extension host is not running.`); + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'error', reason: 'Extension host is not running.' } as ErrorMessage))); + safeDisposeProtocolAndSocket(protocol); + return; + } + + protocol.sendControl(VSBuffer.fromString(JSON.stringify({ debugPort: params.port } /* Omit */))); + const initialDataChunk = Buffer.from(protocol.readEntireBuffer().buffer).toString('base64'); + protocol.dispose(); + socket.pause(); + await webSocket.drain(); + + const inflateBytes = Buffer.from(webSocket.recordedInflateBytes.buffer).toString('base64'); + client.extensionHost.send({ + type: 'VSCODE_EXTHOST_IPC_SOCKET', + initialDataChunk, + skipWebSocketFrames: false, // TODO skipWebSocketFrames - i.e. when we connect from Node (VS Code?) + permessageDeflate, + inflateBytes + } as IExtHostSocketMessage, socket); + logService.info(`[${token}] Extension host is reconnected.`); + } + } else { + logService.error(`[${token}] Unexpected connection type:`, msg.desiredConnectionType); + safeDisposeProtocolAndSocket(protocol); + } + } else { + logService.error(`[${token}] Unexpected control message:`, msg.type); + safeDisposeProtocolAndSocket(protocol); + } + }); + }); + let port = 3000; + if (parsedArgs.port) { + port = Number(parsedArgs.port); + } else if (typeof options.port === 'number') { + port = options.port; + } + server.listen(port, '0.0.0.0', () => { + const { address, port } = server.address() as net.AddressInfo; + logService.info(`Web UI available at https://${address}:${port}`); + }); + }); +} diff --git a/src/vs/server/node/server.ts b/src/vs/server/node/server.ts new file mode 100644 index 0000000000000..a8e815c929c0f --- /dev/null +++ b/src/vs/server/node/server.ts @@ -0,0 +1,7 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import { main } from 'vs/server/node/server.main'; + +main({}); diff --git a/yarn.lock b/yarn.lock index 12a1954d5b928..cbaf5765c162a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1471,7 +1471,6 @@ asar@^3.0.3: asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -6978,11 +6977,16 @@ node-abi@^2.21.0: dependencies: semver "^5.4.1" -node-addon-api@*, node-addon-api@^3.0.0, node-addon-api@^3.0.2: +node-addon-api@*, node-addon-api@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== +node-addon-api@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" + integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg== + node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -8166,7 +8170,7 @@ pretty-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -8176,6 +8180,11 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" From d3f9bdc1722956ba84ae592e79823ef39a9e4460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Sp=C3=B6nemann?= Date: Tue, 10 Aug 2021 13:10:45 +0000 Subject: [PATCH 13/28] Added remote terminal channel handler --- build/gulpfile.server.js | 3 +- src/vs/server/browser/workbench/workbench.ts | 10 +- src/vs/server/node/remote-terminal.ts | 246 +++++++++++++++++++ src/vs/server/node/server.ts | 7 +- 4 files changed, 262 insertions(+), 4 deletions(-) create mode 100644 src/vs/server/node/remote-terminal.ts diff --git a/build/gulpfile.server.js b/build/gulpfile.server.js index 40def428c7270..b81ba3a90d356 100644 --- a/build/gulpfile.server.js +++ b/build/gulpfile.server.js @@ -102,7 +102,8 @@ function defineTasks(options) { buildfile.entrypoint(`vs/${qualifier}/node/server`), buildfile.entrypoint('vs/workbench/services/extensions/node/extensionHostProcess'), buildfile.entrypoint('vs/platform/files/node/watcher/unix/watcherApp'), - buildfile.entrypoint('vs/platform/files/node/watcher/nsfw/watcherApp') + buildfile.entrypoint('vs/platform/files/node/watcher/nsfw/watcherApp'), + buildfile.entrypoint('vs/platform/terminal/node/ptyHostMain') ]); const outWeb = `out-${qualifier}-web`; diff --git a/src/vs/server/browser/workbench/workbench.ts b/src/vs/server/browser/workbench/workbench.ts index 604c6968320d9..87666c38cfb60 100644 --- a/src/vs/server/browser/workbench/workbench.ts +++ b/src/vs/server/browser/workbench/workbench.ts @@ -1,6 +1,5 @@ /*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. + * Copyright (c) Gitpod. All rights reserved. *--------------------------------------------------------------------------------------------*/ import { isStandalone } from 'vs/base/browser/browser'; @@ -374,8 +373,15 @@ class WindowIndicator implements IWindowIndicator { const webviewEndpoint = new URL(window.location.href); webviewEndpoint.pathname = '/out/vs/workbench/contrib/webview/browser/pre/'; webviewEndpoint.search = ''; + + // TODO(ak) secure by using external endpoint + const webWorkerExtensionEndpoint = new URL(window.location.href); + webWorkerExtensionEndpoint.pathname = `/out/vs/workbench/services/extensions/worker/${window.location.protocol === 'https:' ? 'https' : 'http'}WebWorkerExtensionHostIframe.html`; + webWorkerExtensionEndpoint.search = ''; + create(document.body, { webviewEndpoint: webviewEndpoint.href, + webWorkerExtensionHostIframeSrc: webWorkerExtensionEndpoint.href, remoteAuthority, webSocketFactory: { create: url => { diff --git a/src/vs/server/node/remote-terminal.ts b/src/vs/server/node/remote-terminal.ts new file mode 100644 index 0000000000000..24a500cedfc45 --- /dev/null +++ b/src/vs/server/node/remote-terminal.ts @@ -0,0 +1,246 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import * as os from 'os'; +import * as path from 'path'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { URI } from 'vs/base/common/uri'; +import { Event } from 'vs/base/common/event'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { ILogService } from 'vs/platform/log/common/log'; +import product from 'vs/platform/product/common/product'; +import { RemoteAgentConnectionContext } from 'vs/platform/remote/common/remoteAgentEnvironment'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { IShellLaunchConfig, LocalReconnectConstants } from 'vs/platform/terminal/common/terminal'; +import { PtyHostService } from 'vs/platform/terminal/node/ptyHostService'; +import { ICreateTerminalProcessArguments, ICreateTerminalProcessResult, REMOTE_TERMINAL_CHANNEL_NAME } from 'vs/workbench/contrib/terminal/common/remoteTerminalChannel'; +import * as platform from 'vs/base/common/platform'; +import { IWorkspaceFolderData } from 'vs/platform/terminal/common/terminalProcess'; +import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; +import { createTerminalEnvironment, createVariableResolver, getCwd, getDefaultShell, getDefaultShellArgs } from 'vs/workbench/contrib/terminal/common/terminalEnvironment'; +import { deserializeEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariableShared'; +import { MergedEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariableCollection'; +import { IEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable'; +import { getSystemShellSync } from 'vs/base/node/shell'; +import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { IPCServer } from 'vs/base/parts/ipc/common/ipc'; +import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; +import { TernarySearchTree } from 'vs/base/common/map'; + +export function registerRemoteTerminal(services: ServicesAccessor, channelServer: IPCServer) { + const reconnectConstants = { + GraceTime: LocalReconnectConstants.GraceTime, + ShortGraceTime: LocalReconnectConstants.ShortGraceTime + }; + const configurationService = services.get(IConfigurationService); + const logService = services.get(ILogService); + const telemetryService = services.get(ITelemetryService); + const ptyHostService = new PtyHostService(reconnectConstants, configurationService, logService, telemetryService); + const resolvedServices: Services = { logService, ptyHostService }; + channelServer.registerChannel(REMOTE_TERMINAL_CHANNEL_NAME, { + + call: async (ctx: RemoteAgentConnectionContext, command: string, arg?: any, cancellationToken?: CancellationToken) => { + if (command === '$createProcess') { + return createProcess(arg, resolvedServices); + } + + // Generic method handling for all other commands + const serviceRecord = ptyHostService as unknown as Record Promise>; + const serviceFunc = serviceRecord[command.substring(1)]; + if (!serviceFunc) { + logService.error('Unknown command: ' + command); + return undefined; + } + if (Array.isArray(arg)) { + return serviceFunc.call(ptyHostService, ...arg); + } else { + return serviceFunc.call(ptyHostService, arg); + } + }, + + listen: (ctx: RemoteAgentConnectionContext, event: string) => { + if (event === '$onExecuteCommand') { + return Event.None; + } + const serviceRecord = ptyHostService as unknown as Record>; + const result = serviceRecord[event.substring(1, event.endsWith('Event') ? event.length - 'Event'.length : undefined)]; + if (!result) { + logService.error('Unknown event: ' + event); + return Event.None; + } + return result; + } + + }); +} + +interface Services { + ptyHostService: PtyHostService, logService: ILogService +} + +async function createProcess(args: ICreateTerminalProcessArguments, services: Services): Promise { + const shellLaunchConfigDto = args.shellLaunchConfig; + // See $spawnExtHostProcess in src/vs/workbench/api/node/extHostTerminalService.ts for a reference implementation + const shellLaunchConfig: IShellLaunchConfig = { + name: shellLaunchConfigDto.name, + executable: shellLaunchConfigDto.executable, + args: shellLaunchConfigDto.args, + cwd: typeof shellLaunchConfigDto.cwd === 'string' ? shellLaunchConfigDto.cwd : URI.revive(shellLaunchConfigDto.cwd), + env: shellLaunchConfigDto.env + }; + + let lastActiveWorkspace: IWorkspaceFolder | undefined; + if (args.activeWorkspaceFolder) { + lastActiveWorkspace = toWorkspaceFolder(args.activeWorkspaceFolder); + } + + const processEnv = { ...process.env, ...args.resolverEnv } as platform.IProcessEnvironment; + const configurationResolverService = new RemoteTerminalVariableResolverService( + args.workspaceFolders.map(toWorkspaceFolder), + args.resolvedVariables, + args.activeFileResource ? URI.revive(args.activeFileResource) : undefined, + processEnv + ); + const variableResolver = createVariableResolver(lastActiveWorkspace, processEnv, configurationResolverService); + + // Merge in shell and args from settings + if (!shellLaunchConfig.executable) { + shellLaunchConfig.executable = getDefaultShell( + key => args.configuration[key], + getSystemShellSync(platform.OS, process.env as platform.IProcessEnvironment), + process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'), + process.env.windir, + variableResolver, + services.logService, + false + ); + shellLaunchConfig.args = getDefaultShellArgs( + key => args.configuration[key], + false, + variableResolver, + services.logService + ); + } else if (variableResolver) { + shellLaunchConfig.executable = variableResolver(shellLaunchConfig.executable); + if (shellLaunchConfig.args) { + if (Array.isArray(shellLaunchConfig.args)) { + const resolvedArgs: string[] = []; + for (const arg of shellLaunchConfig.args) { + resolvedArgs.push(variableResolver(arg)); + } + shellLaunchConfig.args = resolvedArgs; + } else { + shellLaunchConfig.args = variableResolver(shellLaunchConfig.args); + } + } + } + + // Get the initial cwd + const initialCwd = getCwd( + shellLaunchConfig, + os.homedir(), + variableResolver, + lastActiveWorkspace?.uri, + args.configuration['terminal.integrated.cwd'], services.logService + ); + shellLaunchConfig.cwd = initialCwd; + + const env = createTerminalEnvironment( + shellLaunchConfig, + args.configuration['terminal.integrated.env.linux'], + variableResolver, + product.version, + args.configuration['terminal.integrated.detectLocale'] || 'auto', + processEnv + ); + + // Apply extension environment variable collections to the environment + if (!shellLaunchConfig.strictEnv) { + const collection = new Map(); + for (const [name, serialized] of args.envVariableCollections) { + collection.set(name, { + map: deserializeEnvironmentVariableCollection(serialized) + }); + } + const mergedCollection = new MergedEnvironmentVariableCollection(collection); + mergedCollection.applyToProcessEnvironment(env, variableResolver); + } + + const persistentTerminalId = await services.ptyHostService.createProcess(shellLaunchConfig, initialCwd, args.cols, args.rows, + env, processEnv, false, args.shouldPersistTerminal, args.workspaceId, args.workspaceName); + return { + persistentTerminalId, + resolvedShellLaunchConfig: shellLaunchConfig + }; +} + +function toWorkspaceFolder(data: IWorkspaceFolderData): IWorkspaceFolder { + return { + uri: URI.revive(data.uri), + name: data.name, + index: data.index, + toResource: () => { + throw new Error('Not implemented'); + } + }; +} + +/** + * See ExtHostVariableResolverService in src/vs/workbench/api/common/extHostDebugService.ts for a reference implementation. + */ +class RemoteTerminalVariableResolverService extends AbstractVariableResolverService { + + private readonly structure = TernarySearchTree.forUris(() => false); + + constructor(folders: IWorkspaceFolder[], resolvedVariables: { [name: string]: string }, activeFileResource: URI | undefined, env: platform.IProcessEnvironment) { + super({ + getFolderUri: (folderName: string): URI | undefined => { + const found = folders.filter(f => f.name === folderName); + if (found && found.length > 0) { + return found[0].uri; + } + return undefined; + }, + getWorkspaceFolderCount: (): number => { + return folders.length; + }, + getConfigurationValue: (folderUri: URI | undefined, section: string): string | undefined => { + return resolvedVariables['config:' + section]; + }, + getAppRoot: (): string | undefined => { + return env['VSCODE_CWD'] || process.cwd(); + }, + getExecPath: (): string | undefined => { + return env['VSCODE_EXEC_PATH']; + }, + getFilePath: (): string | undefined => { + if (activeFileResource) { + return path.normalize(activeFileResource.fsPath); + } + return undefined; + }, + getWorkspaceFolderPathForFile: (): string | undefined => { + if (activeFileResource) { + const ws = this.structure.findSubstr(activeFileResource); + if (ws) { + return path.normalize(ws.uri.fsPath); + } + } + return undefined; + }, + getSelectedText: (): string | undefined => { + return resolvedVariables.selectedText; + }, + getLineNumber: (): string | undefined => { + return resolvedVariables.lineNumber; + } + }, undefined, Promise.resolve(env)); + + // Set up the workspace folder data structure + folders.forEach(folder => { + this.structure.set(folder.uri, folder); + }); + } + +} diff --git a/src/vs/server/node/server.ts b/src/vs/server/node/server.ts index a8e815c929c0f..d90dff3778e00 100644 --- a/src/vs/server/node/server.ts +++ b/src/vs/server/node/server.ts @@ -2,6 +2,11 @@ * Copyright (c) Gitpod. All rights reserved. *--------------------------------------------------------------------------------------------*/ +import { registerRemoteTerminal } from 'vs/server/node/remote-terminal'; import { main } from 'vs/server/node/server.main'; -main({}); +main({ + start: (services, channelServer) => { + registerRemoteTerminal(services, channelServer); + } +}); From 5c9fe49788f8870a630b75493584f5c9e7deb15e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Tron=C3=AD=C4=8Dek?= Date: Mon, 30 Aug 2021 20:38:56 +0200 Subject: [PATCH 14/28] Add startup scripts --- resources/server/startup.cmd | 1 + resources/server/startup.sh | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 resources/server/startup.cmd create mode 100644 resources/server/startup.sh diff --git a/resources/server/startup.cmd b/resources/server/startup.cmd new file mode 100644 index 0000000000000..340f3b06f2ef3 --- /dev/null +++ b/resources/server/startup.cmd @@ -0,0 +1 @@ +.\node\node.exe .\server-pkg\out\server.js \ No newline at end of file diff --git a/resources/server/startup.sh b/resources/server/startup.sh new file mode 100644 index 0000000000000..42275a4c214ad --- /dev/null +++ b/resources/server/startup.sh @@ -0,0 +1,2 @@ +#!/bin/bash +exec ./node/bin/node ./server-pkg/out/server.js "$@" \ No newline at end of file From 0791930b0cfca2a662d88022152a7376c0bfdfb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Tron=C3=AD=C4=8Dek?= Date: Thu, 2 Sep 2021 18:25:28 +0200 Subject: [PATCH 15/28] Use absolute paths in the startup script Use Node and entry point from their respective absolute paths in the file system --- resources/server/startup.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/resources/server/startup.sh b/resources/server/startup.sh index 42275a4c214ad..94cd002ed70d3 100644 --- a/resources/server/startup.sh +++ b/resources/server/startup.sh @@ -1,2 +1,10 @@ #!/bin/bash -exec ./node/bin/node ./server-pkg/out/server.js "$@" \ No newline at end of file + +if [[ "$OSTYPE" == "darwin"* ]]; then + realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } + ROOT=$(dirname "$(realpath "$0")") +else + ROOT=$(dirname "$(readlink -f $0)") +fi + +exec $ROOT/node/bin/node $ROOT/server-pkg/out/server.js "$@" From 676c1c3906ea97ee9ab56c0354a8cc96ed2042b9 Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Thu, 2 Sep 2021 06:48:04 +0000 Subject: [PATCH 16/28] initial draft of readme for web-server branch --- README.md | 78 ++++++++++++------------------------------------------- 1 file changed, 16 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 1883fe4b76bf7..26d35ed99cf67 100644 --- a/README.md +++ b/README.md @@ -1,75 +1,29 @@ -# Visual Studio Code - Open Source ("Code - OSS") -[![Feature Requests](https://img.shields.io/github/issues/microsoft/vscode/feature-request.svg)](https://github.com/microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc) -[![Bugs](https://img.shields.io/github/issues/microsoft/vscode/bug.svg)](https://github.com/microsoft/vscode/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Abug) -[![Gitter](https://img.shields.io/badge/chat-on%20gitter-yellow.svg)](https://gitter.im/Microsoft/vscode) +# VS Code Web Server -## The Repository +[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod)](https://gitpod.io/from-referrer/) -This repository ("`Code - OSS`") is where we (Microsoft) develop the [Visual Studio Code](https://code.visualstudio.com) product together with the community. Not only do we work on code and issues here, we also publish our [roadmap](https://github.com/microsoft/vscode/wiki/Roadmap), [monthly iteration plans](https://github.com/microsoft/vscode/wiki/Iteration-Plans), and our [endgame plans](https://github.com/microsoft/vscode/wiki/Running-the-Endgame). This source code is available to everyone under the standard [MIT license](https://github.com/microsoft/vscode/blob/main/LICENSE.txt). +## What is this? -## Visual Studio Code +This project provides a version of VS Code that runs a server on a remote machine and allows through a modern web browsers. It's based on the very same architecture used by [Gitpod](https://www.gitpod.io) or [GitHub Codespaces](https://github.com). -

- VS Code in action -

+Screenshot 2021-09-02 at 08 39 26 -[Visual Studio Code](https://code.visualstudio.com) is a distribution of the `Code - OSS` repository with Microsoft specific customizations released under a traditional [Microsoft product license](https://code.visualstudio.com/License/). +## Why? -[Visual Studio Code](https://code.visualstudio.com) combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive code editing, navigation, and understanding support along with lightweight debugging, a rich extensibility model, and lightweight integration with existing tools. +VS Code has traditionally been a desktop IDE built with web-technology. A few years back people started patching it, in order to run it in a remote context and to make it accessible through web browsers. [These efforts have been a complex and error prone](https://github.com/cdr/code-server/issues/3835), because many changes had to be made across the large code base of VS Code. -Visual Studio Code is updated monthly with new features and bug fixes. You can download it for Windows, macOS, and Linux on [Visual Studio Code's website](https://code.visualstudio.com/Download). To get the latest releases every day, install the [Insiders build](https://code.visualstudio.com/insiders). +Luckily in 2019 the Vs Code team started to refactor its architecture to support this working mode. While this new architecture has been adopted by Gitpod and GitHub, the important bits have not been open-sources, yet. As a result many people in the community are still using the old hard to maintain and errorprone approach. -## Contributing +At Gitpod we've been asked a lot about how we do it. So we thought we might just share the minimal set of changes needed, so people can rely on the latest version of VS Code and have a straight forward upgrade path and low maintenance effort. -There are many ways in which you can participate in this project, for example: +## Getting started -* [Submit bugs and feature requests](https://github.com/microsoft/vscode/issues), and help us verify as they are checked in -* Review [source code changes](https://github.com/microsoft/vscode/pulls) -* Review the [documentation](https://github.com/microsoft/vscode-docs) and make pull requests for anything from typos to additional and new content +The easiest way to get started is ... -If you are interested in fixing issues and contributing directly to the code base, -please see the document [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute), which covers the following: +## The scope of this project -* [How to build and run from source](https://github.com/microsoft/vscode/wiki/How-to-Contribute) -* [The development workflow, including debugging and running tests](https://github.com/microsoft/vscode/wiki/How-to-Contribute#debugging) -* [Coding guidelines](https://github.com/microsoft/vscode/wiki/Coding-Guidelines) -* [Submitting pull requests](https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests) -* [Finding an issue to work on](https://github.com/microsoft/vscode/wiki/How-to-Contribute#where-to-contribute) -* [Contributing to translations](https://aka.ms/vscodeloc) +This project really only adds the minimal bits required to run VS Code in a web server scenario. We have no intention of changing VS Code in any way or adding additional features through this. Feature request, bug fixes, etc. should go to the upstream repository. -## Feedback - -* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/vscode) -* [Request a new feature](CONTRIBUTING.md) -* Upvote [popular feature requests](https://github.com/microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc) -* [File an issue](https://github.com/microsoft/vscode/issues) -* Follow [@code](https://twitter.com/code) and let us know what you think! - -See our [wiki](https://github.com/microsoft/vscode/wiki/Feedback-Channels) for a description of each of these channels and information on some other available community-driven channels. - -## Related Projects - -Many of the core components and extensions to VS Code live in their own repositories on GitHub. For example, the [node debug adapter](https://github.com/microsoft/vscode-node-debug) and the [mono debug adapter](https://github.com/microsoft/vscode-mono-debug) have their own repositories. For a complete list, please visit the [Related Projects](https://github.com/microsoft/vscode/wiki/Related-Projects) page on our [wiki](https://github.com/microsoft/vscode/wiki). - -## Bundled Extensions - -VS Code includes a set of built-in extensions located in the [extensions](extensions) folder, including grammars and snippets for many languages. Extensions that provide rich language support (code completion, Go to Definition) for a language have the suffix `language-features`. For example, the `json` extension provides coloring for `JSON` and the `json-language-features` provides rich language support for `JSON`. - -## Development Container - -This repository includes a Visual Studio Code Remote - Containers / GitHub Codespaces development container. - -- For [Remote - Containers](https://aka.ms/vscode-remote/download/containers), use the **Remote-Containers: Clone Repository in Container Volume...** command which creates a Docker volume for better disk I/O on macOS and Windows. -- For Codespaces, install the [Github Codespaces](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces) extension in VS Code, and use the **Codespaces: Create New Codespace** command. - -Docker / the Codespace should have at least **4 Cores and 6 GB of RAM (8 GB recommended)** to run full build. See the [development container README](.devcontainer/README.md) for more information. - -## Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Licensed under the [MIT](LICENSE.txt) license. +> **For any feature requests, bug reports, or contributions that are not specific to running VS Code in a web server context,** +> +> **please go to [Visual Studio Code - Open Source "OSS"](https://github.com/microsoft/vscode)** From a5a13978044d795f6ccd899c747db0a2ee046dfe Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Fri, 3 Sep 2021 09:18:54 +0200 Subject: [PATCH 17/28] Update README.md Co-authored-by: bigint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26d35ed99cf67..b91ecb90d3b32 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## What is this? -This project provides a version of VS Code that runs a server on a remote machine and allows through a modern web browsers. It's based on the very same architecture used by [Gitpod](https://www.gitpod.io) or [GitHub Codespaces](https://github.com). +This project provides a version of VS Code that runs a server on a remote machine and allows through a modern web browser. It's based on the very same architecture used by [Gitpod](https://www.gitpod.io) or [GitHub Codespaces](https://github.com). Screenshot 2021-09-02 at 08 39 26 From 50aa42f875734a28329436a3302a8a36635edb53 Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Fri, 3 Sep 2021 09:19:15 +0200 Subject: [PATCH 18/28] Update README.md Co-authored-by: bigint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b91ecb90d3b32..401327040a8a5 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This project provides a version of VS Code that runs a server on a remote machin ## Why? -VS Code has traditionally been a desktop IDE built with web-technology. A few years back people started patching it, in order to run it in a remote context and to make it accessible through web browsers. [These efforts have been a complex and error prone](https://github.com/cdr/code-server/issues/3835), because many changes had to be made across the large code base of VS Code. +VS Code has traditionally been a desktop IDE built with web technology. A few years back people started patching it, in order to run it in a remote context and to make it accessible through web browsers. [These efforts have been complex and error prone](https://github.com/cdr/code-server/issues/3835), because many changes had to be made across the large code base of VS Code. Luckily in 2019 the Vs Code team started to refactor its architecture to support this working mode. While this new architecture has been adopted by Gitpod and GitHub, the important bits have not been open-sources, yet. As a result many people in the community are still using the old hard to maintain and errorprone approach. From 5fba428f2f7fd4c7af8e7bc52459264d7bc4db7f Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Fri, 3 Sep 2021 09:19:22 +0200 Subject: [PATCH 19/28] Update README.md Co-authored-by: bigint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 401327040a8a5..a26581b04cacd 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ This project provides a version of VS Code that runs a server on a remote machin VS Code has traditionally been a desktop IDE built with web technology. A few years back people started patching it, in order to run it in a remote context and to make it accessible through web browsers. [These efforts have been complex and error prone](https://github.com/cdr/code-server/issues/3835), because many changes had to be made across the large code base of VS Code. -Luckily in 2019 the Vs Code team started to refactor its architecture to support this working mode. While this new architecture has been adopted by Gitpod and GitHub, the important bits have not been open-sources, yet. As a result many people in the community are still using the old hard to maintain and errorprone approach. +Luckily in 2019 the VS Code team started to refactor its architecture to support this working mode. While this new architecture has been adopted by Gitpod and GitHub, the important bits have not been open-sources, yet. As a result many people in the community are still using the old hard to maintain and error-prone approach. At Gitpod we've been asked a lot about how we do it. So we thought we might just share the minimal set of changes needed, so people can rely on the latest version of VS Code and have a straight forward upgrade path and low maintenance effort. From ede6f56629946d548aaadc6d653aa51a48758dbe Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Fri, 3 Sep 2021 09:19:30 +0200 Subject: [PATCH 20/28] Update README.md Co-authored-by: bigint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a26581b04cacd..3b0c25d6a6305 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ VS Code has traditionally been a desktop IDE built with web technology. A few ye Luckily in 2019 the VS Code team started to refactor its architecture to support this working mode. While this new architecture has been adopted by Gitpod and GitHub, the important bits have not been open-sources, yet. As a result many people in the community are still using the old hard to maintain and error-prone approach. -At Gitpod we've been asked a lot about how we do it. So we thought we might just share the minimal set of changes needed, so people can rely on the latest version of VS Code and have a straight forward upgrade path and low maintenance effort. +At Gitpod we've been asked a lot about how we do it. So we thought we might just share the minimal set of changes needed, so people can rely on the latest version of VS Code and have a straightforward upgrade path and low maintenance effort. ## Getting started From 124c7dd326b3c5665970c6d8319620205e96554f Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Fri, 3 Sep 2021 09:19:35 +0200 Subject: [PATCH 21/28] Update README.md Co-authored-by: bigint --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3b0c25d6a6305..2c15dfddb720c 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The easiest way to get started is ... ## The scope of this project -This project really only adds the minimal bits required to run VS Code in a web server scenario. We have no intention of changing VS Code in any way or adding additional features through this. Feature request, bug fixes, etc. should go to the upstream repository. +This project really only adds the minimal bits required to run VS Code in a web server scenario. We have no intention of changing VS Code in any way or adding additional features through this. Feature requests, bug fixes, etc. should go to the upstream repository. > **For any feature requests, bug reports, or contributions that are not specific to running VS Code in a web server context,** > From fc7b371bc93ff5315c1e5c64c84344ff0e5fac90 Mon Sep 17 00:00:00 2001 From: Anton Kosyakov Date: Fri, 3 Sep 2021 13:28:50 +0000 Subject: [PATCH 22/28] package startup scripts and latest node 14 --- build/gulpfile.server.js | 18 +++++++++++++++++- remote/.yarnrc | 2 +- resources/server/bin/code.cmd | 5 +++++ resources/server/{startup.sh => bin/code.sh} | 4 ++-- resources/server/server.cmd | 6 ++++++ resources/server/server.sh | 11 +++++++++++ resources/server/startup.cmd | 1 - 7 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 resources/server/bin/code.cmd rename resources/server/{startup.sh => bin/code.sh} (72%) create mode 100644 resources/server/server.cmd create mode 100644 resources/server/server.sh delete mode 100644 resources/server/startup.cmd diff --git a/build/gulpfile.server.js b/build/gulpfile.server.js index b81ba3a90d356..23180c25028b1 100644 --- a/build/gulpfile.server.js +++ b/build/gulpfile.server.js @@ -5,6 +5,7 @@ // @ts-check 'use strict'; +const cp = require('child_process'); const gulp = require('gulp'); const path = require('path'); const es = require('event-stream'); @@ -271,12 +272,27 @@ function defineTasks(options) { const packageJsonStream = gulp.src([base + '/package.json'], { base }) .pipe(json({ name, version })); + cp.execSync('yarn gulp node'); + const nodePath = cp.execSync('node ' + path.join(root, 'build/lib/node'), { encoding: 'utf-8' }); + const nodeStream = gulp.src([nodePath], { base: path.dirname(nodePath) }); + + const resourcesBase = path.join(root, 'resources/' + qualifier); + const binStream = gulp.src([path.join(resourcesBase, '**/*.' + (process.platform === 'win32' ? 'cmd' : 'sh'))], { base: resourcesBase }) + .pipe(util.setExecutableBit(['**/*.sh'])) + .pipe(rename(path => { + if (path.basename === 'code' && path.extname === '.sh') { + path.extname = ''; + } + })); + let all = es.merge( packageJsonStream, productJsonStream, // license, sources, - runtimeDependencies + runtimeDependencies, + nodeStream, + binStream ); let result = all diff --git a/remote/.yarnrc b/remote/.yarnrc index bce4202aea7c9..f29826e0b76d4 100644 --- a/remote/.yarnrc +++ b/remote/.yarnrc @@ -1,3 +1,3 @@ disturl "http://nodejs.org/dist" -target "14.16.0" +target "14.17.6" runtime "node" diff --git a/resources/server/bin/code.cmd b/resources/server/bin/code.cmd new file mode 100644 index 0000000000000..fab09533b42ea --- /dev/null +++ b/resources/server/bin/code.cmd @@ -0,0 +1,5 @@ +@echo off +setlocal +set VSCODE_DEV= +"%~dp0\..\node.exe" "%~dp0\..\out\server-cli.js" %* +endlocal diff --git a/resources/server/startup.sh b/resources/server/bin/code.sh similarity index 72% rename from resources/server/startup.sh rename to resources/server/bin/code.sh index 94cd002ed70d3..ded4731f6d4b0 100644 --- a/resources/server/startup.sh +++ b/resources/server/bin/code.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash if [[ "$OSTYPE" == "darwin"* ]]; then realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } @@ -7,4 +7,4 @@ else ROOT=$(dirname "$(readlink -f $0)") fi -exec $ROOT/node/bin/node $ROOT/server-pkg/out/server.js "$@" +exec $ROOT/../node $ROOT/../out/server-cli.js "$@" diff --git a/resources/server/server.cmd b/resources/server/server.cmd new file mode 100644 index 0000000000000..be5203f93c70e --- /dev/null +++ b/resources/server/server.cmd @@ -0,0 +1,6 @@ +@echo off +setlocal +set VSCODE_DEV= +set PATH="%~dp0\bin";%PATH% +"%~dp0\node.exe" "%~dp0\out\server.js" %* +endlocal diff --git a/resources/server/server.sh b/resources/server/server.sh new file mode 100644 index 0000000000000..2574baa98f30e --- /dev/null +++ b/resources/server/server.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +if [[ "$OSTYPE" == "darwin"* ]]; then + realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } + ROOT=$(dirname "$(realpath "$0")") +else + ROOT=$(dirname "$(readlink -f $0)") +fi + +PATH=$ROOT/bin:$PATH +exec $ROOT/node $ROOT/out/server.js "$@" diff --git a/resources/server/startup.cmd b/resources/server/startup.cmd deleted file mode 100644 index 340f3b06f2ef3..0000000000000 --- a/resources/server/startup.cmd +++ /dev/null @@ -1 +0,0 @@ -.\node\node.exe .\server-pkg\out\server.js \ No newline at end of file From 3e45b09592af257c1266e07a3973a7b1334ff1b7 Mon Sep 17 00:00:00 2001 From: Jean Pierre Date: Fri, 27 Aug 2021 05:29:10 +0000 Subject: [PATCH 23/28] Smoke test running --- package.json | 1 + resources/server/web.sh | 10 ++++++ src/vs/server/browser/workbench/workbench.ts | 16 +++++++-- src/vs/server/node/server.main.ts | 37 +++++++++++++++++--- test/automation/src/playwrightDriver.ts | 5 +-- 5 files changed, 59 insertions(+), 10 deletions(-) create mode 100755 resources/server/web.sh diff --git a/package.json b/package.json index 2ed7b5277aa64..acc5836f09ef7 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "update-localization-extension": "node build/npm/update-localization-extension.js", "smoketest": "cd test/smoke && yarn compile && node test/index.js", "smoketest-no-compile": "cd test/smoke && node test/index.js", + "smoketest-gitpod": "cd test/smoke && node test/index.js --web --verbose --test-repo /workspace/vscode-smoketest-express --headless --screenshots /workspace/screenshots --electronArgs=\"--disable-dev-shm-usage --use-gl=swiftshader\"", "download-builtin-extensions": "node build/lib/builtInExtensions.js", "download-builtin-extensions-cg": "node build/lib/builtInExtensionsCG.js", "monaco-compile-check": "tsc -p src/tsconfig.monaco.json --noEmit", diff --git a/resources/server/web.sh b/resources/server/web.sh new file mode 100755 index 0000000000000..04d64887c0e91 --- /dev/null +++ b/resources/server/web.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh +ROOT=$(dirname $(dirname "$(dirname "$0")")) + +# APP_NAME="gitpodcode" +# VERSION="1.59.1" +# COMMIT="3866c3553be8b268c8a7f8c0482c0c0177aa8bfa" +# EXEC_NAME="code" +CLI_SCRIPT="$ROOT/out/server.js" +#"node" "$CLI_SCRIPT" "$APP_NAME" "$VERSION" "$COMMIT" "$EXEC_NAME" "$@" +"node" "$CLI_SCRIPT" "$@" diff --git a/src/vs/server/browser/workbench/workbench.ts b/src/vs/server/browser/workbench/workbench.ts index 87666c38cfb60..9e32231ab299c 100644 --- a/src/vs/server/browser/workbench/workbench.ts +++ b/src/vs/server/browser/workbench/workbench.ts @@ -7,13 +7,13 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { Event } from 'vs/base/common/event'; import { Schemas } from 'vs/base/common/network'; import { isEqual } from 'vs/base/common/resources'; -import { URI } from 'vs/base/common/uri'; +import { URI, UriComponents } from 'vs/base/common/uri'; import { request } from 'vs/base/parts/request/browser/request'; import { localize } from 'vs/nls'; import { parseLogLevel } from 'vs/platform/log/common/log'; import { defaultWebSocketFactory } from 'vs/platform/remote/browser/browserSocketFactory'; import { isFolderToOpen, isWorkspaceToOpen } from 'vs/platform/windows/common/windows'; -import { create, ICredentialsProvider, IHomeIndicator, IProductQualityChangeHandler, IWindowIndicator, IWorkspace, IWorkspaceProvider } from 'vs/workbench/workbench.web.api'; +import { create, ICredentialsProvider, IHomeIndicator, IProductQualityChangeHandler, IWindowIndicator, IWorkbenchConstructionOptions, IWorkspace, IWorkspaceProvider } from 'vs/workbench/workbench.web.api'; function doCreateUri(path: string, queryValues: Map): URI { let query: string | undefined = undefined; @@ -296,6 +296,15 @@ class WindowIndicator implements IWindowIndicator { (function () { + // Find config by checking for DOM + const configElement = document.getElementById('vscode-workbench-web-configuration'); + const configElementAttribute = configElement ? configElement.getAttribute('data-settings') : undefined; + if (!configElement || !configElementAttribute) { + throw new Error('Missing web configuration element'); + } + + const config: IWorkbenchConstructionOptions & { folderUri?: UriComponents, workspaceUri?: UriComponents } = JSON.parse(configElementAttribute); + // Find workspace to open and payload let workspace: IWorkspace; let payload = Object.create(null); @@ -399,7 +408,8 @@ class WindowIndicator implements IWindowIndicator { }); }, developmentOptions: { - logLevel: logLevel ? parseLogLevel(logLevel) : undefined + logLevel: logLevel ? parseLogLevel(logLevel) : undefined, + ...config.developmentOptions }, homeIndicator, windowIndicator, diff --git a/src/vs/server/node/server.main.ts b/src/vs/server/node/server.main.ts index c24259a05200f..3188f7fcb888a 100644 --- a/src/vs/server/node/server.main.ts +++ b/src/vs/server/node/server.main.ts @@ -169,6 +169,11 @@ function getMediaMime(forPath: string): string | undefined { return mapExtToMediaMimes.get(ext.toLowerCase()); } +function serveError(req: http.IncomingMessage, res: http.ServerResponse, errorCode: number, errorMessage: string): void { + res.writeHead(errorCode, { 'Content-Type': 'text/plain' }); + res.end(errorMessage); +} + async function serveFile(logService: ILogService, req: http.IncomingMessage, res: http.ServerResponse, filePath: string, responseHeaders: http.OutgoingHttpHeaders = {}) { try { @@ -199,9 +204,29 @@ async function serveFile(logService: ILogService, req: http.IncomingMessage, res } } -function serveError(req: http.IncomingMessage, res: http.ServerResponse, errorCode: number, errorMessage: string): void { - res.writeHead(errorCode, { 'Content-Type': 'text/plain' }); - res.end(errorMessage); +async function handleRoot(req: http.IncomingMessage, resp: http.ServerResponse, entryPointPath: string, environmentService: INativeEnvironmentService) { + if (!req.headers.host) { + return serveError(req, resp, 400, 'Bad request.'); + } + + const host = req.headers.host; + + const workbenchConfig = { + remoteAuthority: host, + developmentOptions: { + enableSmokeTestDriver: environmentService.driverHandle === 'web' ? true : undefined + } + }; + + const escapeQuote = (str: string) => str.replace(/"/g, '"'); + const entryPointContent = (await fs.promises.readFile(entryPointPath)) + .toString() + .replace('{{WORKBENCH_WEB_CONFIGURATION}}', escapeQuote(JSON.stringify(workbenchConfig))); + + resp.writeHead(200, { + 'Content-Type': 'text/html' + }); + return resp.end(entryPointContent); } interface ServerParsedArgs extends NativeParsedArgs { @@ -558,6 +583,8 @@ export async function main(options: IServerOptions): Promise { const requestService = accessor.get(IRequestService); channelServer.registerChannel('request', new RequestChannel(requestService)); + const environmentService = accessor.get(INativeEnvironmentService); + // Delay creation of spdlog for perf reasons (https://github.com/microsoft/vscode/issues/72906) bufferLogService.logger = new SpdLogLogger('main', join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), true, bufferLogService.getLevel()); @@ -588,7 +615,7 @@ export async function main(options: IServerOptions): Promise { //#region static if (pathname === '/') { - return serveFile(logService, req, res, devMode ? options.mainDev || WEB_MAIN_DEV : options.main || WEB_MAIN); + return handleRoot(req, res, devMode ? options.mainDev || WEB_MAIN_DEV : options.main || WEB_MAIN, environmentService); } if (pathname === '/manifest.json') { res.writeHead(200, { 'Content-Type': 'application/json' }); @@ -906,7 +933,7 @@ export async function main(options: IServerOptions): Promise { } server.listen(port, '0.0.0.0', () => { const { address, port } = server.address() as net.AddressInfo; - logService.info(`Web UI available at https://${address}:${port}`); + logService.info(`Web UI available at http://${address}:${port}`); }); }); } diff --git a/test/automation/src/playwrightDriver.ts b/test/automation/src/playwrightDriver.ts index 2d4bd6ba372af..0b1e3edeb8ece 100644 --- a/test/automation/src/playwrightDriver.ts +++ b/test/automation/src/playwrightDriver.ts @@ -40,7 +40,7 @@ function buildDriver(browser: playwright.Browser, context: playwright.BrowserCon getWindowIds: () => { return Promise.resolve([1]); }, - capturePage: () => Promise.resolve(''), + capturePage: () => page.screenshot().then(buffer => buffer.toString('base64')), reloadWindow: (windowId) => Promise.resolve(), exitApplication: async () => { await context.tracing.stop({ path: join(logsPath, `playwright-trace-${traceCounter++}.zip`) }); @@ -189,7 +189,8 @@ export function connect(options: Options = {}): Promise<{ client: IDisposable, d const page = await context.newPage(); await page.setViewportSize({ width, height }); const payloadParam = `[["enableProposedApi",""],["skipWelcome","true"]]`; - await page.goto(`${endpoint}&folder=vscode-remote://localhost:9888${URI.file(workspacePath!).path}&payload=${payloadParam}`); + const match = /http:\/\/(.*)/.exec(endpoint!); + await page.goto(`${endpoint}/?folder=vscode-remote://${match![1]}${URI.file(workspacePath!).path}&payload=${payloadParam}`); const result = { client: { dispose: () => browser.close() && teardown() }, driver: buildDriver(browser, context, page) From b75d4b24e4174e56cf7c78e29ad1f4655b1f3cc6 Mon Sep 17 00:00:00 2001 From: Jean Pierre Date: Wed, 1 Sep 2021 00:45:24 +0000 Subject: [PATCH 24/28] Add explorer and terminal smoke tests --- package.json | 1 - resources/server/web.sh | 9 ++------ src/vs/platform/driver/browser/baseDriver.ts | 4 ++-- test/automation/src/playwrightDriver.ts | 5 +--- test/automation/src/terminal.ts | 2 +- .../smoke/src/areas/explorer/explorer.test.ts | 22 ++++++++++++++++++ .../smoke/src/areas/terminal/terminal.test.ts | 23 +++++++++++++++++++ test/smoke/src/main.ts | 4 ++++ 8 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 test/smoke/src/areas/explorer/explorer.test.ts create mode 100644 test/smoke/src/areas/terminal/terminal.test.ts diff --git a/package.json b/package.json index acc5836f09ef7..2ed7b5277aa64 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "update-localization-extension": "node build/npm/update-localization-extension.js", "smoketest": "cd test/smoke && yarn compile && node test/index.js", "smoketest-no-compile": "cd test/smoke && node test/index.js", - "smoketest-gitpod": "cd test/smoke && node test/index.js --web --verbose --test-repo /workspace/vscode-smoketest-express --headless --screenshots /workspace/screenshots --electronArgs=\"--disable-dev-shm-usage --use-gl=swiftshader\"", "download-builtin-extensions": "node build/lib/builtInExtensions.js", "download-builtin-extensions-cg": "node build/lib/builtInExtensionsCG.js", "monaco-compile-check": "tsc -p src/tsconfig.monaco.json --noEmit", diff --git a/resources/server/web.sh b/resources/server/web.sh index 04d64887c0e91..51a30aa8d5370 100755 --- a/resources/server/web.sh +++ b/resources/server/web.sh @@ -1,10 +1,5 @@ #!/usr/bin/env sh ROOT=$(dirname $(dirname "$(dirname "$0")")) -# APP_NAME="gitpodcode" -# VERSION="1.59.1" -# COMMIT="3866c3553be8b268c8a7f8c0482c0c0177aa8bfa" -# EXEC_NAME="code" -CLI_SCRIPT="$ROOT/out/server.js" -#"node" "$CLI_SCRIPT" "$APP_NAME" "$VERSION" "$COMMIT" "$EXEC_NAME" "$@" -"node" "$CLI_SCRIPT" "$@" +SERVER_SCRIPT="$ROOT/out/server.js" +node "$SERVER_SCRIPT" "$@" diff --git a/src/vs/platform/driver/browser/baseDriver.ts b/src/vs/platform/driver/browser/baseDriver.ts index d0cec8f3c3382..5c18c44811433 100644 --- a/src/vs/platform/driver/browser/baseDriver.ts +++ b/src/vs/platform/driver/browser/baseDriver.ts @@ -140,8 +140,8 @@ export abstract class BaseWindowDriver implements IWindowDriver { const lines: string[] = []; - for (let i = 0; i < xterm.buffer.length; i++) { - lines.push(xterm.buffer.getLine(i)!.translateToString(true)); + for (let i = 0; i < xterm.buffer.active.length; i++) { + lines.push(xterm.buffer.active.getLine(i)!.translateToString(true)); } return lines; diff --git a/test/automation/src/playwrightDriver.ts b/test/automation/src/playwrightDriver.ts index 0b1e3edeb8ece..ce40b6b1519bc 100644 --- a/test/automation/src/playwrightDriver.ts +++ b/test/automation/src/playwrightDriver.ts @@ -75,10 +75,7 @@ function buildDriver(browser: playwright.Browser, context: playwright.BrowserCon await page.mouse.click(x + (xoffset ? xoffset : 0), y + (yoffset ? yoffset : 0)); }, doubleClick: async (windowId, selector) => { - await driver.click(windowId, selector, 0, 0); - await timeout(60); - await driver.click(windowId, selector, 0, 0); - await timeout(100); + await page.dblclick(selector, { delay: 70 }); }, setValue: async (windowId, selector, text) => page.evaluate(`window.driver.setValue('${selector}', '${text}')`).then(undefined), getTitle: (windowId) => page.evaluate(`window.driver.getTitle()`), diff --git a/test/automation/src/terminal.ts b/test/automation/src/terminal.ts index 207f8c90b16e9..bd2e78d89742b 100644 --- a/test/automation/src/terminal.ts +++ b/test/automation/src/terminal.ts @@ -6,7 +6,7 @@ import { Code } from './code'; import { QuickAccess } from './quickaccess'; -const PANEL_SELECTOR = 'div[id="workbench.panel.terminal"]'; +const PANEL_SELECTOR = 'div[id="workbench.parts.panel"]'; const XTERM_SELECTOR = `${PANEL_SELECTOR} .terminal-wrapper`; const XTERM_TEXTAREA = `${XTERM_SELECTOR} textarea.xterm-helper-textarea`; diff --git a/test/smoke/src/areas/explorer/explorer.test.ts b/test/smoke/src/areas/explorer/explorer.test.ts new file mode 100644 index 0000000000000..a5c75c36ba744 --- /dev/null +++ b/test/smoke/src/areas/explorer/explorer.test.ts @@ -0,0 +1,22 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import minimist = require('minimist'); +import { Application } from '../../../../automation'; +import { afterSuite, beforeSuite } from '../../utils'; + +export function setup(opts: minimist.ParsedArgs) { + describe('Explorer', () => { + beforeSuite(opts); + + afterSuite(opts); + + it('shows explorer and opens a file', async function () { + const app = this.app as Application; + await app.workbench.explorer.openExplorerView(); + await app.workbench.explorer.openFile('app.js'); + }); + }); +} diff --git a/test/smoke/src/areas/terminal/terminal.test.ts b/test/smoke/src/areas/terminal/terminal.test.ts new file mode 100644 index 0000000000000..76e4ee49a4a38 --- /dev/null +++ b/test/smoke/src/areas/terminal/terminal.test.ts @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import minimist = require('minimist'); +import { Application } from '../../../../automation'; +import { afterSuite, beforeSuite } from '../../utils'; + +export function setup(opts: minimist.ParsedArgs) { + describe('Terminal', () => { + beforeSuite(opts); + + afterSuite(opts); + + it('shows terminal and runs command', async function () { + const app = this.app as Application; + await app.workbench.terminal.showTerminal(); + await app.workbench.terminal.runCommand('ls'); + await app.workbench.terminal.waitForTerminalText(lines => lines.some(l => l.includes('app.js'))); + }); + }); +} diff --git a/test/smoke/src/main.ts b/test/smoke/src/main.ts index db2dbe5533916..3531d39f8fd2d 100644 --- a/test/smoke/src/main.ts +++ b/test/smoke/src/main.ts @@ -28,6 +28,8 @@ import { setup as setupDataExtensionTests } from './areas/extensions/extensions. import { setup as setupDataMultirootTests } from './areas/multiroot/multiroot.test'; import { setup as setupDataLocalizationTests } from './areas/workbench/localization.test'; import { setup as setupLaunchTests } from './areas/workbench/launch.test'; +import { setup as setupDataExplorerTests } from './areas/explorer/explorer.test'; +import { setup as setupDataTerminalTests } from './areas/terminal/terminal.test'; const tmpDir = tmp.dirSync({ name: 't' }) as { name: string; removeCallback: Function; }; const testDataPath = tmpDir.name; @@ -341,12 +343,14 @@ if (!opts.web && opts['build'] && !opts['remote']) { describe(`VSCode Smoke Tests (${opts.web ? 'Web' : 'Electron'})`, () => { if (!opts.web) { setupDataLossTests(opts); } if (!opts.web) { setupDataPreferencesTests(opts); } + setupDataExplorerTests(opts); setupDataSearchTests(opts); setupDataNotebookTests(opts); setupDataLanguagesTests(opts); setupDataEditorTests(opts); setupDataStatusbarTests(opts); setupDataExtensionTests(opts); + setupDataTerminalTests(opts); if (!opts.web) { setupDataMultirootTests(opts); } if (!opts.web) { setupDataLocalizationTests(opts); } if (!opts.web) { setupLaunchTests(); } From 9e8b013664cf3cf23e9c2a0c334d9dfbf100c549 Mon Sep 17 00:00:00 2001 From: Jean Pierre Date: Thu, 2 Sep 2021 20:40:21 +0000 Subject: [PATCH 25/28] Address Feedback --- src/vs/server/browser/workbench/workbench.ts | 8 ++------ src/vs/server/node/server.main.ts | 5 ----- test/smoke/src/areas/explorer/explorer.test.ts | 3 +-- test/smoke/src/areas/terminal/terminal.test.ts | 3 +-- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/vs/server/browser/workbench/workbench.ts b/src/vs/server/browser/workbench/workbench.ts index 9e32231ab299c..b36323af76825 100644 --- a/src/vs/server/browser/workbench/workbench.ts +++ b/src/vs/server/browser/workbench/workbench.ts @@ -7,7 +7,7 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { Event } from 'vs/base/common/event'; import { Schemas } from 'vs/base/common/network'; import { isEqual } from 'vs/base/common/resources'; -import { URI, UriComponents } from 'vs/base/common/uri'; +import { URI } from 'vs/base/common/uri'; import { request } from 'vs/base/parts/request/browser/request'; import { localize } from 'vs/nls'; import { parseLogLevel } from 'vs/platform/log/common/log'; @@ -299,11 +299,7 @@ class WindowIndicator implements IWindowIndicator { // Find config by checking for DOM const configElement = document.getElementById('vscode-workbench-web-configuration'); const configElementAttribute = configElement ? configElement.getAttribute('data-settings') : undefined; - if (!configElement || !configElementAttribute) { - throw new Error('Missing web configuration element'); - } - - const config: IWorkbenchConstructionOptions & { folderUri?: UriComponents, workspaceUri?: UriComponents } = JSON.parse(configElementAttribute); + const config: IWorkbenchConstructionOptions = configElementAttribute ? JSON.parse(configElementAttribute) : {}; // Find workspace to open and payload let workspace: IWorkspace; diff --git a/src/vs/server/node/server.main.ts b/src/vs/server/node/server.main.ts index 3188f7fcb888a..f8d1d3bd0e21c 100644 --- a/src/vs/server/node/server.main.ts +++ b/src/vs/server/node/server.main.ts @@ -209,10 +209,7 @@ async function handleRoot(req: http.IncomingMessage, resp: http.ServerResponse, return serveError(req, resp, 400, 'Bad request.'); } - const host = req.headers.host; - const workbenchConfig = { - remoteAuthority: host, developmentOptions: { enableSmokeTestDriver: environmentService.driverHandle === 'web' ? true : undefined } @@ -583,8 +580,6 @@ export async function main(options: IServerOptions): Promise { const requestService = accessor.get(IRequestService); channelServer.registerChannel('request', new RequestChannel(requestService)); - const environmentService = accessor.get(INativeEnvironmentService); - // Delay creation of spdlog for perf reasons (https://github.com/microsoft/vscode/issues/72906) bufferLogService.logger = new SpdLogLogger('main', join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`), true, bufferLogService.getLevel()); diff --git a/test/smoke/src/areas/explorer/explorer.test.ts b/test/smoke/src/areas/explorer/explorer.test.ts index a5c75c36ba744..80fb1b87ab68c 100644 --- a/test/smoke/src/areas/explorer/explorer.test.ts +++ b/test/smoke/src/areas/explorer/explorer.test.ts @@ -1,6 +1,5 @@ /*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. + * Copyright (c) Gitpod. All rights reserved. *--------------------------------------------------------------------------------------------*/ import minimist = require('minimist'); diff --git a/test/smoke/src/areas/terminal/terminal.test.ts b/test/smoke/src/areas/terminal/terminal.test.ts index 76e4ee49a4a38..2facb1d943669 100644 --- a/test/smoke/src/areas/terminal/terminal.test.ts +++ b/test/smoke/src/areas/terminal/terminal.test.ts @@ -1,6 +1,5 @@ /*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. + * Copyright (c) Gitpod. All rights reserved. *--------------------------------------------------------------------------------------------*/ import minimist = require('minimist'); From 8b6e4033d3f3efd7dd85bd9894bdbac657219b3c Mon Sep 17 00:00:00 2001 From: Jean Pierre Date: Sat, 4 Sep 2021 14:29:39 +0000 Subject: [PATCH 26/28] Add web worker extension test --- resources/server/web.sh | 12 +++++++--- test/automation/src/extensions.ts | 6 +++++ test/automation/src/playwrightDriver.ts | 3 ++- .../src/areas/extensions/extensions.test.ts | 23 ++++++++++++++++--- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/resources/server/web.sh b/resources/server/web.sh index 51a30aa8d5370..0a9e41d4e9e21 100755 --- a/resources/server/web.sh +++ b/resources/server/web.sh @@ -1,5 +1,11 @@ -#!/usr/bin/env sh -ROOT=$(dirname $(dirname "$(dirname "$0")")) +#!/usr/bin/env bash + +if [[ "$OSTYPE" == "darwin"* ]]; then + realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } + ROOT=$(dirname $(dirname $(dirname $(realpath "$0")))) +else + ROOT=$(dirname $(dirname $(dirname $(readlink -f $0)))) +fi SERVER_SCRIPT="$ROOT/out/server.js" -node "$SERVER_SCRIPT" "$@" +exec /usr/bin/env node "$SERVER_SCRIPT" "$@" diff --git a/test/automation/src/extensions.ts b/test/automation/src/extensions.ts index 3e71563a2025f..47d4b24cda03e 100644 --- a/test/automation/src/extensions.ts +++ b/test/automation/src/extensions.ts @@ -27,6 +27,12 @@ export class Extensions extends Viewlet { async searchForExtension(id: string): Promise { await this.code.waitAndClick(SEARCH_BOX); await this.code.waitForActiveElement(SEARCH_BOX); + if (process.platform === 'darwin') { + await this.code.dispatchKeybinding('cmd+a'); + } else { + await this.code.dispatchKeybinding('ctrl+a'); + } + await this.code.dispatchKeybinding('delete'); await this.code.waitForTypeInEditor(SEARCH_BOX, `@id:${id}`); await this.code.waitForElement(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[data-extension-id="${id}"]`); } diff --git a/test/automation/src/playwrightDriver.ts b/test/automation/src/playwrightDriver.ts index ce40b6b1519bc..ea35fc05d75ef 100644 --- a/test/automation/src/playwrightDriver.ts +++ b/test/automation/src/playwrightDriver.ts @@ -29,7 +29,8 @@ const vscodeToPlaywrightKey: { [key: string]: string } = { down: 'ArrowDown', left: 'ArrowLeft', home: 'Home', - esc: 'Escape' + esc: 'Escape', + delete: 'Delete' }; let traceCounter = 1; diff --git a/test/smoke/src/areas/extensions/extensions.test.ts b/test/smoke/src/areas/extensions/extensions.test.ts index 5ee13542b00a0..81598e106179d 100644 --- a/test/smoke/src/areas/extensions/extensions.test.ts +++ b/test/smoke/src/areas/extensions/extensions.test.ts @@ -15,9 +15,9 @@ export function setup(opts: minimist.ParsedArgs) { it(`install and enable vscode-smoketest-check extension`, async function () { const app = this.app as Application; - if (app.quality === Quality.Dev) { - this.skip(); - } + // if (app.quality === Quality.Dev) { + // this.skip(); + // } await app.workbench.extensions.openExtensionsViewlet(); @@ -30,5 +30,22 @@ export function setup(opts: minimist.ParsedArgs) { await app.workbench.quickaccess.runCommand('Smoke Test Check'); }); + it(`install and enable smoketest-check-web extension in web worker`, async function () { + const app = this.app as Application; + + // if (app.quality === Quality.Dev) { + // this.skip(); + // } + + await app.workbench.extensions.openExtensionsViewlet(); + + await app.workbench.extensions.installExtension('jeanp413.smoketest-check-web', true); + + // Close extension editor because keybindings dispatch is not working when web views are opened and focused + // https://github.com/microsoft/vscode/issues/110276 + await app.workbench.extensions.closeExtension('smoketest-check-web'); + + await app.workbench.quickaccess.runCommand('Smoke Test Check Web'); + }); }); } From 8e0cd661b295f908798b27160bd96bdcf9eb31c0 Mon Sep 17 00:00:00 2001 From: Jean Pierre Date: Sat, 4 Sep 2021 16:41:58 +0000 Subject: [PATCH 27/28] Add server-cli smoke test --- .../smoke/src/areas/terminal/terminal.test.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/test/smoke/src/areas/terminal/terminal.test.ts b/test/smoke/src/areas/terminal/terminal.test.ts index 2facb1d943669..aba124c065cfd 100644 --- a/test/smoke/src/areas/terminal/terminal.test.ts +++ b/test/smoke/src/areas/terminal/terminal.test.ts @@ -3,7 +3,8 @@ *--------------------------------------------------------------------------------------------*/ import minimist = require('minimist'); -import { Application } from '../../../../automation'; +import * as path from 'path'; +import { Application, Quality } from '../../../../automation'; import { afterSuite, beforeSuite } from '../../utils'; export function setup(opts: minimist.ParsedArgs) { @@ -18,5 +19,23 @@ export function setup(opts: minimist.ParsedArgs) { await app.workbench.terminal.runCommand('ls'); await app.workbench.terminal.waitForTerminalText(lines => lines.some(l => l.includes('app.js'))); }); + + it('shows terminal and runs cli command', async function () { + const app = this.app as Application; + + if (app.quality !== Quality.Dev) { + this.skip(); + } + + const rootPath = process.env['VSCODE_REPOSITORY']; + if (!rootPath) { + throw new Error('VSCODE_REPOSITORY env variable not found'); + } + + const cliPath = path.join(rootPath, 'out', 'server-cli.js'); + + await app.workbench.terminal.runCommand(`node ${cliPath} app.js`); + await app.workbench.editors.waitForActiveTab('app.js'); + }); }); } From b3890feda8f0a818ffdd6f2aa9ec81c3386c9de3 Mon Sep 17 00:00:00 2001 From: Mark Sujew Date: Thu, 2 Sep 2021 12:34:13 +0200 Subject: [PATCH 28/28] Implement basic authentification --- src/vs/server/browser/workbench/login.html | 32 ++++++++ src/vs/server/node/args.ts | 24 ++++++ src/vs/server/node/auth-http.ts | 62 ++++++++++++++ src/vs/server/node/auth.ts | 94 ++++++++++++++++++++++ src/vs/server/node/server.main.ts | 55 ++++++------- src/vs/server/node/server.ts | 7 ++ 6 files changed, 244 insertions(+), 30 deletions(-) create mode 100644 src/vs/server/browser/workbench/login.html create mode 100644 src/vs/server/node/args.ts create mode 100644 src/vs/server/node/auth-http.ts create mode 100644 src/vs/server/node/auth.ts diff --git a/src/vs/server/browser/workbench/login.html b/src/vs/server/browser/workbench/login.html new file mode 100644 index 0000000000000..2fff8824c9c96 --- /dev/null +++ b/src/vs/server/browser/workbench/login.html @@ -0,0 +1,32 @@ + + + + + vscode-web-server login + + + +
+ +

Please login with your password. If you haven't set one yourself, you can find it in the server logs.

+
+ + +
+
+ + diff --git a/src/vs/server/node/args.ts b/src/vs/server/node/args.ts new file mode 100644 index 0000000000000..8bc73940fb8ea --- /dev/null +++ b/src/vs/server/node/args.ts @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import * as path from 'path'; +import * as os from 'os'; +import { URI } from 'vs/base/common/uri'; +import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; +import { OptionDescriptions, OPTIONS, parseArgs } from 'vs/platform/environment/node/argv'; +import product from 'vs/platform/product/common/product'; + +export interface ServerParsedArgs extends NativeParsedArgs { + port?: string + password?: string +} +const SERVER_OPTIONS: OptionDescriptions> = { + ...OPTIONS, + port: { type: 'string' }, + password: { type: 'string' } +}; + +export const devMode = !!process.env['VSCODE_DEV']; +export const args = parseArgs(process.argv, SERVER_OPTIONS); +args['user-data-dir'] = URI.file(path.join(os.homedir(), product.dataFolderName)).fsPath; diff --git a/src/vs/server/node/auth-http.ts b/src/vs/server/node/auth-http.ts new file mode 100644 index 0000000000000..1db5ffe01bcb5 --- /dev/null +++ b/src/vs/server/node/auth-http.ts @@ -0,0 +1,62 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import * as path from 'path'; +import * as http from 'http'; +import { ILogService } from 'vs/platform/log/common/log'; +import { parse } from 'querystring'; +import { args } from 'vs/server/node/args'; +import { authenticated, generateAndSetPassword, handlePasswordValidation } from 'vs/server/node/auth'; +import { APP_ROOT, serveFile } from 'vs/server/node/server.main'; + +const LOGIN = path.join(APP_ROOT, 'out', 'vs', 'server', 'browser', 'workbench', 'login.html'); + +export async function handleVerification(req: http.IncomingMessage, res: http.ServerResponse | undefined, logService: ILogService): Promise { + if (args.password === undefined) { + await generateAndSetPassword(logService); + } + const auth = await authenticated(args, req); + if (!auth && res) { + const password = (await collectRequestData(req)).password; + if (password !== undefined) { + const { valid, hashed } = await handlePasswordValidation({ + reqPassword: password, + argsPassword: args.password, + }); + + if (valid) { + res.writeHead(302, { + 'Set-Cookie': `key=${hashed}; HttpOnly`, + 'Location': '/' + }); + res.end(); + } else { + serveFile(logService, req, res, LOGIN); + } + } else { + serveFile(logService, req, res, LOGIN); + } + return false; + } + return auth; +} + +function collectRequestData(request: http.IncomingMessage): Promise> { + return new Promise(resolve => { + const FORM_URLENCODED = 'application/x-www-form-urlencoded'; + if (request.headers['content-type'] === FORM_URLENCODED) { + let body = ''; + request.on('data', chunk => { + body += chunk.toString(); + }); + request.on('end', () => { + const item = parse(body) as Record; + resolve(item); + }); + } + else { + resolve({}); + } + }); +} diff --git a/src/vs/server/node/auth.ts b/src/vs/server/node/auth.ts new file mode 100644 index 0000000000000..20e7a1522804e --- /dev/null +++ b/src/vs/server/node/auth.ts @@ -0,0 +1,94 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Gitpod. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +import * as http from 'http'; +import * as crypto from 'crypto'; +import { args, ServerParsedArgs } from 'vs/server/node/args'; +import { ILogService } from 'vs/platform/log/common/log'; + +export function sanitizeString(str: string): string { + return typeof str === 'string' && str.trim().length > 0 ? str.trim() : ''; +} + +export function parseCookies(request: http.IncomingMessage): Record { + const cookies: Record = {}; + const rc = request.headers.cookie; + + if (rc) { + rc.split(';').forEach(cookie => { + let parts = cookie.split('='); + if (parts.length > 0) { + const name = parts.shift()!.trim(); + let value = decodeURI(parts.join('=')); + cookies[name] = value; + } + }); + } + + return cookies; +} + +export async function authenticated(args: ServerParsedArgs, req: http.IncomingMessage): Promise { + if (!args.password) { + return true; + } + const cookies = parseCookies(req); + return isHashMatch(args.password || '', sanitizeString(cookies.key)); +}; + +interface PasswordValidation { + valid: boolean + hashed: string +} + +interface HandlePasswordValidationArgs { + reqPassword: string | undefined + argsPassword: string | undefined +} + +function safeCompare(a: string, b: string): boolean { + return a.length === b.length && crypto.timingSafeEqual(Buffer.from(a), Buffer.from(b)); +} + +export async function generateAndSetPassword(logService: ILogService, length = 24): Promise { + if (args.password || !length) { + return; + } + const password = await generatePassword(length); + args.password = password; + logService.info(`Automatically generated password\r\n ${password}`); +} + +export async function generatePassword(length = 24): Promise { + const buffer = Buffer.alloc(Math.ceil(length / 2)); + await new Promise(resolve => { + crypto.randomFill(buffer, (_, buf) => resolve(buf)); + }); + return buffer.toString('hex').substring(0, length); +} + +export function hash(str: string): string { + return crypto.createHash('sha256').update(str).digest('hex'); +} + +export function isHashMatch(password: string, hashPassword: string): boolean { + const hashed = hash(password); + return safeCompare(hashed, hashPassword); +} + +export async function handlePasswordValidation({ argsPassword: passwordFromArgs, reqPassword: passwordFromRequestBody }: HandlePasswordValidationArgs): Promise { + if (passwordFromRequestBody) { + const valid = passwordFromArgs ? safeCompare(passwordFromRequestBody, passwordFromArgs) : false; + const hashed = hash(passwordFromRequestBody); + return { + valid, + hashed + }; + } + + return { + valid: false, + hashed: '' + } +} diff --git a/src/vs/server/node/server.main.ts b/src/vs/server/node/server.main.ts index f8d1d3bd0e21c..b14e74189078f 100644 --- a/src/vs/server/node/server.main.ts +++ b/src/vs/server/node/server.main.ts @@ -7,7 +7,6 @@ import * as crypto from 'crypto'; import * as fs from 'fs'; import * as http from 'http'; import * as net from 'net'; -import * as os from 'os'; import * as path from 'path'; import * as url from 'url'; import { RunOnceScheduler } from 'vs/base/common/async'; @@ -33,9 +32,7 @@ import { ConfigurationService } from 'vs/platform/configuration/common/configura import { ExtensionHostDebugBroadcastChannel } from 'vs/platform/debug/common/extensionHostDebugIpc'; import { IDownloadService } from 'vs/platform/download/common/download'; import { DownloadService } from 'vs/platform/download/common/downloadService'; -import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; import { IEnvironmentService, INativeEnvironmentService } from 'vs/platform/environment/common/environment'; -import { OptionDescriptions, OPTIONS, parseArgs } from 'vs/platform/environment/node/argv'; import { NativeEnvironmentService } from 'vs/platform/environment/node/environmentService'; import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; import { IExtensionGalleryService, IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; @@ -62,6 +59,7 @@ import { RequestChannel } from 'vs/platform/request/common/requestIpc'; import { RequestService } from 'vs/platform/request/node/requestService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; +import { args } from 'vs/server/node/args'; import { IFileChangeDto } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostReadyMessage, IExtHostSocketMessage } from 'vs/workbench/services/extensions/common/extensionHostProtocol'; import { Logger } from 'vs/workbench/services/extensions/common/extensionPoints'; @@ -73,7 +71,7 @@ import { RemoteExtensionLogFileName } from 'vs/workbench/services/remote/common/ export type IRawURITransformerFactory = (remoteAuthority: string) => IRawURITransformer; export const IRawURITransformerFactory = createDecorator('rawURITransformerFactory'); -const APP_ROOT = path.join(__dirname, '..', '..', '..', '..'); +export const APP_ROOT = path.join(__dirname, '..', '..', '..', '..'); const uriTransformerPath = path.join(APP_ROOT, 'out/serverUriTransformer'); const rawURITransformerFactory: IRawURITransformerFactory = require.__$__nodeRequire(uriTransformerPath); @@ -169,12 +167,12 @@ function getMediaMime(forPath: string): string | undefined { return mapExtToMediaMimes.get(ext.toLowerCase()); } -function serveError(req: http.IncomingMessage, res: http.ServerResponse, errorCode: number, errorMessage: string): void { +export function serveError(req: http.IncomingMessage, res: http.ServerResponse, errorCode: number, errorMessage: string): void { res.writeHead(errorCode, { 'Content-Type': 'text/plain' }); res.end(errorMessage); } -async function serveFile(logService: ILogService, req: http.IncomingMessage, res: http.ServerResponse, filePath: string, responseHeaders: http.OutgoingHttpHeaders = {}) { +export async function serveFile(logService: ILogService, req: http.IncomingMessage, res: http.ServerResponse, filePath: string, responseHeaders: http.OutgoingHttpHeaders = {}) { try { // Sanity checks @@ -226,14 +224,6 @@ async function handleRoot(req: http.IncomingMessage, resp: http.ServerResponse, return resp.end(entryPointContent); } -interface ServerParsedArgs extends NativeParsedArgs { - port?: string -} -const SERVER_OPTIONS: OptionDescriptions> = { - ...OPTIONS, - port: { type: 'string' } -}; - export interface IStartServerResult { installingInitialExtensions?: Promise } @@ -249,6 +239,7 @@ export interface IServerOptions { configureExtensionHostForkOptions?(opts: cp.ForkOptions, accessor: ServicesAccessor, channelServer: IPCServer): void; configureExtensionHostProcess?(extensionHost: cp.ChildProcess, accessor: ServicesAccessor, channelServer: IPCServer): IDisposable; + verifyRequest?(req: http.IncomingMessage, res: http.ServerResponse | undefined, accessor: ServicesAccessor): Promise; handleRequest?(pathname: string | null, req: http.IncomingMessage, res: http.ServerResponse, accessor: ServicesAccessor, channelServer: IPCServer): Promise; } @@ -256,10 +247,8 @@ export async function main(options: IServerOptions): Promise { const devMode = !!process.env['VSCODE_DEV']; const connectionToken = generateUuid(); - const parsedArgs = parseArgs(process.argv, SERVER_OPTIONS); - parsedArgs['user-data-dir'] = URI.file(path.join(os.homedir(), product.dataFolderName)).fsPath; const productService = { _serviceBrand: undefined, ...product }; - const environmentService = new NativeEnvironmentService(parsedArgs, productService); + const environmentService = new NativeEnvironmentService(args, productService); // see src/vs/code/electron-main/main.ts#142 const bufferLogService = new BufferLogService(); @@ -593,10 +582,12 @@ export async function main(options: IServerOptions): Promise { const parsedUrl = url.parse(req.url, true); const pathname = parsedUrl.pathname; + if (options.verifyRequest && !await instantiationService.invokeFunction(accessor => options.verifyRequest!(req, res, accessor))) { + return; + } if (options.handleRequest && await instantiationService.invokeFunction(accessor => options.handleRequest!(pathname, req, res, accessor, channelServer))) { return; } - //#region headless if (pathname === '/vscode-remote-resource') { const filePath = parsedUrl.query['path']; @@ -643,12 +634,16 @@ export async function main(options: IServerOptions): Promise { } }); server.on('error', e => logService.error(e)); - server.on('upgrade', (req: http.IncomingMessage, socket: net.Socket) => { + server.on('upgrade', async (req: http.IncomingMessage, socket: net.Socket) => { if (req.headers['upgrade'] !== 'websocket' || !req.url) { logService.error(`failed to upgrade for header "${req.headers['upgrade']}" and url: "${req.url}".`); socket.end('HTTP/1.1 400 Bad Request'); return; } + if (options.verifyRequest && !await instantiationService.invokeFunction(accessor => options.verifyRequest!(req, undefined, accessor))) { + socket.end('HTTP/1.1 401 Unauthorized'); + return; + } const { query } = url.parse(req.url, true); // /?reconnectionToken=c0e3a8af-6838-44fb-851b-675401030831&reconnection=false&skipWebSocketFrames=false const reconnection = 'reconnection' in query && query['reconnection'] === 'true'; @@ -758,7 +753,7 @@ export async function main(options: IServerOptions): Promise { logService.info(`[${token}] Management connection is connected.`); } else { if (!client.management) { - logService.error(`[${token}] Failed to reconnect: management connection is not running.`); + logService.error(`[${token}] Failed to reconnect: management connection is not running.`); protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'error', reason: 'Management connection is not running.' } as ErrorMessage))); safeDisposeProtocolAndSocket(protocol); return; @@ -848,17 +843,17 @@ export async function main(options: IServerOptions): Promise { socket.end(); extensionHost.kill(); client.extensionHost = undefined; - logService.info(`[${token}] Extension host is disconnected.`); + logService.info(`[${token}] Extension host is disconnected.`); } extensionHost.on('error', err => { dispose(); - logService.error(`[${token}] Extension host failed with: `, err); + logService.error(`[${token}] Extension host failed with: `, err); }); extensionHost.on('exit', (code: number, signal: string) => { dispose(); if (code !== 0 && signal !== 'SIGTERM') { - logService.error(`[${token}] Extension host exited with code: ${code} and signal: ${signal}.`); + logService.error(`[${token}] Extension host exited with code: ${code} and signal: ${signal}.`); } }); @@ -873,7 +868,7 @@ export async function main(options: IServerOptions): Promise { permessageDeflate, inflateBytes } as IExtHostSocketMessage, socket); - logService.info(`[${token}] Extension host is connected.`); + logService.info(`[${token}] Extension host is connected.`); } }; extensionHost.on('message', readyListener); @@ -882,13 +877,13 @@ export async function main(options: IServerOptions): Promise { toDispose = instantiationService.invokeFunction(accessor => options.configureExtensionHostProcess!(extensionHost, accessor, channelServer)); } client.extensionHost = extensionHost; - logService.info(`[${token}] Extension host is started.`); + logService.info(`[${token}] Extension host is started.`); } catch (e) { - logService.error(`[${token}] Failed to start the extension host process: `, e); + logService.error(`[${token}] Failed to start the extension host process: `, e); } } else { if (!client.extensionHost) { - logService.error(`[${token}] Failed to reconnect: extension host is not running.`); + logService.error(`[${token}] Failed to reconnect: extension host is not running.`); protocol.sendControl(VSBuffer.fromString(JSON.stringify({ type: 'error', reason: 'Extension host is not running.' } as ErrorMessage))); safeDisposeProtocolAndSocket(protocol); return; @@ -908,7 +903,7 @@ export async function main(options: IServerOptions): Promise { permessageDeflate, inflateBytes } as IExtHostSocketMessage, socket); - logService.info(`[${token}] Extension host is reconnected.`); + logService.info(`[${token}] Extension host is reconnected.`); } } else { logService.error(`[${token}] Unexpected connection type:`, msg.desiredConnectionType); @@ -921,8 +916,8 @@ export async function main(options: IServerOptions): Promise { }); }); let port = 3000; - if (parsedArgs.port) { - port = Number(parsedArgs.port); + if (args.port) { + port = Number(args.port); } else if (typeof options.port === 'number') { port = options.port; } diff --git a/src/vs/server/node/server.ts b/src/vs/server/node/server.ts index d90dff3778e00..7f90d2e77fa58 100644 --- a/src/vs/server/node/server.ts +++ b/src/vs/server/node/server.ts @@ -2,11 +2,18 @@ * Copyright (c) Gitpod. All rights reserved. *--------------------------------------------------------------------------------------------*/ +import { ILogService } from 'vs/platform/log/common/log'; +import { handleVerification } from 'vs/server/node/auth-http'; import { registerRemoteTerminal } from 'vs/server/node/remote-terminal'; import { main } from 'vs/server/node/server.main'; main({ start: (services, channelServer) => { registerRemoteTerminal(services, channelServer); + }, + verifyRequest: (req, res, accessor): Promise => { + const logService = accessor.get(ILogService); + return handleVerification(req, res, logService); } }); +