diff --git a/.configurations/configuration.dsc.yaml b/.configurations/configuration.dsc.yaml
index 780b1dfa959..c41f115aff9 100644
--- a/.configurations/configuration.dsc.yaml
+++ b/.configurations/configuration.dsc.yaml
@@ -18,17 +18,6 @@ properties:
id: OpenJS.NodeJS.LTS
version: "20.14.0"
source: winget
- - resource: NpmDsc/NpmPackage
- id: yarn
- dependsOn:
- - npm
- directives:
- description: Install Yarn
- allowPrerelease: true
- settings:
- Name: 'yarn'
- Global: true
- PackageDirectory: '${WinGetConfigRoot}\..\'
- resource: Microsoft.WinGet.DSC/WinGetPackage
directives:
description: Install Python 3.10
@@ -56,7 +45,7 @@ properties:
includeRecommended: true
components:
- Microsoft.VisualStudio.Workload.VCTools
- - resource: YarnDsc/YarnInstall
+ - resource: NpmDsc/NpmInstall
dependsOn:
- npm
directives:
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index bc30d7dbe3b..9be15a6afa1 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -7,8 +7,8 @@ RUN git config --system codespaces-theme.hide-status 1
USER node
RUN npm install -g node-gyp
-RUN YARN_CACHE="$(yarn cache dir)" && rm -rf "$YARN_CACHE" && ln -s /vscode-dev/yarn-cache "$YARN_CACHE"
+RUN NPM_CACHE="$(npm config get cache)" && rm -rf "$NPM_CACHE" && ln -s /vscode-dev/npm-cache "$NPM_CACHE"
RUN echo 'export DISPLAY="${DISPLAY:-:1}"' | tee -a ~/.bashrc >> ~/.zshrc
USER root
-CMD chown node:node /vscode-dev && sudo -u node mkdir -p /vscode-dev/yarn-cache && sleep inf
+CMD chown node:node /vscode-dev && sudo -u node mkdir -p /vscode-dev/npm-cache && sleep inf
diff --git a/.devcontainer/README.md b/.devcontainer/README.md
index 44965693380..5f6e1cd99f3 100644
--- a/.devcontainer/README.md
+++ b/.devcontainer/README.md
@@ -24,7 +24,7 @@ If you already have VS Code and Docker installed, you can click the badge above
4. Press Ctrl/Cmd + Shift + P or F1 and select **Dev Containers: Clone Repository in Container Volume...**.
- > **Tip:** While you can use your local source tree instead, operations like `yarn install` can be slow on macOS or when using the Hyper-V engine on Windows. We recommend using the WSL filesystem on Windows or the "clone repository in container" approach on Windows and macOS instead since it uses "named volume" rather than the local filesystem.
+ > **Tip:** While you can use your local source tree instead, operations like `npm i` can be slow on macOS or when using the Hyper-V engine on Windows. We recommend using the WSL filesystem on Windows or the "clone repository in container" approach on Windows and macOS instead since it uses "named volume" rather than the local filesystem.
5. Type `https://github.com/microsoft/vscode` (or a branch or PR URL) in the input box and press Enter.
@@ -85,7 +85,7 @@ To start working with Code - OSS, follow these steps:
1. In your local VS Code client, open a terminal (Ctrl/Cmd + Shift + \`) and type the following commands:
```bash
- yarn install
+ npm i
bash scripts/code.sh
```
diff --git a/.devcontainer/devcontainer-lock.json b/.devcontainer/devcontainer-lock.json
index cbcde9bb109..fdd03c400cc 100644
--- a/.devcontainer/devcontainer-lock.json
+++ b/.devcontainer/devcontainer-lock.json
@@ -4,6 +4,11 @@
"version": "1.0.8",
"resolved": "ghcr.io/devcontainers/features/desktop-lite@sha256:e7dc4d37ab9e3d6e7ebb221bac741f5bfe07dae47025399d038b17af2ed8ddb7",
"integrity": "sha256:e7dc4d37ab9e3d6e7ebb221bac741f5bfe07dae47025399d038b17af2ed8ddb7"
+ },
+ "ghcr.io/devcontainers/features/rust:1": {
+ "version": "1.1.3",
+ "resolved": "ghcr.io/devcontainers/features/rust@sha256:aba6f47303b197976902bf544c786b5efecc03c238ff593583e5e74dfa9c7ccb",
+ "integrity": "sha256:aba6f47303b197976902bf544c786b5efecc03c238ff593583e5e74dfa9c7ccb"
}
}
}
\ No newline at end of file
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index f5adc4e1c46..75076a0f8b6 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -4,7 +4,8 @@
"dockerfile": "Dockerfile"
},
"features": {
- "ghcr.io/devcontainers/features/desktop-lite:1": {}
+ "ghcr.io/devcontainers/features/desktop-lite:1": {},
+ "ghcr.io/devcontainers/features/rust:1": {}
},
"containerEnv": {
"DISPLAY": "" // Allow the Dev Containers extension to set DISPLAY, post-create.sh will add it back in ~/.bashrc and ~/.zshrc if not set.
diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh
index 5b2deee6674..4e39a71c49d 100755
--- a/.devcontainer/post-create.sh
+++ b/.devcontainer/post-create.sh
@@ -1,4 +1,4 @@
#!/bin/sh
-yarn install --network-timeout 180000
-yarn electron
+npm i
+npm run electron
diff --git a/.eslintignore b/.eslintignore
index 12da4a432e1..0299f2c1080 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -30,7 +30,15 @@
**/src/vs/*/**/*.d.ts
**/src/vs/base/test/common/filters.perf.data.js
**/src/vs/loader.js
+**/src2/**/dompurify.js
+**/src2/**/marked.js
+**/src2/**/semver.js
+**/src2/typings/**/*.d.ts
+**/src2/vs/*/**/*.d.ts
+**/src2/vs/base/test/common/filters.perf.data.js
+**/src2/vs/loader.js
**/test/unit/assert.js
+**/test/unit/assert-esm.js
**/test/automation/out/**
**/typings/**
!.vscode
diff --git a/.eslintplugin/code-ensure-no-disposables-leak-in-test.ts b/.eslintplugin/code-ensure-no-disposables-leak-in-test.ts
index ae3089036a6..9d3044f50f4 100644
--- a/.eslintplugin/code-ensure-no-disposables-leak-in-test.ts
+++ b/.eslintplugin/code-ensure-no-disposables-leak-in-test.ts
@@ -12,7 +12,8 @@ export = new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rul
type: 'problem',
messages: {
ensure: 'Suites should include a call to `ensureNoDisposablesAreLeakedInTestSuite()` to ensure no disposables are leaked in tests.'
- }
+ },
+ fixable: 'code'
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
@@ -30,6 +31,10 @@ export = new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rul
context.report({
node,
messageId: 'ensure',
+ fix: (fixer) => {
+ const updatedSrc = src.replace(/(suite\(.*\n)/, '$1\n\tensureNoDisposablesAreLeakedInTestSuite();\n');
+ return fixer.replaceText(node, updatedSrc);
+ }
});
}
},
diff --git a/.eslintplugin/code-import-patterns.ts b/.eslintplugin/code-import-patterns.ts
index 1f08bb4a4e8..460409514bc 100644
--- a/.eslintplugin/code-import-patterns.ts
+++ b/.eslintplugin/code-import-patterns.ts
@@ -12,19 +12,19 @@ import { createImportRuleListener } from './utils';
const REPO_ROOT = path.normalize(path.join(__dirname, '../'));
interface ConditionalPattern {
- when?: 'hasBrowser' | 'hasNode' | 'test';
+ when?: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test';
pattern: string;
}
interface RawImportPatternsConfig {
target: string;
- layer?: 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-main';
+ layer?: 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-utility' | 'electron-main';
test?: boolean;
restrictions: string | (string | ConditionalPattern)[];
}
interface LayerAllowRule {
- when: 'hasBrowser' | 'hasNode' | 'test';
+ when: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test';
allow: string[];
}
@@ -44,7 +44,9 @@ export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization',
- badFilename: 'Missing definition in `code-import-patterns` for this file. Define rules at https://github.com/microsoft/vscode/blob/main/.eslintrc.json'
+ badFilename: 'Missing definition in `code-import-patterns` for this file. Define rules at https://github.com/microsoft/vscode/blob/main/.eslintrc.json',
+ badAbsolute: 'Imports have to be relative to support ESM',
+ badExtension: 'Imports have to end with `.js` or `.css` to support ESM',
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
@@ -77,13 +79,14 @@ export = new class implements eslint.Rule.RuleModule {
return this._optionsCache.get(options)!;
}
- type Layer = 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-main';
+ type Layer = 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-utility' | 'electron-main';
interface ILayerRule {
layer: Layer;
deps: string;
isBrowser?: boolean;
isNode?: boolean;
+ isElectron?: boolean;
}
function orSegment(variants: Layer[]): string {
@@ -96,11 +99,13 @@ export = new class implements eslint.Rule.RuleModule {
{ layer: 'browser', deps: orSegment(['common', 'browser']), isBrowser: true },
{ layer: 'electron-sandbox', deps: orSegment(['common', 'browser', 'electron-sandbox']), isBrowser: true },
{ layer: 'node', deps: orSegment(['common', 'node']), isNode: true },
- { layer: 'electron-main', deps: orSegment(['common', 'node', 'electron-main']), isNode: true },
+ { layer: 'electron-utility', deps: orSegment(['common', 'node', 'electron-utility']), isNode: true, isElectron: true },
+ { layer: 'electron-main', deps: orSegment(['common', 'node', 'electron-utility', 'electron-main']), isNode: true, isElectron: true },
];
let browserAllow: string[] = [];
let nodeAllow: string[] = [];
+ let electronAllow: string[] = [];
let testAllow: string[] = [];
for (const option of options) {
if (isLayerAllowRule(option)) {
@@ -108,6 +113,8 @@ export = new class implements eslint.Rule.RuleModule {
browserAllow = option.allow.slice(0);
} else if (option.when === 'hasNode') {
nodeAllow = option.allow.slice(0);
+ } else if (option.when === 'hasElectron') {
+ electronAllow = option.allow.slice(0);
} else if (option.when === 'test') {
testAllow = option.allow.slice(0);
}
@@ -135,9 +142,13 @@ export = new class implements eslint.Rule.RuleModule {
restrictions.push(...nodeAllow);
}
+ if (layerRule.isElectron) {
+ restrictions.push(...electronAllow);
+ }
+
for (const rawRestriction of rawRestrictions) {
let importPattern: string;
- let when: 'hasBrowser' | 'hasNode' | 'test' | undefined = undefined;
+ let when: 'hasBrowser' | 'hasNode' | 'hasElectron' | 'test' | undefined = undefined;
if (typeof rawRestriction === 'string') {
importPattern = rawRestriction;
} else {
@@ -147,6 +158,7 @@ export = new class implements eslint.Rule.RuleModule {
if (typeof when === 'undefined'
|| (when === 'hasBrowser' && layerRule.isBrowser)
|| (when === 'hasNode' && layerRule.isNode)
+ || (when === 'hasElectron' && layerRule.isElectron)
) {
restrictions.push(importPattern.replace(/\/\~$/, `/${layerRule.deps}/**`));
testRestrictions.push(importPattern.replace(/\/\~$/, `/test/${layerRule.deps}/**`));
@@ -181,8 +193,8 @@ export = new class implements eslint.Rule.RuleModule {
if (targetIsVS) {
// Always add "vs/nls" and "vs/amdX"
- restrictions.push('vs/nls');
- restrictions.push('vs/amdX'); // TODO@jrieken remove after ESM is real
+ restrictions.push('vs/nls.js');
+ restrictions.push('vs/amdX.js'); // TODO@jrieken remove after ESM is real
}
if (targetIsVS && option.layer) {
@@ -212,6 +224,25 @@ export = new class implements eslint.Rule.RuleModule {
}
private _checkImport(context: eslint.Rule.RuleContext, config: ImportPatternsConfig, node: TSESTree.Node, importPath: string) {
+ const targetIsVS = /^src\/vs\//.test(getRelativeFilename(context));
+ if (targetIsVS) {
+
+ // ESM: check for import ending with ".js" or ".css"
+ if (importPath[0] === '.' && !importPath.endsWith('.js') && !importPath.endsWith('.css')) {
+ context.report({
+ loc: node.loc,
+ messageId: 'badExtension',
+ });
+ }
+
+ // check for import being relative
+ if (importPath.startsWith('vs/')) {
+ context.report({
+ loc: node.loc,
+ messageId: 'badAbsolute',
+ });
+ }
+ }
// resolve relative paths
if (importPath[0] === '.') {
diff --git a/.eslintplugin/code-no-look-behind-regex.ts b/.eslintplugin/code-no-look-behind-regex.ts
deleted file mode 100644
index 800b59b6479..00000000000
--- a/.eslintplugin/code-no-look-behind-regex.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-import * as ESTree from 'estree';
-
-//------------------------------------------------------------------------------
-// Rule Definition
-//------------------------------------------------------------------------------
-
-const _positiveLookBehind = /\(\?<=.+/;
-const _negativeLookBehind = /\(\? {
- type RegexLiteral = TSESTree.Literal & { regex: { pattern: string; flags: string } };
- const pattern = (node).regex?.pattern;
- if (_containsLookBehind(pattern)) {
- context.report({
- node,
- message: 'Look behind assertions are not yet supported in all browsers'
- });
- }
- },
- // new Regex("...")
- ['NewExpression[callee.name="RegExp"] Literal']: (node: ESTree.Literal) => {
- if (_containsLookBehind(node.value)) {
- context.report({
- node,
- message: 'Look behind assertions are not yet supported in all browsers'
- });
- }
- }
- };
- }
-};
diff --git a/.eslintplugin/code-no-static-self-ref.ts b/.eslintplugin/code-no-static-self-ref.ts
new file mode 100644
index 00000000000..7c6e13032ae
--- /dev/null
+++ b/.eslintplugin/code-no-static-self-ref.ts
@@ -0,0 +1,56 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as eslint from 'eslint';
+import { TSESTree } from '@typescript-eslint/experimental-utils';
+
+/**
+ * WORKAROUND for https://github.com/evanw/esbuild/issues/3823
+ */
+export = new class implements eslint.Rule.RuleModule {
+
+ create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
+
+ function checkProperty(inNode: any) {
+
+ const classDeclaration = context.getAncestors().find(node => node.type === 'ClassDeclaration');
+ const propertyDefinition = inNode;
+
+ if (!classDeclaration || !classDeclaration.id?.name) {
+ return;
+ }
+
+ if (!propertyDefinition.value) {
+ return;
+ }
+
+ const classCtor = classDeclaration.body.body.find(node => node.type === 'MethodDefinition' && node.kind === 'constructor')
+
+ if (!classCtor) {
+ return;
+ }
+
+ const name = classDeclaration.id.name;
+ const valueText = context.getSourceCode().getText(propertyDefinition.value)
+
+ if (valueText.includes(name + '.')) {
+
+ if (classCtor.value?.type === 'FunctionExpression' && !classCtor.value.params.find((param: any) => param.type === 'TSParameterProperty' && param.decorators?.length > 0)) {
+ return
+ }
+
+ context.report({
+ loc: propertyDefinition.value.loc,
+ message: `Static properties in decorated classes should not reference the class they are defined in. Use 'this' instead. This is a workaround for https://github.com/evanw/esbuild/issues/3823.`
+ });
+ }
+
+ }
+
+ return {
+ 'PropertyDefinition[static=true]': checkProperty,
+ };
+ }
+};
diff --git a/.eslintrc.json b/.eslintrc.json
index 209bcee0d97..97333387f86 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -92,9 +92,14 @@
"common",
"browser"
],
- "electron-main": [
+ "electron-utility": [
"common",
"node"
+ ],
+ "electron-main": [
+ "common",
+ "node",
+ "electron-utility"
]
}
],
@@ -141,6 +146,14 @@
]
}
},
+ {
+ "files": [
+ "src/**/*.ts"
+ ],
+ "rules": {
+ "local/code-no-static-self-ref": "warn"
+ }
+ },
{
"files": [
"src/vs/**/*.test.ts"
@@ -603,12 +616,64 @@
]
}
},
+ {
+ "files": [
+ "src/**/electron-utility/**/*.ts"
+ ],
+ "rules": {
+ "no-restricted-imports": [
+ "warn",
+ {
+ "paths": [
+ {
+ "name": "electron",
+ "importNames": [
+ "app",
+ "autoUpdater",
+ "BaseWindow",
+ "BrowserWindow",
+ "contentTracing",
+ "desktopCapturer",
+ "dialog",
+ "globalShortcut",
+ "inAppPurchase",
+ "ipcMain",
+ "Menu",
+ "MenuItem",
+ "MessageChannelMain",
+ "MessagePortMain",
+ "nativeTheme",
+ "netLog",
+ "Notification",
+ "powerMonitor",
+ "powerSaveBlocker",
+ "protocol",
+ "pushNotifications",
+ "safeStorage",
+ "screen",
+ "session",
+ "ShareMenu",
+ "TouchBar",
+ "Tray",
+ "utilityProcess",
+ "View",
+ "webContents",
+ "webFrameMain",
+ "webContentsView",
+ "default"
+ ],
+ "message": "Only net and system-preferences are allowed to be imported from electron"
+ }
+ ]
+ }
+ ]
+ }
+ },
{
"files": [
"src/**/*.ts"
],
"rules": {
- "local/code-no-look-behind-regex": "warn",
"local/code-import-patterns": [
"warn",
{
@@ -623,10 +688,12 @@
{
// imports that are allowed in all files of layers:
// - node
+ // - electron-utility
// - electron-main
"when": "hasNode",
"allow": [
"@parcel/watcher",
+ "@bpasero/watcher",
"@vscode/sqlite3",
"@vscode/vscode-languagedetection",
"@vscode/ripgrep",
@@ -641,13 +708,13 @@
"cookie",
"crypto",
"dns",
- "electron",
"events",
"fs",
"fs/promises",
"http",
"https",
"minimist",
+ "node:module",
"native-keymap",
"native-watchdog",
"net",
@@ -674,17 +741,26 @@
"@xterm/addon-webgl",
"@xterm/headless",
"@xterm/xterm",
- "@floating-ui/dom",
"yauzl",
"yazl",
"zlib"
]
},
+ {
+ // imports that are allowed in all files of layers:
+ // - electron-utility
+ // - electron-main
+ "when": "hasElectron",
+ "allow": [
+ "electron"
+ ]
+ },
{
// imports that are allowed in all /test/ files
"when": "test",
"allow": [
"vs/css.build",
+ "vs/css.build.js",
"assert",
"sinon",
"sinon-test"
@@ -739,7 +815,8 @@
"vs/platform/*/~",
"tas-client-umd", // node module allowed even in /common/
"@microsoft/1ds-core-js", // node module allowed even in /common/
- "@microsoft/1ds-post-js" // node module allowed even in /common/
+ "@microsoft/1ds-post-js", // node module allowed even in /common/
+ "@xterm/headless" // node module allowed even in /common/
]
},
{
@@ -748,7 +825,8 @@
"vs/base/~",
"vs/base/parts/*/~",
"vs/platform/*/~",
- "vs/editor/~"
+ "vs/editor/~",
+ "@vscode/tree-sitter-wasm" // node module allowed even in /common/
]
},
{
@@ -769,7 +847,8 @@
"vs/platform/*/~",
"vs/editor/~",
"vs/editor/contrib/*/~",
- "vs/editor/standalone/~"
+ "vs/editor/standalone/~",
+ "@vscode/tree-sitter-wasm" // type import
]
},
{
@@ -855,6 +934,7 @@
"tas-client-umd", // node module allowed even in /common/
"vscode-textmate", // node module allowed even in /common/
"@vscode/vscode-languagedetection", // node module allowed even in /common/
+ "@vscode/tree-sitter-wasm", // type import
{
"when": "hasBrowser",
"pattern": "@xterm/xterm"
@@ -872,6 +952,7 @@
"vs/workbench/~",
"vs/workbench/services/*/~",
"vs/workbench/contrib/*/~",
+ "vs/workbench/contrib/terminal/terminalContribExports*",
"vscode-notebook-renderer", // Type only import
{
"when": "hasBrowser",
@@ -901,6 +982,7 @@
// Only allow terminalContrib to import from itself, this works because
// terminalContrib is one extra folder deep
"vs/workbench/contrib/terminalContrib/*/~",
+ "vs/workbench/contrib/terminal/terminalContribExports*",
"vscode-notebook-renderer", // Type only import
{
"when": "hasBrowser",
@@ -913,7 +995,8 @@
{
"when": "hasBrowser",
"pattern": "vscode-textmate"
- } // node module allowed even in /browser/
+ }, // node module allowed even in /browser/
+ "@xterm/headless" // node module allowed even in /common/ and /browser/
]
},
{
@@ -929,6 +1012,18 @@
"when": "hasBrowser",
"pattern": "vs/workbench/workbench.web.main"
},
+ {
+ "when": "hasBrowser",
+ "pattern": "vs/workbench/workbench.web.main.js"
+ },
+ {
+ "when": "hasBrowser",
+ "pattern": "vs/workbench/workbench.web.main.internal"
+ },
+ {
+ "when": "hasBrowser",
+ "pattern": "vs/workbench/workbench.web.main.internal.js"
+ },
{
"when": "hasBrowser",
"pattern": "vs/workbench/~"
@@ -959,6 +1054,13 @@
"vs/workbench/contrib/**"
]
},
+ {
+ "target": "src/vs/workbench/contrib/terminal/terminalContribExports.ts",
+ "layer": "browser",
+ "restrictions": [
+ "vs/workbench/contrib/terminalContrib/*/~"
+ ]
+ },
{
"target": "src/vs/workbench/workbench.common.main.ts",
"layer": "browser",
@@ -969,11 +1071,13 @@
"vs/editor/~",
"vs/editor/contrib/*/~",
"vs/editor/editor.all",
+ "vs/editor/editor.all.js",
"vs/workbench/~",
"vs/workbench/api/~",
"vs/workbench/services/*/~",
"vs/workbench/contrib/*/~",
- "vs/workbench/contrib/terminal/terminal.all"
+ "vs/workbench/contrib/terminal/terminal.all",
+ "vs/workbench/contrib/terminal/terminal.all.js"
]
},
{
@@ -986,11 +1090,32 @@
"vs/editor/~",
"vs/editor/contrib/*/~",
"vs/editor/editor.all",
+ "vs/editor/editor.all.js",
+ "vs/workbench/~",
+ "vs/workbench/api/~",
+ "vs/workbench/services/*/~",
+ "vs/workbench/contrib/*/~",
+ "vs/workbench/workbench.common.main",
+ "vs/workbench/workbench.common.main.js"
+ ]
+ },
+ {
+ "target": "src/vs/workbench/workbench.web.main.internal.ts",
+ "layer": "browser",
+ "restrictions": [
+ "vs/base/~",
+ "vs/base/parts/*/~",
+ "vs/platform/*/~",
+ "vs/editor/~",
+ "vs/editor/contrib/*/~",
+ "vs/editor/editor.all",
+ "vs/editor/editor.all.js",
"vs/workbench/~",
"vs/workbench/api/~",
"vs/workbench/services/*/~",
"vs/workbench/contrib/*/~",
- "vs/workbench/workbench.common.main"
+ "vs/workbench/workbench.common.main",
+ "vs/workbench/workbench.common.main.js"
]
},
{
@@ -1003,11 +1128,13 @@
"vs/editor/~",
"vs/editor/contrib/*/~",
"vs/editor/editor.all",
+ "vs/editor/editor.all.js",
"vs/workbench/~",
"vs/workbench/api/~",
"vs/workbench/services/*/~",
"vs/workbench/contrib/*/~",
- "vs/workbench/workbench.common.main"
+ "vs/workbench/workbench.common.main",
+ "vs/workbench/workbench.common.main.js"
]
},
{
@@ -1017,11 +1144,7 @@
]
},
{
- "target": "src/vs/workbench/{workbench.desktop.main.nls.js,workbench.web.main.nls.js}",
- "restrictions": []
- },
- {
- "target": "src/vs/{loader.d.ts,css.ts,css.build.ts,monaco.d.ts,nls.ts,nls.build.ts,nls.mock.ts}",
+ "target": "src/vs/{loader.d.ts,css.ts,css.build.ts,monaco.d.ts,nls.ts,nls.messages.ts}",
"restrictions": []
},
{
@@ -1029,7 +1152,7 @@
"restrictions": []
},
{
- "target": "src/{bootstrap-amd.js,bootstrap-fork.js,bootstrap-node.js,bootstrap-window.js,bootstrap.js,cli.js,main.js,server-cli.js,server-main.js}",
+ "target": "src/{bootstrap-amd.js,bootstrap-fork.js,bootstrap-node.js,bootstrap-window.js,cli.js,main.js,server-cli.js,server-main.js,bootstrap-cli.js,bootstrap-server.js}",
"restrictions": []
}
]
@@ -1095,7 +1218,9 @@
"local/code-no-runtime-import": [
"error",
{
- "src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts": ["**/*"]
+ "src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts": [
+ "**/*"
+ ]
}
]
}
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index c0c9a544148..203e213b629 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -26,3 +26,6 @@ ee1655a82ebdfd38bf8792088a6602c69f7bbd94
# jrieken: new eslint-rule
4a130c40ed876644ed8af2943809d08221375408
+
+# bpasero: ESM migration
+6b924c51528e663dda5091a1493229a361676aca
diff --git a/.github/workflows/no-package-lock-changes.yml b/.github/workflows/no-package-lock-changes.yml
new file mode 100644
index 00000000000..45d5d17407b
--- /dev/null
+++ b/.github/workflows/no-package-lock-changes.yml
@@ -0,0 +1,31 @@
+name: Prevent package-lock.json changes in PRs
+on: [pull_request]
+
+jobs:
+ main:
+ name: Prevent package-lock.json changes in PRs
+ runs-on: ubuntu-latest
+ steps:
+ - uses: octokit/request-action@v2.x
+ id: get_permissions
+ with:
+ route: GET /repos/microsoft/vscode/collaborators/{username}/permission
+ username: ${{ github.event.pull_request.user.login }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Set control output variable
+ id: control
+ run: |
+ echo "user: ${{ github.event.pull_request.user.login }}"
+ echo "role: ${{ fromJson(steps.get_permissions.outputs.data).permission }}"
+ echo "is dependabot: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}"
+ echo "should_run: ${{ !contains(fromJson('["admin", "maintain", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) }}"
+ echo "should_run=${{ !contains(fromJson('["admin", "maintain", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) && github.event.pull_request.user.login != 'dependabot[bot]' }}" >> $GITHUB_OUTPUT
+ - name: Get file changes
+ uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272
+ if: ${{ steps.control.outputs.should_run == 'true' }}
+ - name: Check for lockfile changes
+ if: ${{ steps.control.outputs.should_run == 'true' }}
+ run: |
+ cat $HOME/files.json | jq -e 'any(test("package-lock\\.json$|Cargo\\.lock$")) | not' \
+ || (echo "Changes to package-lock.json/Cargo.lock files aren't allowed in PRs." && exit 1)
diff --git a/.gitignore b/.gitignore
index 123b3567059..b73ce578e7f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,7 @@ build/node_modules
coverage/
test_data/
test-results/
-yarn-error.log
+test-results.xml
vscode.lsif
vscode.db
/.profile-oss
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 00000000000..6ab9824d0be
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,7 @@
+disturl="https://electronjs.org/headers"
+target="30.5.0"
+ms_build_id="10198947"
+runtime="electron"
+build_from_source="true"
+legacy-peer-deps="true"
+timeout=180000
diff --git a/.nvmrc b/.nvmrc
index bc78e9f2695..8ce7030825b 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-20.12.1
+20.16.0
diff --git a/.vscode-test.js b/.vscode-test.js
index f2db8d695fe..89e1b855ee0 100644
--- a/.vscode-test.js
+++ b/.vscode-test.js
@@ -45,6 +45,10 @@ const extensions = [
label: 'github-authentication',
workspaceFolder: path.join(os.tmpdir(), `msft-auth-${Math.floor(Math.random() * 100000)}`),
mocha: { timeout: 60_000 }
+ },
+ {
+ label: 'microsoft-authentication',
+ mocha: { timeout: 60_000 }
}
];
diff --git a/.vscode/extensions/vscode-selfhost-import-aid/.vscode/launch.json b/.vscode/extensions/vscode-selfhost-import-aid/.vscode/launch.json
new file mode 100644
index 00000000000..50b8aedaf72
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-import-aid/.vscode/launch.json
@@ -0,0 +1,16 @@
+{
+ "configurations": [
+ {
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}",
+ "--enable-proposed-api=ms-vscode.vscode-selfhost-import-aid"
+ ],
+ "name": "Launch Extension",
+ "outFiles": [
+ "${workspaceFolder}/out/**/*.js"
+ ],
+ "request": "launch",
+ "type": "extensionHost"
+ }
+ ]
+}
diff --git a/.vscode/extensions/vscode-selfhost-import-aid/.vscode/settings.json b/.vscode/extensions/vscode-selfhost-import-aid/.vscode/settings.json
new file mode 100644
index 00000000000..e4429caeee4
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-import-aid/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+ "editor.formatOnSave": true,
+ "editor.defaultFormatter": "vscode.typescript-language-features",
+ "editor.codeActionsOnSave": {
+ "source.organizeImports": "always"
+ }
+}
diff --git a/.vscode/extensions/vscode-selfhost-import-aid/package-lock.json b/.vscode/extensions/vscode-selfhost-import-aid/package-lock.json
new file mode 100644
index 00000000000..5f526aca3e9
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-import-aid/package-lock.json
@@ -0,0 +1,31 @@
+{
+ "name": "vscode-selfhost-import-aid",
+ "version": "0.0.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "vscode-selfhost-import-aid",
+ "version": "0.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "typescript": "5.5.4"
+ },
+ "engines": {
+ "vscode": "^1.88.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+ "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ }
+ }
+}
diff --git a/.vscode/extensions/vscode-selfhost-import-aid/package.json b/.vscode/extensions/vscode-selfhost-import-aid/package.json
new file mode 100644
index 00000000000..30f09f9c8e5
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-import-aid/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "vscode-selfhost-import-aid",
+ "displayName": "VS Code Selfhost Import Aid",
+ "description": "Util to improve dealing with imports",
+ "engines": {
+ "vscode": "^1.88.0"
+ },
+ "version": "0.0.1",
+ "publisher": "ms-vscode",
+ "categories": [
+ "Other"
+ ],
+ "activationEvents": [
+ "onLanguage:typescript"
+ ],
+ "main": "./out/extension.js",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/microsoft/vscode.git"
+ },
+ "license": "MIT",
+ "scripts": {
+ "compile": "gulp compile-extension:vscode-selfhost-import-aid",
+ "watch": "gulp watch-extension:vscode-selfhost-import-aid"
+ },
+ "dependencies": {
+ "typescript": "5.5.4"
+ }
+}
diff --git a/.vscode/extensions/vscode-selfhost-import-aid/src/extension.ts b/.vscode/extensions/vscode-selfhost-import-aid/src/extension.ts
new file mode 100644
index 00000000000..91627e69f34
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-import-aid/src/extension.ts
@@ -0,0 +1,234 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as vscode from 'vscode';
+import * as ts from 'typescript';
+import * as path from 'path';
+
+export async function activate(context: vscode.ExtensionContext) {
+
+ const fileIndex = new class {
+
+ private _currentRun?: Thenable;
+
+ private _disposables: vscode.Disposable[] = [];
+
+ private readonly _index = new Map();
+
+ constructor() {
+ const watcher = vscode.workspace.createFileSystemWatcher('**/*.ts', false, true, false);
+ this._disposables.push(watcher.onDidChange(e => { this._index.set(e.toString(), e); }));
+ this._disposables.push(watcher.onDidDelete(e => { this._index.delete(e.toString()); }));
+ this._disposables.push(watcher);
+
+ this._refresh(false);
+ }
+
+ dispose(): void {
+ for (const disposable of this._disposables) {
+ disposable.dispose();
+ }
+ this._disposables = [];
+ this._index.clear();
+ }
+
+ async all(token: vscode.CancellationToken) {
+
+ await Promise.race([this._currentRun, new Promise(resolve => token.onCancellationRequested(resolve))]);
+
+ if (token.isCancellationRequested) {
+ return undefined;
+ }
+
+ return Array.from(this._index.values());
+ }
+
+ private _refresh(clear: boolean) {
+ // TODO@jrieken LATEST API! findFiles2New
+ this._currentRun = vscode.workspace.findFiles('src/vs/**/*.ts', '{**/node_modules/**,**/extensions/**}').then(all => {
+ if (clear) {
+ this._index.clear();
+ }
+ for (const item of all) {
+ this._index.set(item.toString(), item);
+ }
+ });
+ }
+ };
+
+ const selector: vscode.DocumentSelector = 'typescript';
+
+ function findNodeAtPosition(document: vscode.TextDocument, node: ts.Node, position: vscode.Position): ts.Node | undefined {
+ if (node.getStart() <= document.offsetAt(position) && node.getEnd() >= document.offsetAt(position)) {
+ return ts.forEachChild(node, child => findNodeAtPosition(document, child, position)) || node;
+ }
+ return undefined;
+ }
+
+ function findImportAt(document: vscode.TextDocument, position: vscode.Position): ts.ImportDeclaration | undefined {
+ const sourceFile = ts.createSourceFile(document.fileName, document.getText(), ts.ScriptTarget.Latest, true);
+ const node = findNodeAtPosition(document, sourceFile, position);
+ if (node && ts.isStringLiteral(node) && ts.isImportDeclaration(node.parent)) {
+ return node.parent;
+ }
+ return undefined;
+ }
+
+ const completionProvider = new class implements vscode.CompletionItemProvider {
+ async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Promise {
+
+ const index = document.getText().lastIndexOf(' from \'');
+ if (index < 0 || document.positionAt(index).line < position.line) {
+ // line after last import is before position
+ // -> no completion, safe a parse call
+ return undefined;
+ }
+
+ const node = findImportAt(document, position);
+ if (!node) {
+ return undefined;
+ }
+
+ const range = new vscode.Range(document.positionAt(node.moduleSpecifier.pos), document.positionAt(node.moduleSpecifier.end));
+ const uris = await fileIndex.all(token);
+
+ if (!uris) {
+ return undefined;
+ }
+
+ const result = new vscode.CompletionList();
+ result.isIncomplete = true;
+
+ for (const item of uris) {
+
+ if (!item.path.endsWith('.ts')) {
+ continue;
+ }
+
+ let relativePath = path.relative(path.dirname(document.uri.path), item.path);
+ relativePath = relativePath.startsWith('.') ? relativePath : `./${relativePath}`;
+
+ const label = path.basename(item.path, path.extname(item.path));
+ const insertText = ` '${relativePath.replace(/\.ts$/, '.js')}'`;
+ const filterText = ` '${label}'`;
+
+ const completion = new vscode.CompletionItem({
+ label: label,
+ description: vscode.workspace.asRelativePath(item),
+ });
+ completion.kind = vscode.CompletionItemKind.File;
+ completion.insertText = insertText;
+ completion.filterText = filterText;
+ completion.range = range;
+
+ result.items.push(completion);
+ }
+
+ return result;
+ }
+ };
+
+ class ImportCodeActions implements vscode.CodeActionProvider {
+
+ static FixKind = vscode.CodeActionKind.QuickFix.append('esmImport');
+
+ static SourceKind = vscode.CodeActionKind.SourceFixAll.append('esmImport');
+
+ async provideCodeActions(document: vscode.TextDocument, range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise {
+
+ if (context.only && ImportCodeActions.SourceKind.intersects(context.only)) {
+ return this._provideFixAll(document, context, token);
+ }
+
+ return this._provideFix(document, range, context, token);
+ }
+
+ private async _provideFixAll(document: vscode.TextDocument, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise {
+
+ const diagnostics = context.diagnostics
+ .filter(d => d.code === 2307)
+ .sort((a, b) => b.range.start.compareTo(a.range.start));
+
+ if (diagnostics.length === 0) {
+ return undefined;
+ }
+
+ const uris = await fileIndex.all(token);
+ if (!uris) {
+ return undefined;
+ }
+
+ const result = new vscode.CodeAction(`Fix All ESM Imports`, ImportCodeActions.SourceKind);
+ result.edit = new vscode.WorkspaceEdit();
+ result.diagnostics = [];
+
+ for (const diag of diagnostics) {
+
+ const actions = this._provideFixesForDiag(document, diag, uris);
+
+ if (actions.length === 0) {
+ console.log(`ESM: no fixes for "${diag.message}"`);
+ continue;
+ }
+
+ if (actions.length > 1) {
+ console.log(`ESM: more than one fix for "${diag.message}", taking first`);
+ console.log(actions);
+ }
+
+ const [first] = actions;
+ result.diagnostics.push(diag);
+
+ for (const [uri, edits] of first.edit!.entries()) {
+ result.edit.set(uri, edits);
+ }
+ }
+ // console.log(result.edit.get(document.uri));
+ return [result];
+ }
+
+ private async _provideFix(document: vscode.TextDocument, range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise {
+ const uris = await fileIndex.all(token);
+ if (!uris) {
+ return [];
+ }
+
+ const diag = context.diagnostics.find(d => d.code === 2307 && d.range.intersection(range));
+ return diag && this._provideFixesForDiag(document, diag, uris);
+ }
+
+ private _provideFixesForDiag(document: vscode.TextDocument, diag: vscode.Diagnostic, uris: Iterable): vscode.CodeAction[] {
+
+ const node = findImportAt(document, diag.range.start)?.moduleSpecifier;
+ if (!node || !ts.isStringLiteral(node)) {
+ return [];
+ }
+
+ const nodeRange = new vscode.Range(document.positionAt(node.pos), document.positionAt(node.end));
+ const name = path.basename(node.text, path.extname(node.text));
+
+ const result: vscode.CodeAction[] = [];
+
+ for (const item of uris) {
+ if (path.basename(item.path, path.extname(item.path)) === name) {
+ let relativePath = path.relative(path.dirname(document.uri.path), item.path).replace(/\.ts$/, '.js');
+ relativePath = relativePath.startsWith('.') ? relativePath : `./${relativePath}`;
+
+ const action = new vscode.CodeAction(`Fix to '${relativePath}'`, ImportCodeActions.FixKind);
+ action.edit = new vscode.WorkspaceEdit();
+ action.edit.replace(document.uri, nodeRange, ` '${relativePath}'`);
+ action.diagnostics = [diag];
+ result.push(action);
+ }
+ }
+
+ return result;
+ }
+ }
+
+ context.subscriptions.push(fileIndex);
+ context.subscriptions.push(vscode.languages.registerCompletionItemProvider(selector, completionProvider));
+ context.subscriptions.push(vscode.languages.registerCodeActionsProvider(selector, new ImportCodeActions(), { providedCodeActionKinds: [ImportCodeActions.FixKind, ImportCodeActions.SourceKind] }));
+}
diff --git a/.vscode/extensions/vscode-selfhost-import-aid/tsconfig.json b/.vscode/extensions/vscode-selfhost-import-aid/tsconfig.json
new file mode 100644
index 00000000000..bbca76708ca
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-import-aid/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "../../../extensions/tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "./out",
+ "types": [
+ "node",
+ "mocha",
+ ]
+ },
+ "include": [
+ "src/**/*",
+ "../../../src/vscode-dts/vscode.d.ts"
+ ]
+}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/package-lock.json b/.vscode/extensions/vscode-selfhost-test-provider/package-lock.json
new file mode 100644
index 00000000000..a71a68e4e36
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-test-provider/package-lock.json
@@ -0,0 +1,101 @@
+{
+ "name": "vscode-selfhost-test-provider",
+ "version": "0.4.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "vscode-selfhost-test-provider",
+ "version": "0.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "ansi-styles": "^5.2.0",
+ "cockatiel": "^3.1.3",
+ "istanbul-to-vscode": "^2.0.1"
+ },
+ "devDependencies": {
+ "@types/mocha": "^10.0.6",
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "^1.88.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="
+ },
+ "node_modules/@types/mocha": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz",
+ "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.12.11",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz",
+ "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cockatiel": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.3.tgz",
+ "integrity": "sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ==",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/istanbul-to-vscode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-to-vscode/-/istanbul-to-vscode-2.0.1.tgz",
+ "integrity": "sha512-V9Hhr7kX3UvkvkaT1lK3AmCRPkaIAIogQBrduTpNiLTkp1eVsybnJhWiDSVeCQap/3aGeZ2019oIivhX9MNsCQ==",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.6"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ }
+ }
+}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/package.json b/.vscode/extensions/vscode-selfhost-test-provider/package.json
index f472098cd14..3548b00ba81 100644
--- a/.vscode/extensions/vscode-selfhost-test-provider/package.json
+++ b/.vscode/extensions/vscode-selfhost-test-provider/package.json
@@ -4,6 +4,7 @@
"description": "Test provider for the VS Code project",
"enabledApiProposals": [
"testObserver",
+ "testRelatedCode",
"attributableCoverage"
],
"engines": {
@@ -83,6 +84,7 @@
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"ansi-styles": "^5.2.0",
+ "cockatiel": "^3.1.3",
"istanbul-to-vscode": "^2.0.1"
}
}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/src/extension.ts b/.vscode/extensions/vscode-selfhost-test-provider/src/extension.ts
index 491f67ee300..2732ef3b3f6 100644
--- a/.vscode/extensions/vscode-selfhost-test-provider/src/extension.ts
+++ b/.vscode/extensions/vscode-selfhost-test-provider/src/extension.ts
@@ -20,6 +20,7 @@ import {
itemData,
} from './testTree';
import { BrowserTestRunner, PlatformTestRunner, VSCodeTestRunner } from './vscodeTestRunner';
+import { ImportGraph } from './importGraph';
const TEST_FILE_PATTERN = 'src/vs/**/*.{test,integrationTest}.ts';
@@ -51,10 +52,15 @@ export async function activate(context: vscode.ExtensionContext) {
},
}));
-
- ctrl.resolveHandler = async test => {
+ let initialWatchPromise: Promise | undefined;
+ const resolveHandler = async (test?: vscode.TestItem) => {
if (!test) {
- context.subscriptions.push(await startWatchingWorkspace(ctrl, fileChangedEmitter));
+ if (!initialWatchPromise) {
+ initialWatchPromise = startWatchingWorkspace(ctrl, fileChangedEmitter);
+ context.subscriptions.push(await initialWatchPromise);
+ } else {
+ await initialWatchPromise;
+ }
return;
}
@@ -66,10 +72,24 @@ export async function activate(context: vscode.ExtensionContext) {
}
};
+ ctrl.resolveHandler = resolveHandler;
+
guessWorkspaceFolder().then(folder => {
- if (folder) {
- context.subscriptions.push(new FailureTracker(context, folder.uri.fsPath));
+ if (!folder) {
+ return;
}
+
+ const graph = new ImportGraph(
+ folder.uri, async () => {
+ await resolveHandler();
+ return [...ctrl.items].map(([, item]) => item);
+ }, uri => ctrl.items.get(uri.toString().toLowerCase()));
+ ctrl.relatedCodeProvider = graph;
+
+ context.subscriptions.push(
+ new FailureTracker(context, folder.uri.fsPath),
+ fileChangedEmitter.event(e => graph.didChange(e.uri, e.removed)),
+ );
});
const createRunHandler = (
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/src/importGraph.ts b/.vscode/extensions/vscode-selfhost-test-provider/src/importGraph.ts
new file mode 100644
index 00000000000..ab3c25720ac
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-test-provider/src/importGraph.ts
@@ -0,0 +1,239 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { join } from 'path';
+import * as vscode from 'vscode';
+import { bulkhead } from 'cockatiel';
+import { promises as fs } from 'fs';
+
+const maxInt32 = 2 ** 31 - 1;
+
+// limit concurrency to avoid overwhelming the filesystem during discovery
+const discoverLimiter = bulkhead(8, Infinity);
+
+// Max import distance when listing related code to improve relevancy.
+const defaultMaxDistance = 3;
+
+/**
+ * Maintains a graph of imports in the codebase. This works lazily resolving
+ * imports and re-parsing files only on request.
+ *
+ * This is a rough, file-level graph derived from simple regex matching on
+ * source files to avoid having to parse the AST of every file in the codebase,
+ * which is possible but more intensive. (See: all the years of work from the
+ * TS language server.)
+ *
+ * A more advanced implementation could use references from the language server.
+ */
+export class ImportGraph implements vscode.TestRelatedCodeProvider {
+ private graph = new Map();
+
+ constructor(
+ private readonly root: vscode.Uri,
+ private readonly discoverWorkspaceTests: () => Thenable,
+ private readonly getTestNodeForDoc: (uri: vscode.Uri) => vscode.TestItem | undefined,
+ ) { }
+
+ /** @inheritdoc */
+ public async provideRelatedCode(test: vscode.TestItem, token: vscode.CancellationToken): Promise {
+ // this is kind of a stub for this implementation. Naive following imports
+ // isn't that useful for finding a test's related code.
+ const node = await this.discoverOutwards(test.uri, new Set(), defaultMaxDistance, token);
+ if (!node) {
+ return [];
+ }
+
+ const imports = new Set();
+ const queue = [{ distance: 0, next: node.imports }];
+ while (queue.length) {
+ const { distance, next } = queue.shift()!;
+ for (const imp of next) {
+ if (imports.has(imp.path)) {
+ continue;
+ }
+
+ imports.add(imp.path);
+ if (distance < defaultMaxDistance) {
+ queue.push({ next: imp.imports, distance: distance + 1 });
+ }
+ }
+ }
+
+ return [...imports].map(importPath =>
+ new vscode.Location(
+ vscode.Uri.file(join(this.root.fsPath, 'src', `${importPath}.ts`)),
+ new vscode.Range(0, 0, maxInt32, 0),
+ ),
+ );
+ }
+
+ /** @inheritdoc */
+ public async provideRelatedTests(document: vscode.TextDocument, _position: vscode.Position, token: vscode.CancellationToken): Promise {
+ // Expand all known tests to ensure imports of this file are realized.
+ const rootTests = await this.discoverWorkspaceTests();
+ const seen = new Set();
+ await Promise.all(rootTests.map(v => v.uri && this.discoverOutwards(v.uri, seen, defaultMaxDistance, token)));
+
+ const node = this.getNode(document.uri);
+ if (!node) {
+ return [];
+ }
+
+ const tests: vscode.TestItem[] = [];
+ const queue: { next: FileNode; distance: number }[] = [{ next: node, distance: 0 }];
+ const visited = new Set();
+ let maxDistance = Infinity;
+
+ while (queue.length) {
+ const { next, distance } = queue.shift()!;
+ if (visited.has(next)) {
+ continue;
+ }
+
+ visited.add(next);
+ const testForDoc = this.getTestNodeForDoc(next.uri);
+ if (testForDoc) {
+ tests.push(testForDoc);
+ // only look for tests half again as far away as the closest test to keep things relevant
+ if (!Number.isFinite(maxDistance)) {
+ maxDistance = distance * 3 / 2;
+ }
+ }
+
+ if (distance < maxDistance) {
+ for (const importedByNode of next.importedBy) {
+ queue.push({ next: importedByNode, distance: distance + 1 });
+ }
+ }
+ }
+
+ return tests;
+ }
+
+ public didChange(uri: vscode.Uri, deleted: boolean) {
+ const rel = this.uriToImportPath(uri);
+ const node = rel && this.graph.get(rel);
+ if (!node) {
+ return;
+ }
+
+ if (deleted) {
+ this.graph.delete(rel);
+ for (const imp of node.imports) {
+ imp.importedBy.delete(node);
+ }
+ } else {
+ node.isSynced = false;
+ }
+ }
+
+ private getNode(uri: vscode.Uri | undefined): FileNode | undefined {
+ const rel = this.uriToImportPath(uri);
+ return rel ? this.graph.get(rel) : undefined;
+ }
+
+ /** Discover all nodes that import the file */
+ private async discoverOutwards(uri: vscode.Uri | undefined, seen: Set, maxDistance: number, token: vscode.CancellationToken): Promise {
+ const rel = this.uriToImportPath(uri);
+ if (!rel) {
+ return undefined;
+ }
+
+ let node = this.graph.get(rel);
+ if (!node) {
+ node = new FileNode(uri!, rel);
+ this.graph.set(rel, node);
+ }
+
+ await this.discoverOutwardsInner(node, seen, maxDistance, token);
+ return node;
+ }
+
+ private async discoverOutwardsInner(node: FileNode, seen: Set, maxDistance: number, token: vscode.CancellationToken) {
+ if (seen.has(node.path) || maxDistance === 0) {
+ return;
+ }
+
+ seen.add(node.path);
+ if (node.isSynced === false) {
+ await this.syncNode(node);
+ } else if (node.isSynced instanceof Promise) {
+ await node.isSynced;
+ }
+
+ if (token.isCancellationRequested) {
+ return;
+ }
+ await Promise.all([...node.imports].map(i => this.discoverOutwardsInner(i, seen, maxDistance - 1, token)));
+ }
+
+ private async syncNode(node: FileNode) {
+ node.isSynced = discoverLimiter.execute(async () => {
+ const doc = vscode.workspace.textDocuments.find(d => d.uri.toString() === node.uri.toString());
+
+ let text: string;
+ if (doc) {
+ text = doc.getText();
+ } else {
+ try {
+ text = await fs.readFile(node.uri.fsPath, 'utf8');
+ } catch {
+ text = '';
+ }
+ }
+
+ for (const imp of node.imports) {
+ imp.importedBy.delete(node);
+ }
+ node.imports.clear();
+
+ for (const [, importPath] of text.matchAll(IMPORT_RE)) {
+ let imp = this.graph.get(importPath);
+ if (!imp) {
+ imp = new FileNode(this.importPathToUri(importPath), importPath);
+ this.graph.set(importPath, imp);
+ }
+
+ imp.importedBy.add(node);
+ node.imports.add(imp);
+ }
+
+ node.isSynced = true;
+ });
+
+ await node.isSynced;
+ }
+
+ private uriToImportPath(uri: vscode.Uri | undefined) {
+ if (!uri) {
+ return undefined;
+ }
+
+ const relativePath = vscode.workspace.asRelativePath(uri).replaceAll('\\', '/');
+ if (!relativePath.startsWith('src/vs/') || !relativePath.endsWith('.ts')) {
+ return undefined;
+ }
+
+ return relativePath.slice('src/'.length, -'.ts'.length);
+ }
+
+ private importPathToUri(importPath: string) {
+ return vscode.Uri.file(join(this.root.fsPath, 'src', `${importPath}.ts`));
+ }
+}
+
+const IMPORT_RE = /import .*? from ["'](vs\/[^"']+)/g;
+
+class FileNode {
+ public imports = new Set();
+ public importedBy = new Set();
+ public isSynced: boolean | Promise = false;
+
+ // Path is the *import path* starting with `vs/`
+ constructor(
+ public readonly uri: vscode.Uri,
+ public readonly path: string,
+ ) { }
+}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts b/.vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts
index 56b26cafda8..3ed21cf5810 100644
--- a/.vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts
+++ b/.vscode/extensions/vscode-selfhost-test-provider/src/sourceUtils.ts
@@ -8,6 +8,7 @@ import * as vscode from 'vscode';
import { TestCase, TestConstruct, TestSuite, VSCodeTest } from './testTree';
const suiteNames = new Set(['suite', 'flakySuite']);
+const testNames = new Set(['test']);
export const enum Action {
Skip,
@@ -19,22 +20,19 @@ export const extractTestFromNode = (src: ts.SourceFile, node: ts.Node, parent: V
return Action.Recurse;
}
- let lhs = node.expression;
- if (isSkipCall(lhs)) {
+ const asSuite = identifyCall(node.expression, suiteNames);
+ const asTest = identifyCall(node.expression, testNames);
+ const either = asSuite || asTest;
+ if (either === IdentifiedCall.Skipped) {
return Action.Skip;
}
-
- if (isPropertyCall(lhs) && lhs.name.text === 'only') {
- lhs = lhs.expression;
+ if (either === IdentifiedCall.Nothing) {
+ return Action.Recurse;
}
const name = node.arguments[0];
const func = node.arguments[1];
- if (!name || !ts.isIdentifier(lhs) || !ts.isStringLiteralLike(name)) {
- return Action.Recurse;
- }
-
- if (!func) {
+ if (!name || !ts.isStringLiteralLike(name) || !func) {
return Action.Recurse;
}
@@ -46,23 +44,45 @@ export const extractTestFromNode = (src: ts.SourceFile, node: ts.Node, parent: V
);
const cparent = parent instanceof TestConstruct ? parent : undefined;
- if (lhs.escapedText === 'test') {
+
+ // we know this is either a suite or a test because we checked for skipped/nothing above
+
+ if (asTest) {
return new TestCase(name.text, range, cparent);
}
- if (suiteNames.has(lhs.escapedText.toString())) {
+ if (asSuite) {
return new TestSuite(name.text, range, cparent);
}
- return Action.Recurse;
+ throw new Error('unreachable');
+};
+
+const enum IdentifiedCall {
+ Nothing,
+ Skipped,
+ IsThing,
+}
+
+const identifyCall = (lhs: ts.Node, needles: ReadonlySet): IdentifiedCall => {
+ if (ts.isIdentifier(lhs)) {
+ return needles.has(lhs.escapedText || lhs.text) ? IdentifiedCall.IsThing : IdentifiedCall.Nothing;
+ }
+
+ if (isPropertyCall(lhs) && lhs.name.text === 'skip') {
+ return needles.has(lhs.expression.text) ? IdentifiedCall.Skipped : IdentifiedCall.Nothing;
+ }
+
+ if (ts.isParenthesizedExpression(lhs) && ts.isConditionalExpression(lhs.expression)) {
+ return Math.max(identifyCall(lhs.expression.whenTrue, needles), identifyCall(lhs.expression.whenFalse, needles));
+ }
+
+ return IdentifiedCall.Nothing;
};
const isPropertyCall = (
- lhs: ts.LeftHandSideExpression
+ lhs: ts.Node
): lhs is ts.PropertyAccessExpression & { expression: ts.Identifier; name: ts.Identifier } =>
ts.isPropertyAccessExpression(lhs) &&
ts.isIdentifier(lhs.expression) &&
ts.isIdentifier(lhs.name);
-
-const isSkipCall = (lhs: ts.LeftHandSideExpression) =>
- isPropertyCall(lhs) && suiteNames.has(lhs.expression.text) && lhs.name.text === 'skip';
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/src/stackTraceParser.ts b/.vscode/extensions/vscode-selfhost-test-provider/src/stackTraceParser.ts
new file mode 100644
index 00000000000..ca3236ce96a
--- /dev/null
+++ b/.vscode/extensions/vscode-selfhost-test-provider/src/stackTraceParser.ts
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+// Copied from https://github.com/microsoft/vscode-js-debug/blob/1d104b5184736677ab5cc280c70bbd227403850c/src/common/stackTraceParser.ts#L18
+
+// Either match lines like
+// " at fulfilled (/Users/roblou/code/testapp-node2/out/app.js:5:58)"
+// or
+// " at /Users/roblou/code/testapp-node2/out/app.js:60:23"
+// and replace the path in them
+const re1 = /^(\W*at .*\()(.*):(\d+):(\d+)(\))$/;
+const re2 = /^(\W*at )(.*):(\d+):(\d+)$/;
+
+const getLabelRe = /^\W*at (.*) \($/;
+
+/**
+ * Parses a textual stack trace.
+ */
+export class StackTraceParser {
+ /** Gets whether the stacktrace has any locations in it. */
+ public static isStackLike(str: string) {
+ return re1.test(str) || re2.test(str);
+ }
+ constructor(private readonly stack: string) { }
+
+ /** Iterates over segments of text and locations in the stack. */
+ *[Symbol.iterator]() {
+ for (const line of this.stack.split('\n')) {
+ const match = re1.exec(line) || re2.exec(line);
+ if (!match) {
+ yield line + '\n';
+ continue;
+ }
+
+ const [, prefix, url, lineNo, columnNo, suffix] = match;
+ if (prefix) {
+ yield prefix;
+ }
+
+ yield new StackTraceLocation(getLabelRe.exec(prefix)?.[1], url, Number(lineNo), Number(columnNo));
+
+ if (suffix) {
+ yield suffix;
+ }
+
+ yield '\n';
+ }
+ }
+}
+
+export class StackTraceLocation {
+ constructor(
+ public readonly label: string | undefined,
+ public readonly path: string,
+ public readonly lineBase1: number,
+ public readonly columnBase1: number,
+ ) { }
+}
\ No newline at end of file
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts b/.vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts
index b5a448aaba1..296ed1e9f12 100644
--- a/.vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts
+++ b/.vscode/extensions/vscode-selfhost-test-provider/src/testOutputScanner.ts
@@ -16,6 +16,7 @@ import * as vscode from 'vscode';
import { istanbulCoverageContext, PerTestCoverageTracker } from './coverageProvider';
import { attachTestMessageMetadata } from './metadata';
import { snapshotComment } from './snapshot';
+import { StackTraceLocation, StackTraceParser } from './stackTraceParser';
import { StreamSplitter } from './streamSplitter';
import { getContentFromFilesystem } from './testTree';
import { IScriptCoverage } from './v8CoverageWrangling';
@@ -288,7 +289,7 @@ export async function scanTestOutput(
enqueueExitBlocker(
(async () => {
- const location = await tryDeriveStackLocation(store, rawErr, tcase!);
+ const stackInfo = await deriveStackLocations(store, rawErr, tcase!);
let message: vscode.TestMessage;
if (hasDiff) {
@@ -310,7 +311,8 @@ export async function scanTestOutput(
);
}
- message.location = location ?? testFirstLine;
+ message.location = stackInfo.primary ?? testFirstLine;
+ message.stackTrace = stackInfo.stack;
task.failed(tcase!, message, duration);
})()
);
@@ -608,44 +610,38 @@ async function replaceAllLocations(store: SourceMapStore, str: string) {
return values.join('');
}
-async function tryDeriveStackLocation(
+async function deriveStackLocations(
store: SourceMapStore,
stack: string,
tcase: vscode.TestItem
) {
locationRe.lastIndex = 0;
- return new Promise(resolve => {
- const matches = [...stack.matchAll(locationRe)];
- let todo = matches.length;
- if (todo === 0) {
- return resolve(undefined);
+ const locationsRaw = [...new StackTraceParser(stack)].filter(t => t instanceof StackTraceLocation);
+ const locationsMapped = await Promise.all(locationsRaw.map(async location => {
+ const mapped = location.path.startsWith('file:') ? await store.getSourceLocation(location.path, location.lineBase1 - 1, location.columnBase1 - 1) : undefined;
+ const stack = new vscode.TestMessageStackFrame(location.label || '', mapped?.uri, mapped?.range.start || new vscode.Position(location.lineBase1 - 1, location.columnBase1 - 1));
+ return { location: mapped, stack };
+ }));
+
+ let best: undefined | { location: vscode.Location; score: number };
+ for (const { location } of locationsMapped) {
+ if (!location) {
+ continue;
}
-
- let best: undefined | { location: vscode.Location; i: number; score: number };
- for (const [i, match] of matches.entries()) {
- deriveSourceLocation(store, match)
- .catch(() => undefined)
- .then(location => {
- if (location) {
- let score = 0;
- if (tcase.uri && tcase.uri.toString() === location.uri.toString()) {
- score = 1;
- if (tcase.range && tcase.range.contains(location?.range)) {
- score = 2;
- }
- }
- if (!best || score > best.score || (score === best.score && i < best.i)) {
- best = { location, i, score };
- }
- }
-
- if (!--todo) {
- resolve(best?.location);
- }
- });
+ let score = 0;
+ if (tcase.uri && tcase.uri.toString() === location.uri.toString()) {
+ score = 1;
+ if (tcase.range && tcase.range.contains(location?.range)) {
+ score = 2;
+ }
+ }
+ if (!best || score > best.score) {
+ best = { location, score };
}
- });
+ }
+
+ return { stack: locationsMapped.map(s => s.stack), primary: best?.location };
}
async function deriveSourceLocation(store: SourceMapStore, parts: RegExpMatchArray) {
@@ -661,4 +657,4 @@ function findLastIndex(arr: T[], predicate: (value: T) => boolean) {
}
return -1;
-}
\ No newline at end of file
+}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/src/vscodeTestRunner.ts b/.vscode/extensions/vscode-selfhost-test-provider/src/vscodeTestRunner.ts
index 954b847f4a8..b5ffd440b33 100644
--- a/.vscode/extensions/vscode-selfhost-test-provider/src/vscodeTestRunner.ts
+++ b/.vscode/extensions/vscode-selfhost-test-provider/src/vscodeTestRunner.ts
@@ -63,7 +63,7 @@ export abstract class VSCodeTestRunner {
const cp = spawn(await this.binaryPath(), args, {
cwd: this.repoLocation.uri.fsPath,
stdio: 'pipe',
- env: this.getEnvironment(),
+ env: this.getEnvironment(port),
});
// Register a descriptor factory that signals the server when any
@@ -139,7 +139,7 @@ export abstract class VSCodeTestRunner {
});
}
- protected getEnvironment(): NodeJS.ProcessEnv {
+ protected getEnvironment(_remoteDebugPort?: number): NodeJS.ProcessEnv {
return {
...process.env,
ELECTRON_RUN_AS_NODE: undefined,
@@ -261,9 +261,10 @@ export class BrowserTestRunner extends VSCodeTestRunner {
}
/** @override */
- protected override getEnvironment() {
+ protected override getEnvironment(remoteDebugPort?: number) {
return {
- ...super.getEnvironment(),
+ ...super.getEnvironment(remoteDebugPort),
+ PLAYWRIGHT_CHROMIUM_DEBUG_PORT: remoteDebugPort ? String(remoteDebugPort) : undefined,
ELECTRON_RUN_AS_NODE: '1',
};
}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/tsconfig.json b/.vscode/extensions/vscode-selfhost-test-provider/tsconfig.json
index 9725e14041e..56d6859c3e3 100644
--- a/.vscode/extensions/vscode-selfhost-test-provider/tsconfig.json
+++ b/.vscode/extensions/vscode-selfhost-test-provider/tsconfig.json
@@ -11,6 +11,7 @@
"src/**/*",
"../../../src/vscode-dts/vscode.d.ts",
"../../../src/vscode-dts/vscode.proposed.testObserver.d.ts",
+ "../../../src/vscode-dts/vscode.proposed.testRelatedCode.d.ts",
"../../../src/vscode-dts/vscode.proposed.attributableCoverage.d.ts"
]
}
diff --git a/.vscode/extensions/vscode-selfhost-test-provider/yarn.lock b/.vscode/extensions/vscode-selfhost-test-provider/yarn.lock
deleted file mode 100644
index 50478f52c73..00000000000
--- a/.vscode/extensions/vscode-selfhost-test-provider/yarn.lock
+++ /dev/null
@@ -1,55 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@jridgewell/resolve-uri@^3.1.0":
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
- integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
-
-"@jridgewell/sourcemap-codec@^1.4.14":
- version "1.4.15"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
- integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-
-"@jridgewell/trace-mapping@^0.3.25":
- version "0.3.25"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
- integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
- dependencies:
- "@jridgewell/resolve-uri" "^3.1.0"
- "@jridgewell/sourcemap-codec" "^1.4.14"
-
-"@types/istanbul-lib-coverage@^2.0.6":
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7"
- integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==
-
-"@types/mocha@^10.0.6":
- version "10.0.6"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b"
- integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==
-
-"@types/node@20.x":
- version "20.12.11"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be"
- integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==
- dependencies:
- undici-types "~5.26.4"
-
-ansi-styles@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
- integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
-
-istanbul-to-vscode@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/istanbul-to-vscode/-/istanbul-to-vscode-2.0.1.tgz#84994d06e604b68cac7301840f338b1e74eb888b"
- integrity sha512-V9Hhr7kX3UvkvkaT1lK3AmCRPkaIAIogQBrduTpNiLTkp1eVsybnJhWiDSVeCQap/3aGeZ2019oIivhX9MNsCQ==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.6"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
diff --git a/.vscode/notebooks/api.github-issues b/.vscode/notebooks/api.github-issues
index 957ce5a9ee0..6b6a41f5135 100644
--- a/.vscode/notebooks/api.github-issues
+++ b/.vscode/notebooks/api.github-issues
@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "$REPO=repo:microsoft/vscode\n$MILESTONE=milestone:\"June 2024\""
+ "value": "$REPO=repo:microsoft/vscode\n$MILESTONE=milestone:\"September 2024\""
},
{
"kind": 1,
diff --git a/.vscode/notebooks/endgame.github-issues b/.vscode/notebooks/endgame.github-issues
index d7836922bad..450ba41835f 100644
--- a/.vscode/notebooks/endgame.github-issues
+++ b/.vscode/notebooks/endgame.github-issues
@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce\n\n$MILESTONE=milestone:\"May 2024\""
+ "value": "$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce\n\n$MILESTONE=milestone:\"August 2024\""
},
{
"kind": 1,
@@ -32,7 +32,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "$REPOS -$MILESTONE is:issue is:closed reason:completed label:bug label:insiders-released -label:verified -label:*duplicate -label:*as-designed -label:z-author-verified -label:on-testplan"
+ "value": "$REPOS -$MILESTONE is:issue is:closed reason:completed label:bug label:insiders-released -label:verified -label:*duplicate -label:*as-designed -label:z-author-verified -label:on-testplan -label:error-telemetry"
},
{
"kind": 1,
diff --git a/.vscode/notebooks/my-endgame.github-issues b/.vscode/notebooks/my-endgame.github-issues
index ce02ecfa577..df0f8a92998 100644
--- a/.vscode/notebooks/my-endgame.github-issues
+++ b/.vscode/notebooks/my-endgame.github-issues
@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce\n\n$MILESTONE=milestone:\"June 2024\"\n\n$MINE=assignee:@me"
+ "value": "$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce\n\n$MILESTONE=milestone:\"August 2024\"\n\n$MINE=assignee:@me"
},
{
"kind": 1,
@@ -157,7 +157,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "$REPOS $MILESTONE -$MINE is:issue is:closed reason:completed sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:*out-of-scope -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:andreamah -author:bamurtaugh -author:bpasero -author:chrisdias -author:chrmarti -author:Chuxel -author:claudiaregio -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:DonJayamanne -author:egamma -author:fiveisprime -author:gregvanl -author:hediet -author:isidorn -author:joaomoreno -author:joyceerhl -author:jrieken -author:kieferrm -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:rebornix -author:roblourens -author:rzhao271 -author:sandy081 -author:sbatten -author:stevencl -author:tanhakabir -author:TylerLeonhardt -author:Tyriar -author:weinand -author:amunger -author:karthiknadig -author:eleanorjboyd -author:Yoyokrazy -author:paulacamargo25 -author:ulugbekna -author:aiday-mar -author:daviddossett -author:bhavyaus -author:justschen -author:benibenj -author:luabud"
+ "value": "$REPOS $MILESTONE -$MINE is:issue is:closed reason:completed sort:updated-asc label:bug -label:unreleased -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:*out-of-scope -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:andreamah -author:bamurtaugh -author:bpasero -author:chrisdias -author:chrmarti -author:Chuxel -author:claudiaregio -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:DonJayamanne -author:egamma -author:fiveisprime -author:gregvanl -author:hediet -author:isidorn -author:joaomoreno -author:joyceerhl -author:jrieken -author:kieferrm -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:rebornix -author:roblourens -author:rzhao271 -author:sandy081 -author:sbatten -author:stevencl -author:tanhakabir -author:TylerLeonhardt -author:Tyriar -author:weinand -author:amunger -author:karthiknadig -author:eleanorjboyd -author:Yoyokrazy -author:paulacamargo25 -author:ulugbekna -author:aiday-mar -author:daviddossett -author:bhavyaus -author:justschen -author:benibenj -author:luabud -author:anthonykim1 -author:joshspicer"
},
{
"kind": 1,
diff --git a/.vscode/notebooks/my-work.github-issues b/.vscode/notebooks/my-work.github-issues
index 27fc3c2ecb5..5f54a2e5d91 100644
--- a/.vscode/notebooks/my-work.github-issues
+++ b/.vscode/notebooks/my-work.github-issues
@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "// list of repos we work in\n$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce\n\n// current milestone name\n$MILESTONE=milestone:\"June 2024\"\n"
+ "value": "// list of repos we work in\n$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce\n\n// current milestone name\n$MILESTONE=milestone:\"September 2024\"\n"
},
{
"kind": 1,
diff --git a/.vscode/notebooks/vscode-dev.github-issues b/.vscode/notebooks/vscode-dev.github-issues
index 53fad82e6d9..db480b64bd8 100644
--- a/.vscode/notebooks/vscode-dev.github-issues
+++ b/.vscode/notebooks/vscode-dev.github-issues
@@ -2,7 +2,7 @@
{
"kind": 2,
"language": "github-issues",
- "value": "$milestone=milestone:\"November 2023\""
+ "value": "$milestone=milestone:\"August 2024\""
},
{
"kind": 1,
diff --git a/.vscode/settings.json b/.vscode/settings.json
index ef93d2deda1..d2abaca7005 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -32,16 +32,17 @@
"src/vs/base/test/common/filters.perf.data.js": true,
"src/vs/base/test/node/uri.perf.data.txt": true,
"src/vs/workbench/api/test/browser/extHostDocumentData.test.perf-data.ts": true,
+ "src/vs/base/test/node/uri.test.data.txt": true,
"src/vs/editor/test/node/diffing/fixtures/**": true,
+ "build/loader.min": true
},
"files.readonlyInclude": {
"**/node_modules/**/*.*": true,
"**/yarn.lock": true,
+ "**/package-lock.json": true,
"**/Cargo.lock": true,
"src/vs/workbench/workbench.web.main.css": true,
"src/vs/workbench/workbench.desktop.main.css": true,
- "src/vs/workbench/workbench.desktop.main.nls.js": true,
- "src/vs/workbench/workbench.web.main.nls.js": true,
"build/**/*.js": true,
"out/**": true,
"out-build/**": true,
@@ -52,6 +53,7 @@
"test/smoke/out/**": true,
"test/automation/out/**": true,
"test/integration/browser/out/**": true,
+ "src2/**": true,
},
"files.readonlyExclude": {
"build/builtin/*.js": true,
@@ -74,9 +76,8 @@
],
"typescript.tsdk": "node_modules/typescript/lib",
"npm.exclude": "**/extensions/**",
- "npm.packageManager": "yarn",
"emmet.excludeLanguages": [],
- "typescript.preferences.importModuleSpecifier": "non-relative",
+ "typescript.preferences.importModuleSpecifier": "relative",
"typescript.preferences.quoteStyle": "single",
"json.schemas": [
{
@@ -162,14 +163,12 @@
"@xterm/headless",
"node-pty",
"vscode-notebook-renderer",
- "src/vs/workbench/workbench.web.main.ts",
- "src/vs/workbench/api/common/extHostTypes.ts"
+ "src/vs/workbench/workbench.web.main.internal.ts"
],
"[github-issues]": {
"editor.wordWrap": "on"
},
"css.format.spaceAroundSelectorSeparator": true,
- "inlineChat.mode": "live",
- "inlineChat.experimental.textButtons": true,
- "typescript.enablePromptUseWorkspaceTsdk": true
+ "typescript.enablePromptUseWorkspaceTsdk": true,
+ "inlineChat.experimental.onlyZoneWidget": true
}
diff --git a/.vscode/shared.code-snippets b/.vscode/shared.code-snippets
index f473425b76f..ba36a9f5fcb 100644
--- a/.vscode/shared.code-snippets
+++ b/.vscode/shared.code-snippets
@@ -36,5 +36,23 @@
"private readonly _onDid$1 = new Emitter<$2>();",
"readonly onDid$1: Event<$2> = this._onDid$1.event;"
],
+ },
+ "esm-comment": {
+ "scope": "typescript,javascript",
+ "prefix": "esm-comment",
+ "body": [
+ "// ESM-comment-begin",
+ "$SELECTION$0",
+ "// ESM-comment-end",
+ ]
+ },
+ "esm-uncomment": {
+ "scope": "typescript,javascript",
+ "prefix": "esm-uncomment",
+ "body": [
+ "// ESM-uncomment-begin",
+ "// $SELECTION$0",
+ "// ESM-uncomment-end",
+ ]
}
}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 666edb3fb2c..3bcb5d5c6fc 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -113,7 +113,7 @@
"problemMatcher": []
},
{
- "label": "Kill VS Code - Build, Yarn, VS Code - Build",
+ "label": "Kill VS Code - Build, Npm, VS Code - Build",
"dependsOn": [
"Kill VS Code - Build",
"npm: install",
diff --git a/.yarnrc b/.yarnrc
deleted file mode 100644
index b153fa4724f..00000000000
--- a/.yarnrc
+++ /dev/null
@@ -1,5 +0,0 @@
-disturl "https://electronjs.org/headers"
-target "29.4.0"
-ms_build_id "9728852"
-runtime "electron"
-build_from_source "true"
diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt
index 2e3f2610f46..664f2b00049 100644
--- a/ThirdPartyNotices.txt
+++ b/ThirdPartyNotices.txt
@@ -263,6 +263,34 @@ suitability for any purpose.
---------------------------------------------------------
+cacheable-request 7.0.4 - MIT
+
+
+Copyright (c) cacheable-request authors
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+---------------------------------------------------------
+
+---------------------------------------------------------
+
Colorsublime-Themes 0.1.0
https://github.com/Colorsublime/Colorsublime-Themes
@@ -517,7 +545,7 @@ to the base-name name of the original file, and an extension of txt, html, or si
---------------------------------------------------------
-go-syntax 0.6.6 - MIT
+go-syntax 0.7.5 - MIT
https://github.com/worlpaker/go-syntax
MIT License
@@ -833,7 +861,7 @@ SOFTWARE.
---------------------------------------------------------
-jlelong/vscode-latex-basics 1.7.0 - MIT
+jlelong/vscode-latex-basics 1.9.0 - MIT
https://github.com/jlelong/vscode-latex-basics
Copyright (c) vscode-latex-basics authors
@@ -890,7 +918,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
---------------------------------------------------------
-JuliaEditorSupport/atom-language-julia 0.22.1 - MIT
+JuliaEditorSupport/atom-language-julia 0.23.0 - MIT
https://github.com/JuliaEditorSupport/atom-language-julia
The atom-language-julia package is licensed under the MIT "Expat" License:
@@ -1241,7 +1269,7 @@ THE SOFTWARE.
---------------------------------------------------------
-marked 4.1.0 - MIT
+marked 14.0.0 - MIT
https://github.com/markedjs/marked
information
@@ -1506,6 +1534,22 @@ SOFTWARE.
---------------------------------------------------------
+RedCMD/YAML-Syntax-Highlighter 1.1.1 - MIT
+https://github.com/RedCMD/YAML-Syntax-Highlighter
+
+MIT License
+
+Copyright 2024 RedCMD
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---------------------------------------------------------
+
+---------------------------------------------------------
+
redhat-developer/vscode-java 1.26.0 - MIT
https://github.com/redhat-developer/vscode-java
@@ -1928,31 +1972,6 @@ to the base-name name of the original file, and an extension of txt, html, or si
---------------------------------------------------------
-textmate/yaml.tmbundle 0.0.0 - TextMate Bundle License
-https://github.com/textmate/yaml.tmbundle
-
-Copyright (c) 2015 FichteFoll
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------------------------
-
----------------------------------------------------------
-
trond-snekvik/vscode-rst 1.5.3 - MIT
https://github.com/trond-snekvik/vscode-rst
diff --git a/build/.cachesalt b/build/.cachesalt
index 4a19f329eb1..3c6029dc2f4 100644
--- a/build/.cachesalt
+++ b/build/.cachesalt
@@ -1 +1 @@
-2024-05-25T03:29:59.419Z
+2024-09-04T10:21:29.952Z
diff --git a/build/.gitignore b/build/.gitignore
index 7cc357379e5..61cf49cb9a1 100644
--- a/build/.gitignore
+++ b/build/.gitignore
@@ -1,2 +1 @@
-.yarnrc
*.js.map
diff --git a/build/.moduleignore b/build/.moduleignore
index 32fb3bd21c5..026c0d3b51d 100644
--- a/build/.moduleignore
+++ b/build/.moduleignore
@@ -96,10 +96,13 @@ node-pty/lib/*.test.js
node-pty/tools/**
node-pty/deps/**
node-pty/scripts/**
+node-pty/third_party/**
!node-pty/build/Release/spawn-helper
!node-pty/build/Release/*.exe
!node-pty/build/Release/*.dll
!node-pty/build/Release/*.node
+!node-pty/build/Release/conpty/conpty.dll
+!node-pty/build/Release/conpty/OpenConsole.exe
@parcel/watcher/binding.gyp
@parcel/watcher/build/**
@@ -107,6 +110,12 @@ node-pty/scripts/**
@parcel/watcher/src/**
!@parcel/watcher/build/Release/*.node
+@bpasero/watcher/binding.gyp
+@bpasero/watcher/build/**
+@bpasero/watcher/prebuilds/**
+@bpasero/watcher/src/**
+!@bpasero/watcher/build/Release/*.node
+
vsda/build/**
vsda/ci/**
vsda/src/**
@@ -160,7 +169,7 @@ typescript/lib/tsserverlibrary.js
jschardet/index.js
jschardet/src/**
-jschardet/dist/jschardet.js
+# TODO@esm uncomment when we can use jschardet.min.js again jschardet/dist/jschardet.js
es6-promise/lib/**
diff --git a/build/.npmrc b/build/.npmrc
new file mode 100644
index 00000000000..1b073e71a83
--- /dev/null
+++ b/build/.npmrc
@@ -0,0 +1,5 @@
+disturl="https://nodejs.org/dist"
+runtime="node"
+build_from_source="true"
+legacy-peer-deps="true"
+timeout=180000
diff --git a/build/.webignore b/build/.webignore
index 15935edce8a..837366b67f7 100644
--- a/build/.webignore
+++ b/build/.webignore
@@ -14,7 +14,7 @@
jschardet/index.js
jschardet/src/**
-jschardet/dist/jschardet.js
+# TODO@esm uncomment when we can use jschardet.min.js again jschardet/dist/jschardet.js
vscode-textmate/webpack.config.js
@@ -38,6 +38,7 @@ vscode-textmate/webpack.config.js
# This makes sure the model is included in the package
!@vscode/vscode-languagedetection/model/**
+!@vscode/tree-sitter-wasm/wasm/**
# Ensure only the required telemetry pieces are loaded in web to reduce bundle size
@microsoft/1ds-core-js/**
@@ -45,7 +46,9 @@ vscode-textmate/webpack.config.js
@microsoft/applicationinsights-core-js/**
@microsoft/applicationinsights-shims/**
!@microsoft/1ds-core-js/dist/ms.core.min.js
+!@microsoft/1ds-core-js/bundle/ms.core.min.js
!@microsoft/1ds-post-js/dist/ms.post.min.js
+!@microsoft/1ds-post-js/bundle/ms.post.min.js
!@microsoft/applicationinsights-core-js/browser/applicationinsights-core-js.min.js
!@microsoft/applicationinsights-shims/dist/umd/applicationinsights-shims.min.js
diff --git a/build/azure-pipelines/alpine/cli-build-alpine.yml b/build/azure-pipelines/alpine/cli-build-alpine.yml
index a6442dfe290..07321ebcd97 100644
--- a/build/azure-pipelines/alpine/cli-build-alpine.yml
+++ b/build/azure-pipelines/alpine/cli-build-alpine.yml
@@ -19,17 +19,9 @@ steps:
nodejsMirror: https://github.com/joaomoreno/node-mirror/releases/download
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- # Install yarn as the ARM64 build agent is using vanilla Ubuntu
- - ${{ if eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true) }}:
- - task: Npm@1
- displayName: Install yarn
- inputs:
- command: custom
- customCommand: install --global yarn
-
- script: |
set -e
- yarn --frozen-lockfile --ignore-optional
+ npm ci
workingDirectory: build
displayName: Install pipeline build
diff --git a/build/azure-pipelines/alpine/product-build-alpine.yml b/build/azure-pipelines/alpine/product-build-alpine.yml
index 2c55132a9f9..077ec0ba11b 100644
--- a/build/azure-pipelines/alpine/product-build-alpine.yml
+++ b/build/azure-pipelines/alpine/product-build-alpine.yml
@@ -7,7 +7,7 @@ steps:
- template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -27,12 +27,12 @@ steps:
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js alpine $VSCODE_ARCH > .build/yarnlockhash
+ - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js alpine $VSCODE_ARCH > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -43,18 +43,17 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -75,12 +74,12 @@ steps:
- script: |
set -e
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
npm_config_arch: $(NPM_ARCH)
@@ -89,7 +88,7 @@ steps:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME: vscodehub.azurecr.io/vscode-linux-build-agent:alpine-$(VSCODE_ARCH)
VSCODE_HOST_MOUNT: "/mnt/vss/_work/1/s"
- displayName: Install build dependencies
+ displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
- script: node build/azure-pipelines/distro/mixin-npm
@@ -112,7 +111,7 @@ steps:
- script: |
set -e
TARGET=$([ "$VSCODE_ARCH" == "x64" ] && echo "linux-alpine" || echo "alpine-arm64") # TODO@joaomoreno
- yarn gulp vscode-reh-$TARGET-min-ci
+ npm run gulp vscode-reh-$TARGET-min-ci
(cd .. && mv vscode-reh-$TARGET vscode-server-$TARGET) # TODO@joaomoreno
ARCHIVE_PATH=".build/linux/server/vscode-server-$TARGET.tar.gz"
DIR_PATH="$(realpath ../vscode-server-$TARGET)"
@@ -127,7 +126,7 @@ steps:
- script: |
set -e
TARGET=$([ "$VSCODE_ARCH" == "x64" ] && echo "linux-alpine" || echo "alpine-arm64")
- yarn gulp vscode-reh-web-$TARGET-min-ci
+ npm run gulp vscode-reh-web-$TARGET-min-ci
(cd .. && mv vscode-reh-web-$TARGET vscode-server-$TARGET-web) # TODO@joaomoreno
ARCHIVE_PATH=".build/linux/web/vscode-server-$TARGET-web.tar.gz"
DIR_PATH="$(realpath ../vscode-server-$TARGET-web)"
diff --git a/build/azure-pipelines/cli/cli-compile.yml b/build/azure-pipelines/cli/cli-compile.yml
index 267682f7f6d..e77ba78a999 100644
--- a/build/azure-pipelines/cli/cli-compile.yml
+++ b/build/azure-pipelines/cli/cli-compile.yml
@@ -49,16 +49,22 @@ steps:
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc"
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-arg=--sysroot=$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot"
export CC_aarch64_unknown_linux_gnu="$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc --sysroot=$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot"
+ export PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu="$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot/usr/lib/aarch64-linux-gnu/pkgconfig:$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot/usr/share/pkgconfig"
+ export PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu="$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot"
export OBJDUMP="$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/bin/objdump"
elif [ "$SYSROOT_ARCH" == "amd64" ]; then
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER="$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/bin/x86_64-linux-gnu-gcc"
export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-arg=--sysroot=$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot -C link-arg=-L$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/lib/x86_64-linux-gnu"
export CC_x86_64_unknown_linux_gnu="$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/bin/x86_64-linux-gnu-gcc --sysroot=$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot"
+ export PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu="$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/lib/x86_64-linux-gnu/pkgconfig:$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/share/pkgconfig"
+ export PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu="$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot"
export OBJDUMP="$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/bin/objdump"
elif [ "$SYSROOT_ARCH" == "armhf" ]; then
export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER="$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc"
export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUSTFLAGS="-C link-arg=--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
export CC_armv7_unknown_linux_gnueabihf="$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc --sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
+ export PKG_CONFIG_LIBDIR_armv7_unknown_linux_gnueabihf="$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/lib/arm-rpi-linux-gnueabihf/pkgconfig:$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/share/pkgconfig"
+ export PKG_CONFIG_SYSROOT_DIR_armv7_unknown_linux_gnueabihf="$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
export OBJDUMP="$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/bin/objdump"
fi
fi
@@ -78,7 +84,7 @@ steps:
fi
done < <("$OBJDUMP" -T "$PWD/target/${{ parameters.VSCODE_CLI_TARGET }}/release/code")
if [[ "$glibc_version" != "2.17" ]]; then
- echo "Error: binary has dependency on GLIBC > 2.17"
+ echo "Error: binary has dependency on GLIBC > 2.17, found $glibc_version"
exit 1
fi
fi
diff --git a/build/azure-pipelines/cli/cli-darwin-sign.yml b/build/azure-pipelines/cli/cli-darwin-sign.yml
index 75a8235ff3a..b6dc424d690 100644
--- a/build/azure-pipelines/cli/cli-darwin-sign.yml
+++ b/build/azure-pipelines/cli/cli-darwin-sign.yml
@@ -4,7 +4,7 @@ parameters:
default: []
steps:
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
diff --git a/build/azure-pipelines/cli/cli-win32-sign.yml b/build/azure-pipelines/cli/cli-win32-sign.yml
index f8d11e806f2..e39df13c998 100644
--- a/build/azure-pipelines/cli/cli-win32-sign.yml
+++ b/build/azure-pipelines/cli/cli-win32-sign.yml
@@ -4,7 +4,7 @@ parameters:
default: []
steps:
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
diff --git a/build/azure-pipelines/cli/install-rust-posix.yml b/build/azure-pipelines/cli/install-rust-posix.yml
index 89867143938..fee56e028f7 100644
--- a/build/azure-pipelines/cli/install-rust-posix.yml
+++ b/build/azure-pipelines/cli/install-rust-posix.yml
@@ -1,7 +1,7 @@
parameters:
- name: channel
type: string
- default: 1.77
+ default: 1.81
- name: targets
default: []
type: object
diff --git a/build/azure-pipelines/cli/install-rust-win32.yml b/build/azure-pipelines/cli/install-rust-win32.yml
index 22fba8d7f6a..45a1cfd188e 100644
--- a/build/azure-pipelines/cli/install-rust-win32.yml
+++ b/build/azure-pipelines/cli/install-rust-win32.yml
@@ -1,7 +1,7 @@
parameters:
- name: channel
type: string
- default: 1.77
+ default: 1.81
- name: targets
default: []
type: object
diff --git a/build/azure-pipelines/common/computeNodeModulesCacheKey.js b/build/azure-pipelines/common/computeNodeModulesCacheKey.js
index fe84d03e1d7..976e096fad2 100644
--- a/build/azure-pipelines/common/computeNodeModulesCacheKey.js
+++ b/build/azure-pipelines/common/computeNodeModulesCacheKey.js
@@ -11,9 +11,10 @@ const { dirs } = require('../../npm/dirs');
const ROOT = path.join(__dirname, '../../../');
const shasum = crypto.createHash('sha256');
shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
-shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
-shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
-// Add `package.json` and `yarn.lock` files
+shasum.update(fs.readFileSync(path.join(ROOT, '.npmrc')));
+shasum.update(fs.readFileSync(path.join(ROOT, 'build', '.npmrc')));
+shasum.update(fs.readFileSync(path.join(ROOT, 'remote', '.npmrc')));
+// Add `package.json` and `package-lock.json` files
for (const dir of dirs) {
const packageJsonPath = path.join(ROOT, dir, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
@@ -25,8 +26,8 @@ for (const dir of dirs) {
distro: packageJson.distro
};
shasum.update(JSON.stringify(relevantPackageJsonSections));
- const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
- shasum.update(fs.readFileSync(yarnLockPath));
+ const packageLockPath = path.join(ROOT, dir, 'package-lock.json');
+ shasum.update(fs.readFileSync(packageLockPath));
}
// Add any other command line arguments
for (let i = 2; i < process.argv.length; i++) {
diff --git a/build/azure-pipelines/common/computeNodeModulesCacheKey.ts b/build/azure-pipelines/common/computeNodeModulesCacheKey.ts
index 16bf76796f9..0940c929b54 100644
--- a/build/azure-pipelines/common/computeNodeModulesCacheKey.ts
+++ b/build/azure-pipelines/common/computeNodeModulesCacheKey.ts
@@ -13,10 +13,11 @@ const ROOT = path.join(__dirname, '../../../');
const shasum = crypto.createHash('sha256');
shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
-shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
-shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
+shasum.update(fs.readFileSync(path.join(ROOT, '.npmrc')));
+shasum.update(fs.readFileSync(path.join(ROOT, 'build', '.npmrc')));
+shasum.update(fs.readFileSync(path.join(ROOT, 'remote', '.npmrc')));
-// Add `package.json` and `yarn.lock` files
+// Add `package.json` and `package-lock.json` files
for (const dir of dirs) {
const packageJsonPath = path.join(ROOT, dir, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
@@ -29,8 +30,8 @@ for (const dir of dirs) {
};
shasum.update(JSON.stringify(relevantPackageJsonSections));
- const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
- shasum.update(fs.readFileSync(yarnLockPath));
+ const packageLockPath = path.join(ROOT, dir, 'package-lock.json');
+ shasum.update(fs.readFileSync(packageLockPath));
}
// Add any other command line arguments
diff --git a/build/azure-pipelines/common/publish.js b/build/azure-pipelines/common/publish.js
index c990e3a7146..aa185ed8369 100644
--- a/build/azure-pipelines/common/publish.js
+++ b/build/azure-pipelines/common/publish.js
@@ -389,14 +389,8 @@ function getPlatform(product, os, arch, type, isLegacy) {
}
}
case 'server':
- if (arch === 'arm64') {
- throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
- }
return `server-win32-${arch}`;
case 'web':
- if (arch === 'arm64') {
- throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
- }
return `server-win32-${arch}-web`;
case 'cli':
return `cli-win32-${arch}`;
diff --git a/build/azure-pipelines/common/publish.ts b/build/azure-pipelines/common/publish.ts
index 75065ffa2d3..652cd168335 100644
--- a/build/azure-pipelines/common/publish.ts
+++ b/build/azure-pipelines/common/publish.ts
@@ -550,14 +550,8 @@ function getPlatform(product: string, os: string, arch: string, type: string, is
}
}
case 'server':
- if (arch === 'arm64') {
- throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
- }
return `server-win32-${arch}`;
case 'web':
- if (arch === 'arm64') {
- throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
- }
return `server-win32-${arch}-web`;
case 'cli':
return `cli-win32-${arch}`;
diff --git a/build/azure-pipelines/darwin/helper-plugin-entitlements.plist b/build/azure-pipelines/darwin/helper-plugin-entitlements.plist
index 1cc1a152c74..48f7bf5cece 100644
--- a/build/azure-pipelines/darwin/helper-plugin-entitlements.plist
+++ b/build/azure-pipelines/darwin/helper-plugin-entitlements.plist
@@ -6,8 +6,6 @@
com.apple.security.cs.allow-unsigned-executable-memory
- com.apple.security.cs.allow-dyld-environment-variables
-
com.apple.security.cs.disable-library-validation
diff --git a/build/azure-pipelines/darwin/product-build-darwin-cli-sign.yml b/build/azure-pipelines/darwin/product-build-darwin-cli-sign.yml
index 80e90a52bac..32615c58463 100644
--- a/build/azure-pipelines/darwin/product-build-darwin-cli-sign.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin-cli-sign.yml
@@ -17,31 +17,30 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
- workingDirectory: build
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: build/.npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
- script: |
set -e
+
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
workingDirectory: build
displayName: Install build dependencies
diff --git a/build/azure-pipelines/darwin/product-build-darwin-sign.yml b/build/azure-pipelines/darwin/product-build-darwin-sign.yml
index fb8cf8341c3..82a1e89f2ab 100644
--- a/build/azure-pipelines/darwin/product-build-darwin-sign.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin-sign.yml
@@ -13,7 +13,7 @@ steps:
continueOnError: true
displayName: Download ESRPClient
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
diff --git a/build/azure-pipelines/darwin/product-build-darwin-test.yml b/build/azure-pipelines/darwin/product-build-darwin-test.yml
index ed6d0236516..937d9d70c3e 100644
--- a/build/azure-pipelines/darwin/product-build-darwin-test.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin-test.yml
@@ -7,9 +7,12 @@ parameters:
type: boolean
- name: VSCODE_RUN_SMOKE_TESTS
type: boolean
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- - script: yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
+ - script: npm exec -- npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download Electron and Playwright
@@ -17,39 +20,61 @@ steps:
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: ./scripts/test.sh --tfs "Unit Tests"
- displayName: Run unit tests (Electron)
- timeoutInMinutes: 15
-
- - script: yarn test-node
- displayName: Run unit tests (node.js)
- timeoutInMinutes: 15
-
- - script: yarn test-browser-no-install --sequential --browser chromium --browser webkit --tfs "Browser Unit Tests"
- env:
- DEBUG: "*browser*"
- displayName: Run unit tests (Browser, Chromium & Webkit)
- timeoutInMinutes: 30
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: ./scripts/test-amd.sh --tfs "Unit Tests"
+ displayName: Run unit tests (Electron) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-node-amd
+ displayName: Run unit tests (node.js) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-browser-amd-no-install -- --sequential --browser chromium --browser webkit --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium & Webkit) [AMD]
+ timeoutInMinutes: 30
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: ./scripts/test.sh --tfs "Unit Tests"
+ displayName: Run unit tests (Electron)
+ timeoutInMinutes: 15
+ - script: npm run test-node
+ displayName: Run unit tests (node.js)
+ timeoutInMinutes: 15
+ - script: npm run test-browser-no-install -- --sequential --browser chromium --browser webkit --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium & Webkit)
+ timeoutInMinutes: 30
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: ./scripts/test.sh --build --tfs "Unit Tests"
- displayName: Run unit tests (Electron)
- timeoutInMinutes: 15
-
- - script: yarn test-node --build
- displayName: Run unit tests (node.js)
- timeoutInMinutes: 15
-
- - script: yarn test-browser-no-install --sequential --build --browser chromium --browser webkit --tfs "Browser Unit Tests"
- env:
- DEBUG: "*browser*"
- displayName: Run unit tests (Browser, Chromium & Webkit)
- timeoutInMinutes: 30
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: ./scripts/test-amd.sh --build --tfs "Unit Tests"
+ displayName: Run unit tests (Electron) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-node-amd -- --build
+ displayName: Run unit tests (node.js) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-browser-amd-no-install -- --sequential --build --browser chromium --browser webkit --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium & Webkit) [AMD]
+ timeoutInMinutes: 30
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: ./scripts/test.sh --build --tfs "Unit Tests"
+ displayName: Run unit tests (Electron)
+ timeoutInMinutes: 15
+ - script: npm run test-node -- --build
+ displayName: Run unit tests (node.js)
+ timeoutInMinutes: 15
+ - script: npm run test-browser-no-install -- --sequential --build --browser chromium --browser webkit --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium & Webkit)
+ timeoutInMinutes: 30
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- script: |
set -e
- yarn gulp \
+ npm run gulp \
compile-extension:configuration-editing \
compile-extension:css-language-features-server \
compile-extension:emmet \
@@ -59,7 +84,6 @@ steps:
compile-extension:ipynb \
compile-extension:notebook-renderers \
compile-extension:json-language-features-server \
- compile-extension:markdown-language-features-server \
compile-extension:markdown-language-features \
compile-extension-media \
compile-extension:microsoft-authentication \
@@ -70,24 +94,44 @@ steps:
displayName: Build integration tests
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: ./scripts/test-integration.sh --tfs "Integration Tests"
- displayName: Run integration tests (Electron)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: ./scripts/test-integration-amd.sh --tfs "Integration Tests"
+ displayName: Run integration tests (Electron) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: ./scripts/test-integration --tfs "Integration Tests"
+ displayName: Run integration tests (Electron)
+ timeoutInMinutes: 20
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: |
- # Figure out the full absolute path of the product we just built
- # including the remote server and configure the integration tests
- # to run with these builds instead of running out of sources.
- set -e
- APP_ROOT="$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)"
- APP_NAME="`ls $APP_ROOT | head -n 1`"
- INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
- ./scripts/test-integration.sh --build --tfs "Integration Tests"
- env:
- VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)
- displayName: Run integration tests (Electron)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: |
+ # Figure out the full absolute path of the product we just built
+ # including the remote server and configure the integration tests
+ # to run with these builds instead of running out of sources.
+ set -e
+ APP_ROOT="$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)"
+ APP_NAME="`ls $APP_ROOT | head -n 1`"
+ INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
+ ./scripts/test-integration-amd.sh --build --tfs "Integration Tests"
+ env:
+ VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)
+ displayName: Run integration tests (Electron) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: |
+ # Figure out the full absolute path of the product we just built
+ # including the remote server and configure the integration tests
+ # to run with these builds instead of running out of sources.
+ set -e
+ APP_ROOT="$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)"
+ APP_NAME="`ls $APP_ROOT | head -n 1`"
+ INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
+ ./scripts/test-integration.sh --build --tfs "Integration Tests"
+ env:
+ VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)
+ displayName: Run integration tests (Electron)
+ timeoutInMinutes: 20
- script: ./scripts/test-web-integration.sh --browser webkit
env:
@@ -113,13 +157,14 @@ steps:
condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: yarn --cwd test/smoke compile
+ - script: npm run compile
+ workingDirectory: test/smoke
displayName: Compile smoke tests
- - script: yarn gulp compile-extension-media
+ - script: npm run gulp compile-extension-media
displayName: Compile extensions for smoke tests
- - script: yarn smoketest-no-compile --tracing
+ - script: npm run smoketest-no-compile -- --tracing
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
@@ -128,11 +173,11 @@ steps:
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
- yarn smoketest-no-compile --tracing --build "$APP_ROOT/$APP_NAME"
+ npm run smoketest-no-compile -- --tracing --build "$APP_ROOT/$APP_NAME"
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- - script: yarn smoketest-no-compile --web --tracing --headless
+ - script: npm run smoketest-no-compile -- --web --tracing --headless
env:
VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)-web
timeoutInMinutes: 20
@@ -140,10 +185,10 @@ steps:
- script: |
set -e
- yarn gulp compile-extension:vscode-test-resolver
+ npm run gulp compile-extension:vscode-test-resolver
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
- yarn smoketest-no-compile --tracing --remote --build "$APP_ROOT/$APP_NAME"
+ npm run smoketest-no-compile -- --tracing --remote --build "$APP_ROOT/$APP_NAME"
env:
VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-darwin-$(VSCODE_ARCH)
timeoutInMinutes: 20
diff --git a/build/azure-pipelines/darwin/product-build-darwin-universal.yml b/build/azure-pipelines/darwin/product-build-darwin-universal.yml
index f8b201f40d4..f8c10a03cec 100644
--- a/build/azure-pipelines/darwin/product-build-darwin-universal.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin-universal.yml
@@ -7,7 +7,7 @@ steps:
- template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -20,31 +20,30 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
- workingDirectory: build
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: build/.npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
- script: |
set -e
+
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
workingDirectory: build
displayName: Install build dependencies
diff --git a/build/azure-pipelines/darwin/product-build-darwin.yml b/build/azure-pipelines/darwin/product-build-darwin.yml
index 8b4bda1c6a2..a76ab27b520 100644
--- a/build/azure-pipelines/darwin/product-build-darwin.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin.yml
@@ -9,6 +9,9 @@ parameters:
type: boolean
- name: VSCODE_RUN_SMOKE_TESTS
type: boolean
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
@@ -25,7 +28,7 @@ steps:
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -45,12 +48,12 @@ steps:
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js darwin $VSCODE_ARCH > .build/yarnlockhash
+ - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js darwin $VSCODE_ARCH > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -61,38 +64,50 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
- script: |
set -e
+ # Refs https://github.com/microsoft/vscode/issues/219893#issuecomment-2209313109
+ sudo xcode-select --switch /Applications/Xcode_15.2.app
+ condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
+ displayName: Switch to Xcode >= 15.1
+
+ - script: |
+ set -e
+ c++ --version
python3 -m pip install setuptools
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
npm_config_arch: $(VSCODE_ARCH)
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
+ # Avoid using dlopen to load Kerberos on macOS which can cause missing libraries
+ # https://github.com/mongodb-js/kerberos/commit/04044d2814ad1d01e77f1ce87f26b03d86692cf2
+ # flipped the default to support legacy linux distros which shouldn't happen
+ # on macOS.
+ GYP_DEFINES: "kerberos_use_rtld=false"
displayName: Install dependencies
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
@@ -118,7 +133,7 @@ steps:
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
- yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
echo "##vso[task.setvariable variable=BUILT_CLIENT]true"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
@@ -126,7 +141,7 @@ steps:
- script: |
set -e
- yarn gulp vscode-reh-darwin-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-reh-darwin-$(VSCODE_ARCH)-min-ci
mv ../vscode-reh-darwin-$(VSCODE_ARCH) ../vscode-server-darwin-$(VSCODE_ARCH) # TODO@joaomoreno
ARCHIVE_PATH=".build/darwin/server/vscode-server-darwin-$(VSCODE_ARCH).zip"
mkdir -p $(dirname $ARCHIVE_PATH)
@@ -138,7 +153,7 @@ steps:
- script: |
set -e
- yarn gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-reh-web-darwin-$(VSCODE_ARCH)-min-ci
mv ../vscode-reh-web-darwin-$(VSCODE_ARCH) ../vscode-server-darwin-$(VSCODE_ARCH)-web # TODO@joaomoreno
ARCHIVE_PATH=".build/darwin/server/vscode-server-darwin-$(VSCODE_ARCH)-web.zip"
mkdir -p $(dirname $ARCHIVE_PATH)
@@ -149,7 +164,7 @@ steps:
displayName: Build server (web)
- ${{ else }}:
- - script: yarn gulp transpile-client-swc transpile-extensions
+ - script: npm run gulp transpile-client-swc transpile-extensions
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Transpile
@@ -161,6 +176,7 @@ steps:
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}
+ VSCODE_BUILD_AMD: ${{ parameters.VSCODE_BUILD_AMD }}
- ${{ elseif and(ne(parameters.VSCODE_CIBUILD, true), ne(parameters.VSCODE_QUALITY, 'oss')) }}:
- task: DownloadPipelineArtifact@2
diff --git a/build/azure-pipelines/distro/download-distro.yml b/build/azure-pipelines/distro/download-distro.yml
index a703992aab2..92325762a60 100644
--- a/build/azure-pipelines/distro/download-distro.yml
+++ b/build/azure-pipelines/distro/download-distro.yml
@@ -1,5 +1,5 @@
steps:
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -51,6 +51,5 @@ steps:
unzip $ArchivePath -d .build
mv .build/microsoft-vscode-distro-$DistroVersion .build/distro
- cp remote/.yarnrc .build/distro/npm/remote/.yarnrc
condition: and(succeeded(), not(contains(variables['Agent.OS'], 'windows')))
displayName: Download distro (non-Windows)
diff --git a/build/azure-pipelines/linux/apt-retry.sh b/build/azure-pipelines/linux/apt-retry.sh
new file mode 100755
index 00000000000..358f34cd308
--- /dev/null
+++ b/build/azure-pipelines/linux/apt-retry.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+################################################################################
+## Copied from https://github.com/actions/runner-images/blob/ubuntu22/20240825.1/images/ubuntu/scripts/build/configure-apt-mock.sh
+################################################################################
+
+i=1
+while [ $i -le 30 ];do
+ err=$(mktemp)
+ "$@" 2>$err
+
+ # no errors, break the loop and continue normal flow
+ test -f $err || break
+ cat $err >&2
+
+ retry=false
+
+ if grep -q 'Could not get lock' $err;then
+ # apt db locked needs retry
+ retry=true
+ elif grep -q 'Could not open file /var/lib/apt/lists' $err;then
+ # apt update is not completed, needs retry
+ retry=true
+ elif grep -q 'IPC connect call failed' $err;then
+ # the delay should help with gpg-agent not ready
+ retry=true
+ elif grep -q 'Temporary failure in name resolution' $err;then
+ # It looks like DNS is not updated with random generated hostname yet
+ retry=true
+ elif grep -q 'dpkg frontend is locked by another process' $err;then
+ # dpkg process is busy by another process
+ retry=true
+ fi
+
+ rm $err
+ if [ $retry = false ]; then
+ break
+ fi
+
+ sleep 5
+ echo "...retry $i"
+ i=$((i + 1))
+done
diff --git a/build/azure-pipelines/linux/cli-build-linux.yml b/build/azure-pipelines/linux/cli-build-linux.yml
index f3e2ef88b9d..89bc8a39e24 100644
--- a/build/azure-pipelines/linux/cli-build-linux.yml
+++ b/build/azure-pipelines/linux/cli-build-linux.yml
@@ -40,24 +40,23 @@ steps:
displayName: Extract openssl prebuilt
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: node build/setup-npm-registry.js $NPM_REGISTRY
+ - script: node build/setup-npm-registry.js $NPM_REGISTRY build
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -65,13 +64,14 @@ steps:
set -e
for i in {1..5}; do # try 5 times
- yarn --cwd build --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
+ workingDirectory: build
displayName: Install build dependencies
- script: |
diff --git a/build/azure-pipelines/linux/product-build-linux-legacy-server.yml b/build/azure-pipelines/linux/product-build-linux-legacy-server.yml
index 921bf2a9370..ce9d71a5290 100644
--- a/build/azure-pipelines/linux/product-build-linux-legacy-server.yml
+++ b/build/azure-pipelines/linux/product-build-linux-legacy-server.yml
@@ -5,6 +5,9 @@ parameters:
type: boolean
- name: VSCODE_ARCH
type: string
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- task: NodeTool@0
@@ -15,7 +18,7 @@ steps:
- template: ../distro/download-distro.yml
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -34,8 +37,8 @@ steps:
- script: |
set -e
# Start X server
- sudo apt-get update
- sudo apt-get install -y pkg-config \
+ ./build/azure-pipelines/linux/apt-retry.sh sudo apt-get update
+ ./build/azure-pipelines/linux/apt-retry.sh sudo apt-get install -y pkg-config \
dbus \
xvfb \
libgtk-3-0 \
@@ -59,18 +62,17 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -84,40 +86,33 @@ steps:
imageName: vscode-linux-build-agent:centos7-devtoolset8-$(VSCODE_ARCH)
containerCommand: uname
- - ${{ if eq(parameters.VSCODE_ARCH, 'armhf') }}:
- - task: Docker@1
- displayName: "Pull Docker image"
- inputs:
- azureSubscriptionEndpoint: "vscode-builds-subscription"
- azureContainerRegistry: vscodehub.azurecr.io
- command: "Run an image"
- imageName: vscode-linux-build-agent:bionic-arm32v7
- containerCommand: uname
-
- script: |
set -e
- # To workaround the issue of yarn not respecting the registry value from .npmrc
- yarn config set registry "$NPM_REGISTRY"
for i in {1..5}; do # try 5 times
- yarn --cwd build --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
+ workingDirectory: build
+ displayName: Install build dependencies
+
+ - script: |
+ set -e
export VSCODE_SYSROOT_PREFIX='-glibc-2.17'
source ./build/azure-pipelines/linux/setup-env.sh --only-remote
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
npm_config_arch: $(NPM_ARCH)
@@ -129,8 +124,6 @@ steps:
VSCODE_HOST_MOUNT: "/mnt/vss/_work/1/s"
${{ if or(eq(parameters.VSCODE_ARCH, 'x64'), eq(parameters.VSCODE_ARCH, 'arm64')) }}:
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME: vscodehub.azurecr.io/vscode-linux-build-agent:centos7-devtoolset8-$(VSCODE_ARCH)
- ${{ if eq(parameters.VSCODE_ARCH, 'armhf') }}:
- VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME: vscodehub.azurecr.io/vscode-linux-build-agent:bionic-arm32v7
displayName: Install dependencies
- script: node build/azure-pipelines/distro/mixin-npm
@@ -143,7 +136,7 @@ steps:
- script: |
set -e
- yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-linux-$(VSCODE_ARCH)-min-ci
ARCHIVE_PATH=".build/linux/client/code-${{ parameters.VSCODE_QUALITY }}-$(VSCODE_ARCH)-$(date +%s).tar.gz"
mkdir -p $(dirname $ARCHIVE_PATH)
echo "##vso[task.setvariable variable=CLIENT_PATH]$ARCHIVE_PATH"
@@ -161,7 +154,7 @@ steps:
- script: |
set -e
export VSCODE_NODE_GLIBC="-glibc-2.17"
- yarn gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
mv ../vscode-reh-linux-$(VSCODE_ARCH) ../vscode-server-linux-$(VSCODE_ARCH) # TODO@joaomoreno
ARCHIVE_PATH=".build/linux/server/vscode-server-linux-legacy-$(VSCODE_ARCH).tar.gz"
UNARCHIVE_PATH="`pwd`/../vscode-server-linux-$(VSCODE_ARCH)"
@@ -176,7 +169,7 @@ steps:
- script: |
set -e
export VSCODE_NODE_GLIBC="-glibc-2.17"
- yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
mv ../vscode-reh-web-linux-$(VSCODE_ARCH) ../vscode-server-linux-$(VSCODE_ARCH)-web # TODO@joaomoreno
ARCHIVE_PATH=".build/linux/web/vscode-server-linux-legacy-$(VSCODE_ARCH)-web.tar.gz"
mkdir -p $(dirname $ARCHIVE_PATH)
@@ -199,7 +192,7 @@ steps:
- ${{ else }}:
- script: |
set -e
- EXPECTED_GLIBC_VERSION="2.28" \
+ EXPECTED_GLIBC_VERSION="2.17" \
EXPECTED_GLIBCXX_VERSION="3.4.22" \
./build/azure-pipelines/linux/verify-glibc-requirements.sh
env:
@@ -213,6 +206,7 @@ steps:
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: false
+ VSCODE_BUILD_AMD: ${{ parameters.VSCODE_BUILD_AMD }}
${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
PUBLISH_TASK_NAME: 1ES.PublishPipelineArtifact@1
diff --git a/build/azure-pipelines/linux/product-build-linux-test.yml b/build/azure-pipelines/linux/product-build-linux-test.yml
index f5c00aa0cf0..2443e2b1299 100644
--- a/build/azure-pipelines/linux/product-build-linux-test.yml
+++ b/build/azure-pipelines/linux/product-build-linux-test.yml
@@ -10,9 +10,12 @@ parameters:
- name: PUBLISH_TASK_NAME
type: string
default: PublishPipelineArtifact@0
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- - script: yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
+ - script: npm exec -- npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download Electron and Playwright
@@ -33,41 +36,66 @@ steps:
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: ./scripts/test.sh --tfs "Unit Tests"
- env:
- DISPLAY: ":10"
- displayName: Run unit tests (Electron)
- timeoutInMinutes: 15
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: ./scripts/test-amd.sh --tfs "Unit Tests"
+ env:
+ DISPLAY: ":10"
+ displayName: Run unit tests (Electron) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-node-amd
+ displayName: Run unit tests (node.js) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-browser-amd-no-install -- --browser chromium --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium) [AMD]
+ timeoutInMinutes: 15
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: ./scripts/test.sh --tfs "Unit Tests"
+ env:
+ DISPLAY: ":10"
+ displayName: Run unit tests (Electron)
+ timeoutInMinutes: 15
+ - script: npm run test-node
+ displayName: Run unit tests (node.js)
+ timeoutInMinutes: 15
+ - script: npm run test-browser-no-install -- --browser chromium --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium)
+ timeoutInMinutes: 15
- - script: yarn test-node
- displayName: Run unit tests (node.js)
- timeoutInMinutes: 15
-
- - script: yarn test-browser-no-install --browser chromium --tfs "Browser Unit Tests"
- env:
- DEBUG: "*browser*"
- displayName: Run unit tests (Browser, Chromium)
- timeoutInMinutes: 15
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: ./scripts/test.sh --build --tfs "Unit Tests"
- displayName: Run unit tests (Electron)
- timeoutInMinutes: 15
-
- - script: yarn test-node --build
- displayName: Run unit tests (node.js)
- timeoutInMinutes: 15
-
- - script: yarn test-browser-no-install --build --browser chromium --tfs "Browser Unit Tests"
- env:
- DEBUG: "*browser*"
- displayName: Run unit tests (Browser, Chromium)
- timeoutInMinutes: 15
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: ./scripts/test-amd.sh --build --tfs "Unit Tests"
+ displayName: Run unit tests (Electron) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-node-amd -- --build
+ displayName: Run unit tests (node.js) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-browser-amd-no-install -- --build --browser chromium --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium) [AMD]
+ timeoutInMinutes: 15
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: ./scripts/test.sh --build --tfs "Unit Tests"
+ displayName: Run unit tests (Electron)
+ timeoutInMinutes: 15
+ - script: npm run test-node -- --build
+ displayName: Run unit tests (node.js)
+ timeoutInMinutes: 15
+ - script: npm run test-browser-no-install -- --build --browser chromium --tfs "Browser Unit Tests"
+ env:
+ DEBUG: "*browser*"
+ displayName: Run unit tests (Browser, Chromium)
+ timeoutInMinutes: 15
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- script: |
set -e
- yarn gulp \
+ npm run gulp \
compile-extension:configuration-editing \
compile-extension:css-language-features-server \
compile-extension:emmet \
@@ -77,7 +105,6 @@ steps:
compile-extension:ipynb \
compile-extension:notebook-renderers \
compile-extension:json-language-features-server \
- compile-extension:markdown-language-features-server \
compile-extension:markdown-language-features \
compile-extension-media \
compile-extension:microsoft-authentication \
@@ -89,11 +116,18 @@ steps:
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: ./scripts/test-integration.sh --tfs "Integration Tests"
- env:
- DISPLAY: ":10"
- displayName: Run integration tests (Electron)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: ./scripts/test-integration-amd.sh --tfs "Integration Tests"
+ env:
+ DISPLAY: ":10"
+ displayName: Run integration tests (Electron) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: ./scripts/test-integration.sh --tfs "Integration Tests"
+ env:
+ DISPLAY: ":10"
+ displayName: Run integration tests (Electron)
+ timeoutInMinutes: 20
- script: ./scripts/test-web-integration.sh --browser chromium
displayName: Run integration tests (Browser, Chromium)
@@ -104,20 +138,36 @@ steps:
timeoutInMinutes: 20
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: |
- # Figure out the full absolute path of the product we just built
- # including the remote server and configure the integration tests
- # to run with these builds instead of running out of sources.
- set -e
- APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
- APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
- INTEGRATION_TEST_APP_NAME="$APP_NAME" \
- INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
- ./scripts/test-integration.sh --build --tfs "Integration Tests"
- env:
- VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)
- displayName: Run integration tests (Electron)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: |
+ # Figure out the full absolute path of the product we just built
+ # including the remote server and configure the integration tests
+ # to run with these builds instead of running out of sources.
+ set -e
+ APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
+ APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
+ INTEGRATION_TEST_APP_NAME="$APP_NAME" \
+ INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
+ ./scripts/test-integration-amd.sh --build --tfs "Integration Tests"
+ env:
+ VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)
+ displayName: Run integration tests (Electron) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - script: |
+ # Figure out the full absolute path of the product we just built
+ # including the remote server and configure the integration tests
+ # to run with these builds instead of running out of sources.
+ set -e
+ APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
+ APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
+ INTEGRATION_TEST_APP_NAME="$APP_NAME" \
+ INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
+ ./scripts/test-integration.sh --build --tfs "Integration Tests"
+ env:
+ VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)
+ displayName: Run integration tests (Electron)
+ timeoutInMinutes: 20
- script: ./scripts/test-web-integration.sh --browser chromium
env:
@@ -148,34 +198,35 @@ steps:
condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: yarn --cwd test/smoke compile
+ - script: npm run compile
+ workingDirectory: test/smoke
displayName: Compile smoke tests
- - script: yarn gulp compile-extension:markdown-language-features compile-extension-media compile-extension:vscode-test-resolver
+ - script: npm run gulp compile-extension:markdown-language-features compile-extension:ipynb compile-extension-media compile-extension:vscode-test-resolver
displayName: Build extensions for smoke tests
- - script: yarn gulp node
+ - script: npm run gulp node
displayName: Download node.js for remote smoke tests
retryCountOnTaskFailure: 3
- - script: yarn smoketest-no-compile --tracing
+ - script: npm run smoketest-no-compile -- --tracing
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- - script: yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
+ - script: npm run smoketest-no-compile -- --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
timeoutInMinutes: 20
displayName: Run smoke tests (Browser, Chromium)
- - script: yarn smoketest-no-compile --remote --tracing
+ - script: npm run smoketest-no-compile -- --remote --tracing
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: yarn smoketest-no-compile --tracing --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)"
+ - script: npm run smoketest-no-compile -- --tracing --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)"
timeoutInMinutes: 20
displayName: Run smoke tests (Electron)
- - script: yarn smoketest-no-compile --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
+ - script: npm run smoketest-no-compile -- --web --tracing --headless --electronArgs="--disable-dev-shm-usage"
env:
VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)-web
timeoutInMinutes: 20
@@ -183,10 +234,10 @@ steps:
- script: |
set -e
- yarn gulp compile-extension:vscode-test-resolver
+ npm run gulp compile-extension:vscode-test-resolver
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-server-linux-$(VSCODE_ARCH)" \
- yarn smoketest-no-compile --tracing --remote --build "$APP_PATH"
+ npm run smoketest-no-compile -- --tracing --remote --build "$APP_PATH"
timeoutInMinutes: 20
displayName: Run smoke tests (Remote)
diff --git a/build/azure-pipelines/linux/product-build-linux.yml b/build/azure-pipelines/linux/product-build-linux.yml
index d1d6bdb9191..3f53731b70a 100644
--- a/build/azure-pipelines/linux/product-build-linux.yml
+++ b/build/azure-pipelines/linux/product-build-linux.yml
@@ -11,6 +11,9 @@ parameters:
type: boolean
- name: VSCODE_ARCH
type: string
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
@@ -27,7 +30,7 @@ steps:
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -46,8 +49,8 @@ steps:
- script: |
set -e
# Start X server
- sudo apt-get update
- sudo apt-get install -y pkg-config \
+ ./build/azure-pipelines/linux/apt-retry.sh sudo apt-get update
+ ./build/azure-pipelines/linux/apt-retry.sh sudo apt-get install -y pkg-config \
dbus \
xvfb \
libgtk-3-0 \
@@ -69,12 +72,12 @@ steps:
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js linux $VSCODE_ARCH > .build/yarnlockhash
+ - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js linux $VSCODE_ARCH > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -85,18 +88,17 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -104,23 +106,44 @@ steps:
set -e
for i in {1..5}; do # try 5 times
- yarn --cwd build --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
+ workingDirectory: build
+ displayName: Install build dependencies
+ condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
+
+ # Step will be used by both Install dependencies and building rpm package,
+ # hence avoid adding it behind NODE_MODULES_RESTORED condition.
+ - script: |
+ set -e
+ SYSROOT_ARCH=$VSCODE_ARCH
+ if [ "$SYSROOT_ARCH" == "x64" ]; then
+ SYSROOT_ARCH="amd64"
+ fi
+ export VSCODE_SYSROOT_DIR=$(Build.SourcesDirectory)/.build/sysroots
+ SYSROOT_ARCH="$SYSROOT_ARCH" node -e '(async () => { const { getVSCodeSysroot } = require("./build/linux/debian/install-sysroot.js"); await getVSCodeSysroot(process.env["SYSROOT_ARCH"]); })()'
+ env:
+ VSCODE_ARCH: $(VSCODE_ARCH)
+ GITHUB_TOKEN: "$(github-distro-mixin-password)"
+ displayName: Download vscode sysroots
+
+ - script: |
+ set -e
source ./build/azure-pipelines/linux/setup-env.sh
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
npm_config_arch: $(NPM_ARCH)
@@ -167,7 +190,7 @@ steps:
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
- yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-linux-$(VSCODE_ARCH)-min-ci
ARCHIVE_PATH=".build/linux/client/code-${{ parameters.VSCODE_QUALITY }}-$(VSCODE_ARCH)-$(date +%s).tar.gz"
mkdir -p $(dirname $ARCHIVE_PATH)
echo "##vso[task.setvariable variable=CLIENT_PATH]$ARCHIVE_PATH"
@@ -200,7 +223,7 @@ steps:
- script: |
set -e
- yarn gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
mv ../vscode-reh-linux-$(VSCODE_ARCH) ../vscode-server-linux-$(VSCODE_ARCH) # TODO@joaomoreno
ARCHIVE_PATH=".build/linux/server/vscode-server-linux-$(VSCODE_ARCH).tar.gz"
UNARCHIVE_PATH="`pwd`/../vscode-server-linux-$(VSCODE_ARCH)"
@@ -214,7 +237,7 @@ steps:
- script: |
set -e
- yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
+ npm run gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
mv ../vscode-reh-web-linux-$(VSCODE_ARCH) ../vscode-server-linux-$(VSCODE_ARCH)-web # TODO@joaomoreno
ARCHIVE_PATH=".build/linux/web/vscode-server-linux-$(VSCODE_ARCH)-web.tar.gz"
mkdir -p $(dirname $ARCHIVE_PATH)
@@ -255,7 +278,7 @@ steps:
displayName: Check GLIBC and GLIBCXX dependencies in server archive
- ${{ else }}:
- - script: yarn gulp "transpile-client-swc" "transpile-extensions"
+ - script: npm run gulp "transpile-client-swc" "transpile-extensions"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Transpile client and extensions
@@ -267,37 +290,50 @@ steps:
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}
+ VSCODE_BUILD_AMD: ${{ parameters.VSCODE_BUILD_AMD }}
${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
PUBLISH_TASK_NAME: 1ES.PublishPipelineArtifact@1
- ${{ if and(ne(parameters.VSCODE_CIBUILD, true), ne(parameters.VSCODE_QUALITY, 'oss')) }}:
- script: |
set -e
- yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-deb"
+ npm run gulp "vscode-linux-$(VSCODE_ARCH)-prepare-deb"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Prepare deb package
- script: |
set -e
- yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-deb"
+ npm run gulp "vscode-linux-$(VSCODE_ARCH)-build-deb"
echo "##vso[task.setvariable variable=DEB_PATH]$(ls .build/linux/deb/*/deb/*.deb)"
displayName: Build deb package
- script: |
set -e
- yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-rpm"
+ TRIPLE=""
+ if [ "$VSCODE_ARCH" == "x64" ]; then
+ TRIPLE="x86_64-linux-gnu"
+ elif [ "$VSCODE_ARCH" == "arm64" ]; then
+ TRIPLE="aarch64-linux-gnu"
+ elif [ "$VSCODE_ARCH" == "armhf" ]; then
+ TRIPLE="arm-rpi-linux-gnueabihf"
+ fi
+ export VSCODE_SYSROOT_DIR=$(Build.SourcesDirectory)/.build/sysroots
+ export STRIP="$VSCODE_SYSROOT_DIR/$TRIPLE/$TRIPLE/bin/strip"
+ npm run gulp "vscode-linux-$(VSCODE_ARCH)-prepare-rpm"
+ env:
+ VSCODE_ARCH: $(VSCODE_ARCH)
displayName: Prepare rpm package
- script: |
set -e
- yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-rpm"
+ npm run gulp "vscode-linux-$(VSCODE_ARCH)-build-rpm"
echo "##vso[task.setvariable variable=RPM_PATH]$(ls .build/linux/rpm/*/*.rpm)"
displayName: Build rpm package
- script: |
set -e
- yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
+ npm run gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
ARCHIVE_PATH=".build/linux/snap-tarball/snap-$(VSCODE_ARCH).tar.gz"
mkdir -p $(dirname $ARCHIVE_PATH)
tar -czf $ARCHIVE_PATH -C .build/linux snap
diff --git a/build/azure-pipelines/linux/setup-env.sh b/build/azure-pipelines/linux/setup-env.sh
index 9bfbf9ab41a..1ce3ba742c1 100755
--- a/build/azure-pipelines/linux/setup-env.sh
+++ b/build/azure-pipelines/linux/setup-env.sh
@@ -8,12 +8,17 @@ if [ "$SYSROOT_ARCH" == "x64" ]; then
fi
export VSCODE_SYSROOT_DIR=$PWD/.build/sysroots
-SYSROOT_ARCH="$SYSROOT_ARCH" node -e '(async () => { const { getVSCodeSysroot } = require("./build/linux/debian/install-sysroot.js"); await getVSCodeSysroot(process.env["SYSROOT_ARCH"]); })()'
+if [ -d "$VSCODE_SYSROOT_DIR" ]; then
+ echo "Using cached sysroot"
+else
+ echo "Downloading sysroot"
+ SYSROOT_ARCH="$SYSROOT_ARCH" node -e '(async () => { const { getVSCodeSysroot } = require("./build/linux/debian/install-sysroot.js"); await getVSCodeSysroot(process.env["SYSROOT_ARCH"]); })()'
+fi
if [ "$npm_config_arch" == "x64" ]; then
if [ "$(echo "$@" | grep -c -- "--only-remote")" -eq 0 ]; then
# Download clang based on chromium revision used by vscode
- curl -s https://raw.githubusercontent.com/chromium/chromium/122.0.6261.156/tools/clang/scripts/update.py | python - --output-dir=$PWD/.build/CR_Clang --host-os=linux
+ curl -s https://raw.githubusercontent.com/chromium/chromium/124.0.6367.243/tools/clang/scripts/update.py | python - --output-dir=$PWD/.build/CR_Clang --host-os=linux
# Download libcxx headers and objects from upstream electron releases
DEBUG=libcxx-fetcher \
@@ -25,9 +30,9 @@ if [ "$npm_config_arch" == "x64" ]; then
# Set compiler toolchain
# Flags for the client build are based on
- # https://source.chromium.org/chromium/chromium/src/+/refs/tags/122.0.6261.156:build/config/arm.gni
- # https://source.chromium.org/chromium/chromium/src/+/refs/tags/122.0.6261.156:build/config/compiler/BUILD.gn
- # https://source.chromium.org/chromium/chromium/src/+/refs/tags/122.0.6261.156:build/config/c++/BUILD.gn
+ # https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.243:build/config/arm.gni
+ # https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.243:build/config/compiler/BUILD.gn
+ # https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.243:build/config/c++/BUILD.gn
export CC="$PWD/.build/CR_Clang/bin/clang --gcc-toolchain=$VSCODE_SYSROOT_DIR/x86_64-linux-gnu"
export CXX="$PWD/.build/CR_Clang/bin/clang++ --gcc-toolchain=$VSCODE_SYSROOT_DIR/x86_64-linux-gnu"
export CXXFLAGS="-nostdinc++ -D__NO_INLINE__ -I$PWD/.build/libcxx_headers -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit -D_LIBCPP_ABI_NAMESPACE=Cr -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE --sysroot=$VSCODE_SYSROOT_DIR/x86_64-linux-gnu/x86_64-linux-gnu/sysroot"
@@ -54,17 +59,15 @@ elif [ "$npm_config_arch" == "arm64" ]; then
export VSCODE_REMOTE_LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot -L$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot/usr/lib/aarch64-linux-gnu -L$VSCODE_SYSROOT_DIR/aarch64-linux-gnu/aarch64-linux-gnu/sysroot/lib/aarch64-linux-gnu"
fi
elif [ "$npm_config_arch" == "arm" ]; then
- if [ "$(echo "$@" | grep -c -- "--only-remote")" -eq 0 ]; then
- # Set compiler toolchain for client native modules
- export CC=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc
- export CXX=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-g++
- export CXXFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
- export LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf"
+ # Set compiler toolchain for client native modules
+ export CC=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc
+ export CXX=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-g++
+ export CXXFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
+ export LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf"
- # Set compiler toolchain for remote server
- export VSCODE_REMOTE_CC=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc
- export VSCODE_REMOTE_CXX=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-g++
- export VSCODE_REMOTE_CXXFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
- export VSCODE_REMOTE_LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf"
- fi
+ # Set compiler toolchain for remote server
+ export VSCODE_REMOTE_CC=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-gcc
+ export VSCODE_REMOTE_CXX=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-g++
+ export VSCODE_REMOTE_CXXFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot"
+ export VSCODE_REMOTE_LDFLAGS="--sysroot=$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/usr/lib/arm-linux-gnueabihf -L$VSCODE_SYSROOT_DIR/arm-rpi-linux-gnueabihf/arm-rpi-linux-gnueabihf/sysroot/lib/arm-linux-gnueabihf"
fi
diff --git a/build/azure-pipelines/linux/snap-build-linux.yml b/build/azure-pipelines/linux/snap-build-linux.yml
index 033058163f9..3582be07cca 100644
--- a/build/azure-pipelines/linux/snap-build-linux.yml
+++ b/build/azure-pipelines/linux/snap-build-linux.yml
@@ -5,11 +5,11 @@ steps:
versionFilePath: .nvmrc
nodejsMirror: https://github.com/joaomoreno/node-mirror/releases/download
- - task: DownloadPipelineArtifact@0
+ - task: DownloadPipelineArtifact@2
displayName: "Download Pipeline Artifact"
inputs:
- artifactName: snap-$(VSCODE_ARCH)
- targetPath: .build/linux/snap-tarball
+ artifact: snap-$(VSCODE_ARCH)
+ path: .build/linux/snap-tarball
- script: |
set -e
@@ -22,17 +22,11 @@ steps:
sudo apt-get upgrade -y
sudo apt-get install -y curl apt-transport-https ca-certificates
- # Yarn
- curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
- echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
- sudo apt-get update
- sudo apt-get install -y yarn
-
# Define variables
SNAP_ROOT="$(pwd)/.build/linux/snap/$(VSCODE_ARCH)"
# Install build dependencies
- (cd build && yarn)
+ (cd build && npm ci)
# Unpack snap tarball artifact, in order to preserve file perms
(cd .build/linux && tar -xzf snap-tarball/snap-$(VSCODE_ARCH).tar.gz)
diff --git a/build/azure-pipelines/linux/verify-glibc-requirements.sh b/build/azure-pipelines/linux/verify-glibc-requirements.sh
index 19482c242ea..c655ce74c7e 100755
--- a/build/azure-pipelines/linux/verify-glibc-requirements.sh
+++ b/build/azure-pipelines/linux/verify-glibc-requirements.sh
@@ -10,7 +10,7 @@ elif [ "$VSCODE_ARCH" == "armhf" ]; then
fi
# Get all files with .node extension from server folder
-files=$(find $SEARCH_PATH -name "*.node" -not -path "*prebuilds*" -o -type f -executable -name "node")
+files=$(find $SEARCH_PATH -name "*.node" -not -path "*prebuilds*" -not -path "*extensions/node_modules/@parcel/watcher*" -o -type f -executable -name "node")
echo "Verifying requirements for files: $files"
diff --git a/build/azure-pipelines/oss/product-build-pr-cache-linux.yml b/build/azure-pipelines/oss/product-build-pr-cache-linux.yml
index 9f207f75220..6609e80ed28 100644
--- a/build/azure-pipelines/oss/product-build-pr-cache-linux.yml
+++ b/build/azure-pipelines/oss/product-build-pr-cache-linux.yml
@@ -13,12 +13,12 @@ steps:
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js linux $VSCODE_ARCH > .build/yarnlockhash
+ - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js linux $VSCODE_ARCH > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -29,18 +29,17 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -51,12 +50,12 @@ steps:
- script: |
set -e
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
diff --git a/build/azure-pipelines/oss/product-build-pr-cache-win32.yml b/build/azure-pipelines/oss/product-build-pr-cache-win32.yml
index b084c5e97c5..e1c8305bbb2 100644
--- a/build/azure-pipelines/oss/product-build-pr-cache-win32.yml
+++ b/build/azure-pipelines/oss/product-build-pr-cache-win32.yml
@@ -15,12 +15,12 @@ steps:
- pwsh: |
mkdir .build -ea 0
- node build/azure-pipelines/common/computeNodeModulesCacheKey.js win32 $(VSCODE_ARCH) > .build/yarnlockhash
+ node build/azure-pipelines/common/computeNodeModulesCacheKey.js win32 $(VSCODE_ARCH) > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -32,18 +32,18 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { npm config set registry "$env:NPM_REGISTRY" --location=project }
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- exec { Add-Content -Path .npmrc -Value "always-auth=true" }
- exec { yarn config set registry "$env:NPM_REGISTRY" }
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ exec { npm config set registry "$env:NPM_REGISTRY" }
+ $NpmrcPath = (npm config get userconfig)
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$NpmrcPath"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -53,7 +53,7 @@ steps:
$ErrorActionPreference = "Stop"
$env:npm_config_arch="$(VSCODE_ARCH)"
$env:CHILD_CONCURRENCY="1"
- retry { exec { yarn --frozen-lockfile --check-files } }
+ retry { exec { npm ci } }
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
diff --git a/build/azure-pipelines/product-build-pr.yml b/build/azure-pipelines/product-build-pr.yml
index 7dce4d20265..025a1eeac67 100644
--- a/build/azure-pipelines/product-build-pr.yml
+++ b/build/azure-pipelines/product-build-pr.yml
@@ -21,12 +21,14 @@ variables:
value: oss
- name: VSCODE_STEP_ON_IT
value: false
+ - name: VSCODE_BUILD_AMD
+ value: false
jobs:
- ${{ if ne(variables['VSCODE_CIBUILD'], true) }}:
- job: Compile
displayName: Compile & Hygiene
- pool: 1es-oss-ubuntu-20.04-x64
+ pool: 1es-oss-ubuntu-22.04-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
@@ -37,7 +39,7 @@ jobs:
- job: Linuxx64UnitTest
displayName: Linux (Unit Tests)
- pool: 1es-oss-ubuntu-20.04-x64
+ pool: 1es-oss-ubuntu-22.04-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
@@ -48,6 +50,7 @@ jobs:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -55,7 +58,7 @@ jobs:
- job: Linuxx64IntegrationTest
displayName: Linux (Integration Tests)
- pool: 1es-oss-ubuntu-20.04-x64
+ pool: 1es-oss-ubuntu-22.04-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
@@ -66,6 +69,7 @@ jobs:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
@@ -73,7 +77,7 @@ jobs:
- job: Linuxx64SmokeTest
displayName: Linux (Smoke Tests)
- pool: 1es-oss-ubuntu-20.04-x64
+ pool: 1es-oss-ubuntu-22.04-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
@@ -84,6 +88,7 @@ jobs:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -91,14 +96,14 @@ jobs:
- job: LinuxCLI
displayName: Linux (CLI)
- pool: 1es-oss-ubuntu-20.04-x64
+ pool: 1es-oss-ubuntu-22.04-x64
timeoutInMinutes: 30
steps:
- template: cli/test.yml@self
- job: Windowsx64UnitTests
displayName: Windows (Unit Tests)
- pool: 1es-oss-windows-2019-x64
+ pool: 1es-oss-windows-2022-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
@@ -107,6 +112,7 @@ jobs:
- template: win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: x64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: true
@@ -115,8 +121,8 @@ jobs:
- job: Windowsx64IntegrationTests
displayName: Windows (Integration Tests)
- pool: 1es-oss-windows-2019-x64
- timeoutInMinutes: 30
+ pool: 1es-oss-windows-2022-x64
+ timeoutInMinutes: 60
variables:
VSCODE_ARCH: x64
NPM_ARCH: x64
@@ -124,6 +130,7 @@ jobs:
- template: win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: x64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
@@ -132,7 +139,7 @@ jobs:
# - job: Windowsx64SmokeTests
# displayName: Windows (Smoke Tests)
- # pool: 1es-oss-windows-2019-x64
+ # pool: 1es-oss-windows-2022-x64
# timeoutInMinutes: 30
# variables:
# VSCODE_ARCH: x64
@@ -149,7 +156,7 @@ jobs:
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
- job: Linuxx64MaintainNodeModulesCache
displayName: Linux (Maintain node_modules cache)
- pool: 1es-oss-ubuntu-20.04-x64
+ pool: 1es-oss-ubuntu-22.04-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
@@ -158,7 +165,7 @@ jobs:
- job: Windowsx64MaintainNodeModulesCache
displayName: Windows (Maintain node_modules cache)
- pool: 1es-oss-windows-2019-x64
+ pool: 1es-oss-windows-2022-x64
timeoutInMinutes: 30
variables:
VSCODE_ARCH: x64
diff --git a/build/azure-pipelines/product-build.yml b/build/azure-pipelines/product-build.yml
index 5357697484e..d4038dced08 100644
--- a/build/azure-pipelines/product-build.yml
+++ b/build/azure-pipelines/product-build.yml
@@ -100,6 +100,10 @@ parameters:
displayName: "Skip tests"
type: boolean
default: false
+ - name: VSCODE_BUILD_AMD # TODO@bpasero TODO@esm remove me once AMD is removed
+ displayName: "️❗ Build as AMD (!FOR EMERGENCY ONLY!) ️❗"
+ type: boolean
+ default: false
variables:
- name: VSCODE_PRIVATE_BUILD
@@ -110,6 +114,8 @@ variables:
value: ${{ parameters.CARGO_REGISTRY }}
- name: VSCODE_QUALITY
value: ${{ parameters.VSCODE_QUALITY }}
+ - name: VSCODE_BUILD_AMD
+ value: ${{ parameters.VSCODE_BUILD_AMD }}
- name: VSCODE_BUILD_STAGE_WINDOWS
value: ${{ or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}
- name: VSCODE_BUILD_STAGE_LINUX
@@ -148,6 +154,8 @@ variables:
value: microsoft/vscode-distro
- name: skipComponentGovernanceDetection
value: true
+ - name: ComponentDetection.Timeout
+ value: 600
- name: Codeql.SkipTaskAutoInjection
value: true
- name: ARTIFACT_PREFIX
@@ -182,9 +190,10 @@ extends:
validateToolOutput: None
allTools: true
codeql:
- compiled:
- enabled: true
runSourceLanguagesInSourceAnalysis: true
+ compiled:
+ enabled: false
+ justificationForDisabling: "CodeQL breaks ESRP CodeSign on macOS (ICM #520035761, githubcustomers/microsoft-codeql-support#198)"
credscan:
suppressionsFile: $(Build.SourcesDirectory)/build/azure-pipelines/config/CredScanSuppressions.json
eslint:
@@ -192,6 +201,7 @@ extends:
enableExclusions: true
exclusionsFilePath: $(Build.SourcesDirectory)/.eslintignore
sourceAnalysisPool: 1es-windows-2022-x64
+ createAdoIssuesForJustificationsForDisablement: false
containers:
snapcraft:
image: vscodehub.azurecr.io/vscode-linux-build-agent:snapcraft-x64
@@ -207,7 +217,7 @@ extends:
- job: Compile
timeoutInMinutes: 90
pool:
- name: 1es-ubuntu-20.04-x64
+ name: 1es-ubuntu-22.04-x64
os: linux
variables:
VSCODE_ARCH: x64
@@ -215,123 +225,130 @@ extends:
- template: build/azure-pipelines/product-compile.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
- - stage: CompileCLI
- dependsOn: []
- jobs:
- - ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
- - job: CLILinuxX64
- pool:
- name: 1es-ubuntu-20.04-x64
- os: linux
- steps:
- - template: build/azure-pipelines/linux/cli-build-linux.yml@self
- parameters:
- VSCODE_CHECK_ONLY: ${{ variables.VSCODE_CIBUILD }}
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_LINUX: ${{ parameters.VSCODE_BUILD_LINUX }}
+ - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX, true),eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true),eq(parameters.VSCODE_BUILD_LINUX_ARM64, true),eq(parameters.VSCODE_BUILD_ALPINE, true),eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true),eq(parameters.VSCODE_BUILD_MACOS, true),eq(parameters.VSCODE_BUILD_MACOS_ARM64, true),eq(parameters.VSCODE_BUILD_WIN32, true),eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
+ - stage: CompileCLI
+ dependsOn: []
+ jobs:
+ - ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
+ - job: CLILinuxX64
+ pool:
+ name: 1es-ubuntu-22.04-x64
+ os: linux
+ steps:
+ - template: build/azure-pipelines/linux/cli-build-linux.yml@self
+ parameters:
+ VSCODE_CHECK_ONLY: ${{ variables.VSCODE_CIBUILD }}
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_LINUX: ${{ parameters.VSCODE_BUILD_LINUX }}
- - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), or(eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true))) }}:
- - job: CLILinuxGnuARM
- pool:
- name: 1es-ubuntu-20.04-x64
- os: linux
- steps:
- - template: build/azure-pipelines/linux/cli-build-linux.yml@self
- parameters:
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_LINUX_ARMHF: ${{ parameters.VSCODE_BUILD_LINUX_ARMHF }}
- VSCODE_BUILD_LINUX_ARM64: ${{ parameters.VSCODE_BUILD_LINUX_ARM64 }}
-
- - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_ALPINE, true)) }}:
- - job: CLIAlpineX64
- pool:
- name: 1es-ubuntu-20.04-x64
- os: linux
- steps:
- - template: build/azure-pipelines/alpine/cli-build-alpine.yml@self
- parameters:
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_ALPINE: ${{ parameters.VSCODE_BUILD_ALPINE }}
-
- - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true)) }}:
- - job: CLIAlpineARM64
- pool:
- name: 1es-mariner-2.0-arm64
- os: linux
- hostArchitecture: arm64
- container: ubuntu-2004-arm64
- steps:
- - template: build/azure-pipelines/alpine/cli-build-alpine.yml@self
- parameters:
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_ALPINE_ARM64: ${{ parameters.VSCODE_BUILD_ALPINE_ARM64 }}
-
- - ${{ if eq(parameters.VSCODE_BUILD_MACOS, true) }}:
- - job: CLIMacOSX64
- pool:
- name: Azure Pipelines
- image: macOS-13
- os: macOS
- steps:
- - template: build/azure-pipelines/darwin/cli-build-darwin.yml@self
- parameters:
- VSCODE_CHECK_ONLY: ${{ variables.VSCODE_CIBUILD }}
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_MACOS: ${{ parameters.VSCODE_BUILD_MACOS }}
-
- - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}:
- - job: CLIMacOSARM64
- pool:
- name: Azure Pipelines
- image: macOS-13
- os: macOS
- steps:
- - template: build/azure-pipelines/darwin/cli-build-darwin.yml@self
- parameters:
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_MACOS_ARM64: ${{ parameters.VSCODE_BUILD_MACOS_ARM64 }}
+ - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), or(eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true))) }}:
+ - job: CLILinuxGnuARM
+ pool:
+ name: 1es-ubuntu-22.04-x64
+ os: linux
+ steps:
+ - template: build/azure-pipelines/linux/cli-build-linux.yml@self
+ parameters:
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_LINUX_ARMHF: ${{ parameters.VSCODE_BUILD_LINUX_ARMHF }}
+ VSCODE_BUILD_LINUX_ARM64: ${{ parameters.VSCODE_BUILD_LINUX_ARM64 }}
+
+ - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_ALPINE, true)) }}:
+ - job: CLIAlpineX64
+ pool:
+ name: 1es-ubuntu-22.04-x64
+ os: linux
+ steps:
+ - template: build/azure-pipelines/alpine/cli-build-alpine.yml@self
+ parameters:
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_ALPINE: ${{ parameters.VSCODE_BUILD_ALPINE }}
+
+ - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true)) }}:
+ - job: CLIAlpineARM64
+ pool:
+ name: 1es-mariner-2.0-arm64
+ os: linux
+ hostArchitecture: arm64
+ container: ubuntu-2004-arm64
+ steps:
+ - template: build/azure-pipelines/alpine/cli-build-alpine.yml@self
+ parameters:
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_ALPINE_ARM64: ${{ parameters.VSCODE_BUILD_ALPINE_ARM64 }}
+
+ - ${{ if eq(parameters.VSCODE_BUILD_MACOS, true) }}:
+ - job: CLIMacOSX64
+ pool:
+ name: Azure Pipelines
+ image: macOS-13
+ os: macOS
+ steps:
+ - template: build/azure-pipelines/darwin/cli-build-darwin.yml@self
+ parameters:
+ VSCODE_CHECK_ONLY: ${{ variables.VSCODE_CIBUILD }}
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_MACOS: ${{ parameters.VSCODE_BUILD_MACOS }}
- - ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
- - job: CLIWindowsX64
- pool:
- name: 1es-windows-2019-x64
- os: windows
- steps:
- - template: build/azure-pipelines/win32/cli-build-win32.yml@self
- parameters:
- VSCODE_CHECK_ONLY: ${{ variables.VSCODE_CIBUILD }}
- VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_WIN32: ${{ parameters.VSCODE_BUILD_WIN32 }}
+ - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}:
+ - job: CLIMacOSARM64
+ pool:
+ name: Azure Pipelines
+ image: macOS-13
+ os: macOS
+ steps:
+ - template: build/azure-pipelines/darwin/cli-build-darwin.yml@self
+ parameters:
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_MACOS_ARM64: ${{ parameters.VSCODE_BUILD_MACOS_ARM64 }}
+
+ - ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
+ - job: CLIWindowsX64
+ pool:
+ name: 1es-windows-2019-x64
+ os: windows
+ steps:
+ - template: build/azure-pipelines/win32/cli-build-win32.yml@self
+ parameters:
+ VSCODE_CHECK_ONLY: ${{ variables.VSCODE_CIBUILD }}
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_WIN32: ${{ parameters.VSCODE_BUILD_WIN32 }}
+
+ - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
+ - job: CLIWindowsARM64
+ pool:
+ name: 1es-windows-2019-x64
+ os: windows
+ steps:
+ - template: build/azure-pipelines/win32/cli-build-win32.yml@self
+ parameters:
+ VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_WIN32_ARM64: ${{ parameters.VSCODE_BUILD_WIN32_ARM64 }}
- - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
- - job: CLIWindowsARM64
- pool:
- name: 1es-windows-2019-x64
- os: windows
+ - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_COMPILE_ONLY, false)) }}:
+ - stage: CustomSDL
+ dependsOn: []
+ pool:
+ name: 1es-windows-2019-x64
+ os: windows
+ jobs:
+ - job: WindowsSDL
+ variables:
+ - group: 'API Scan'
steps:
- - template: build/azure-pipelines/win32/cli-build-win32.yml@self
+ - template: build/azure-pipelines/win32/sdl-scan-win32.yml@self
parameters:
+ VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
- VSCODE_BUILD_WIN32_ARM64: ${{ parameters.VSCODE_BUILD_WIN32_ARM64 }}
-
- - stage: CustomSDL
- dependsOn: []
- pool:
- name: 1es-windows-2019-x64
- os: windows
- jobs:
- - job: WindowsSDL
- variables:
- - group: 'API Scan'
- steps:
- - template: build/azure-pipelines/sdl-scan.yml@self
- ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true)) }}:
- stage: Windows
dependsOn:
- Compile
- - CompileCLI
+ - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX, true),eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true),eq(parameters.VSCODE_BUILD_LINUX_ARM64, true),eq(parameters.VSCODE_BUILD_ALPINE, true),eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true),eq(parameters.VSCODE_BUILD_MACOS, true),eq(parameters.VSCODE_BUILD_MACOS_ARM64, true),eq(parameters.VSCODE_BUILD_WIN32, true),eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
+ - CompileCLI
pool:
name: 1es-windows-2019-x64
os: windows
@@ -346,6 +363,7 @@ extends:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: x64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: true
@@ -360,6 +378,7 @@ extends:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: x64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
@@ -374,6 +393,7 @@ extends:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: x64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
@@ -389,6 +409,7 @@ extends:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: x64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
@@ -412,6 +433,7 @@ extends:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_ARCH: arm64
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
@@ -422,9 +444,10 @@ extends:
- stage: Linux
dependsOn:
- Compile
- - CompileCLI
+ - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX, true),eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true),eq(parameters.VSCODE_BUILD_LINUX_ARM64, true),eq(parameters.VSCODE_BUILD_ALPINE, true),eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true),eq(parameters.VSCODE_BUILD_MACOS, true),eq(parameters.VSCODE_BUILD_MACOS_ARM64, true),eq(parameters.VSCODE_BUILD_WIN32, true),eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
+ - CompileCLI
pool:
- name: 1es-ubuntu-20.04-x64
+ name: 1es-ubuntu-22.04-x64
os: linux
jobs:
- ${{ if eq(variables['VSCODE_CIBUILD'], true) }}:
@@ -439,6 +462,7 @@ extends:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -454,6 +478,7 @@ extends:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
@@ -469,6 +494,7 @@ extends:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -486,6 +512,7 @@ extends:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
@@ -511,6 +538,7 @@ extends:
parameters:
VSCODE_ARCH: armhf
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -526,6 +554,7 @@ extends:
parameters:
VSCODE_ARCH: arm64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -550,6 +579,7 @@ extends:
parameters:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARMHF_LEGACY_SERVER, true) }}:
@@ -562,6 +592,7 @@ extends:
parameters:
VSCODE_ARCH: armhf
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_RUN_INTEGRATION_TESTS: false
- ${{ if eq(parameters.VSCODE_BUILD_LINUX_ARM64_LEGACY_SERVER, true) }}:
@@ -574,15 +605,17 @@ extends:
parameters:
VSCODE_ARCH: arm64
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_RUN_INTEGRATION_TESTS: false
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_ALPINE'], true)) }}:
- stage: Alpine
dependsOn:
- Compile
- - CompileCLI
+ - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX, true),eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true),eq(parameters.VSCODE_BUILD_LINUX_ARM64, true),eq(parameters.VSCODE_BUILD_ALPINE, true),eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true),eq(parameters.VSCODE_BUILD_MACOS, true),eq(parameters.VSCODE_BUILD_MACOS_ARM64, true),eq(parameters.VSCODE_BUILD_WIN32, true),eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
+ - CompileCLI
pool:
- name: 1es-ubuntu-20.04-x64
+ name: 1es-ubuntu-22.04-x64
os: linux
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_ALPINE, true) }}:
@@ -606,7 +639,8 @@ extends:
- stage: macOS
dependsOn:
- Compile
- - CompileCLI
+ - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX, true),eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true),eq(parameters.VSCODE_BUILD_LINUX_ARM64, true),eq(parameters.VSCODE_BUILD_ALPINE, true),eq(parameters.VSCODE_BUILD_ALPINE_ARM64, true),eq(parameters.VSCODE_BUILD_MACOS, true),eq(parameters.VSCODE_BUILD_MACOS_ARM64, true),eq(parameters.VSCODE_BUILD_WIN32, true),eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
+ - CompileCLI
pool:
name: Azure Pipelines
image: macOS-13
@@ -624,6 +658,7 @@ extends:
- template: build/azure-pipelines/darwin/product-build-darwin.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: true
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -637,6 +672,7 @@ extends:
- template: build/azure-pipelines/darwin/product-build-darwin.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: true
@@ -650,6 +686,7 @@ extends:
- template: build/azure-pipelines/darwin/product-build-darwin.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -664,6 +701,7 @@ extends:
- template: build/azure-pipelines/darwin/product-build-darwin.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -678,6 +716,7 @@ extends:
- template: build/azure-pipelines/darwin/product-build-darwin.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }}
@@ -709,6 +748,7 @@ extends:
- template: build/azure-pipelines/darwin/product-build-darwin.yml@self
parameters:
VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }}
+ VSCODE_BUILD_AMD: ${{ variables.VSCODE_BUILD_AMD }}
VSCODE_CIBUILD: ${{ variables.VSCODE_CIBUILD }}
VSCODE_RUN_UNIT_TESTS: false
VSCODE_RUN_INTEGRATION_TESTS: false
@@ -748,7 +788,7 @@ extends:
dependsOn:
- Compile
pool:
- name: 1es-ubuntu-20.04-x64
+ name: 1es-ubuntu-22.04-x64
os: linux
jobs:
- ${{ if eq(parameters.VSCODE_BUILD_WEB, true) }}:
@@ -778,7 +818,7 @@ extends:
- stage: ApproveRelease
dependsOn: [] # run in parallel to compile stage
pool:
- name: 1es-ubuntu-20.04-x64
+ name: 1es-ubuntu-22.04-x64
os: linux
jobs:
- deployment: ApproveRelease
@@ -799,7 +839,7 @@ extends:
- ${{ if and(parameters.VSCODE_RELEASE, eq(variables['VSCODE_PRIVATE_BUILD'], false)) }}:
- ApproveRelease
pool:
- name: 1es-ubuntu-20.04-x64
+ name: 1es-ubuntu-22.04-x64
os: linux
jobs:
- job: ReleaseBuild
diff --git a/build/azure-pipelines/product-compile.yml b/build/azure-pipelines/product-compile.yml
index 9a3748ed6fc..ca8b6a7b3ea 100644
--- a/build/azure-pipelines/product-compile.yml
+++ b/build/azure-pipelines/product-compile.yml
@@ -1,6 +1,9 @@
parameters:
- name: VSCODE_QUALITY
type: string
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- task: NodeTool@0
@@ -12,7 +15,7 @@ steps:
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- template: ./distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -23,12 +26,12 @@ steps:
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js compile > .build/yarnlockhash
+ - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js compile > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -39,18 +42,17 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -60,15 +62,14 @@ steps:
- script: |
set -e
- npm i -g node-gyp@9.4.0
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
@@ -91,34 +92,47 @@ steps:
displayName: Create node_modules archive
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: yarn --cwd build compile && ./.github/workflows/check-clean-git-state.sh
+ - script: npm run compile
+ workingDirectory: build
+ displayName: Compile /build/ folder
+
+ - script: .github/workflows/check-clean-git-state.sh
displayName: Check /build/ folder
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: node build/azure-pipelines/distro/mixin-quality
displayName: Mixin distro quality
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - script: node migrate.mjs --disable-watch --enable-esm-to-amd
+ displayName: Migrate ESM -> AMD
+
- template: common/install-builtin-extensions.yml@self
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - script: yarn npm-run-all -lp core-ci-pr extensions-ci-pr hygiene eslint valid-layers-check vscode-dts-compile-check tsec-compile-check
+ - script: npm exec -- npm-run-all -lp core-ci-pr extensions-ci-pr hygiene eslint valid-layers-check vscode-dts-compile-check tsec-compile-check
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
- DISABLE_V8_COMPILE_CACHE: 1 # Disable v8 cache used by yarn v1.x, refs https://github.com/nodejs/node/issues/51555
displayName: Compile & Hygiene (OSS)
- ${{ else }}:
- - script: yarn npm-run-all -lp core-ci extensions-ci hygiene eslint valid-layers-check vscode-dts-compile-check tsec-compile-check
+ - script: npm exec -- npm-run-all -lp core-ci extensions-ci hygiene eslint valid-layers-check vscode-dts-compile-check tsec-compile-check
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
- DISABLE_V8_COMPILE_CACHE: 1 # Disable v8 cache used by yarn v1.x, refs https://github.com/nodejs/node/issues/51555
displayName: Compile & Hygiene (non-OSS)
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- script: |
set -e
- yarn --cwd test/smoke compile
- yarn --cwd test/integration/browser compile
- displayName: Compile test suites (non-OSS)
+ npm run compile
+ displayName: Compile smoke test suites (non-OSS)
+ workingDirectory: test/smoke
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
+ - script: |
+ set -e
+ npm run compile
+ displayName: Compile integration test suites (non-OSS)
+ workingDirectory: test/integration/browser
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: AzureCLI@2
@@ -164,7 +178,7 @@ steps:
sbomEnabled: false
displayName: Publish compilation artifact
- - script: yarn download-builtin-extensions-cg
+ - script: npm run download-builtin-extensions-cg
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download component details of built-in extensions
diff --git a/build/azure-pipelines/product-publish.yml b/build/azure-pipelines/product-publish.yml
index 2c57e131c1a..59012a938ac 100644
--- a/build/azure-pipelines/product-publish.yml
+++ b/build/azure-pipelines/product-publish.yml
@@ -8,14 +8,14 @@ steps:
- task: SFP.build-tasks.esrpclient-tools-task.EsrpClientTool@2
displayName: "Use EsrpClient"
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode-build-secrets
SecretsFilter: "github-distro-mixin-password,esrp-aad-username,esrp-aad-password"
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -26,10 +26,8 @@ steps:
- pwsh: Write-Host "##vso[build.addbuildtag]🚀"
displayName: Add build tag
- - pwsh: node build/npm/setupBuildYarnrc
- displayName: Prepare build dependencies
-
- - pwsh: yarn
+ - pwsh: |
+ npm ci
workingDirectory: build
displayName: Install build dependencies
diff --git a/build/azure-pipelines/product-release.yml b/build/azure-pipelines/product-release.yml
index dc084f5a04c..8afdcf10053 100644
--- a/build/azure-pipelines/product-release.yml
+++ b/build/azure-pipelines/product-release.yml
@@ -23,7 +23,12 @@ steps:
- script: |
set -e
- (cd build ; yarn)
+ npm ci
+ workingDirectory: build
+ displayName: Install /build dependencies
+
+ - script: |
+ set -e
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
diff --git a/build/azure-pipelines/publish-types/publish-types.yml b/build/azure-pipelines/publish-types/publish-types.yml
index 4fc31fb6b37..5f60ae5a262 100644
--- a/build/azure-pipelines/publish-types/publish-types.yml
+++ b/build/azure-pipelines/publish-types/publish-types.yml
@@ -34,7 +34,7 @@ steps:
- bash: |
# Install build dependencies
- (cd build && yarn)
+ (cd build && npm ci)
node build/azure-pipelines/publish-types/check-version.js
displayName: Check version
diff --git a/build/azure-pipelines/upload-configuration.js b/build/azure-pipelines/upload-configuration.js
deleted file mode 100644
index 39a44dc5c41..00000000000
--- a/build/azure-pipelines/upload-configuration.js
+++ /dev/null
@@ -1,112 +0,0 @@
-"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.getSettingsSearchBuildId = exports.shouldSetupSettingsSearch = void 0;
-const path = require("path");
-const os = require("os");
-const cp = require("child_process");
-const vfs = require("vinyl-fs");
-const util = require("../lib/util");
-const identity_1 = require("@azure/identity");
-const azure = require('gulp-azure-storage');
-const packageJson = require("../../package.json");
-const commit = process.env['BUILD_SOURCEVERSION'];
-function generateVSCodeConfigurationTask() {
- return new Promise((resolve, reject) => {
- const buildDir = process.env['AGENT_BUILDDIRECTORY'];
- if (!buildDir) {
- return reject(new Error('$AGENT_BUILDDIRECTORY not set'));
- }
- if (!shouldSetupSettingsSearch()) {
- console.log(`Only runs on main and release branches, not ${process.env.BUILD_SOURCEBRANCH}`);
- return resolve(undefined);
- }
- if (process.env.VSCODE_QUALITY !== 'insider' && process.env.VSCODE_QUALITY !== 'stable') {
- console.log(`Only runs on insider and stable qualities, not ${process.env.VSCODE_QUALITY}`);
- return resolve(undefined);
- }
- const result = path.join(os.tmpdir(), 'configuration.json');
- const userDataDir = path.join(os.tmpdir(), 'tmpuserdata');
- const extensionsDir = path.join(os.tmpdir(), 'tmpextdir');
- const arch = process.env['VSCODE_ARCH'];
- const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
- const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app';
- const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', 'code');
- const codeProc = cp.exec(`${appPath} --export-default-configuration='${result}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`, (err, stdout, stderr) => {
- clearTimeout(timer);
- if (err) {
- console.log(`err: ${err} ${err.message} ${err.toString()}`);
- reject(err);
- }
- if (stdout) {
- console.log(`stdout: ${stdout}`);
- }
- if (stderr) {
- console.log(`stderr: ${stderr}`);
- }
- resolve(result);
- });
- const timer = setTimeout(() => {
- codeProc.kill();
- reject(new Error('export-default-configuration process timed out'));
- }, 60 * 1000);
- codeProc.on('error', err => {
- clearTimeout(timer);
- reject(err);
- });
- });
-}
-function shouldSetupSettingsSearch() {
- const branch = process.env.BUILD_SOURCEBRANCH;
- return !!(branch && (/\/main$/.test(branch) || branch.indexOf('/release/') >= 0));
-}
-exports.shouldSetupSettingsSearch = shouldSetupSettingsSearch;
-function getSettingsSearchBuildId(packageJson) {
- try {
- const branch = process.env.BUILD_SOURCEBRANCH;
- const branchId = branch.indexOf('/release/') >= 0 ? 0 :
- /\/main$/.test(branch) ? 1 :
- 2; // Some unexpected branch
- const out = cp.execSync(`git rev-list HEAD --count`);
- const count = parseInt(out.toString());
- //
- // 1.25.1, 1,234,567 commits, main = 1250112345671
- return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId;
- }
- catch (e) {
- throw new Error('Could not determine build number: ' + e.toString());
- }
-}
-exports.getSettingsSearchBuildId = getSettingsSearchBuildId;
-async function main() {
- const configPath = await generateVSCodeConfigurationTask();
- if (!configPath) {
- return;
- }
- const settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
- if (!settingsSearchBuildId) {
- throw new Error('Failed to compute build number');
- }
- const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
- return new Promise((c, e) => {
- vfs.src(configPath)
- .pipe(azure.upload({
- account: process.env.AZURE_STORAGE_ACCOUNT,
- credential,
- container: 'configuration',
- prefix: `${settingsSearchBuildId}/${commit}/`
- }))
- .on('end', () => c())
- .on('error', (err) => e(err));
- });
-}
-if (require.main === module) {
- main().catch(err => {
- console.error(err);
- process.exit(1);
- });
-}
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1cGxvYWQtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztnR0FHZ0c7OztBQUVoRyw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCLG9DQUFvQztBQUNwQyxnQ0FBZ0M7QUFDaEMsb0NBQW9DO0FBQ3BDLDhDQUF5RDtBQUN6RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUM1QyxrREFBa0Q7QUFFbEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRWxELFNBQVMsK0JBQStCO0lBQ3ZDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7UUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRTtZQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUM3RixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxQjtRQUVELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRTtZQUN4RixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDNUYsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUI7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUM7UUFDdEksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUN2QixHQUFHLE9BQU8sb0NBQW9DLE1BQU0sNkJBQTZCLFdBQVcsdUJBQXVCLGFBQWEsR0FBRyxFQUNuSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdkIsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDWjtZQUVELElBQUksTUFBTSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDakM7WUFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUNELENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzdCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFZCxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMxQixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQix5QkFBeUI7SUFDeEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztJQUM5QyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFIRCw4REFHQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLFdBQWdDO0lBQ3hFLElBQUk7UUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFtQixDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUMseUJBQXlCO1FBRTlCLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFdkMsc0VBQXNFO1FBQ3RFLGtEQUFrRDtRQUNsRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDO0tBQ3JGO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3JFO0FBQ0YsQ0FBQztBQWhCRCw0REFnQkM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNsQixNQUFNLFVBQVUsR0FBRyxNQUFNLCtCQUErQixFQUFFLENBQUM7SUFFM0QsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNoQixPQUFPO0tBQ1A7SUFFRCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBFLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7S0FDbEQ7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGlDQUFzQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBRSxDQUFDLENBQUM7SUFFckosT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQzthQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUI7WUFDMUMsVUFBVTtZQUNWLFNBQVMsRUFBRSxlQUFlO1lBQzFCLE1BQU0sRUFBRSxHQUFHLHFCQUFxQixJQUFJLE1BQU0sR0FBRztTQUM3QyxDQUFDLENBQUM7YUFDRixFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3BCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7SUFDNUIsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDLENBQUMsQ0FBQztDQUNIIn0=
\ No newline at end of file
diff --git a/build/azure-pipelines/upload-nlsmetadata.js b/build/azure-pipelines/upload-nlsmetadata.js
index 34c2005a30f..5b6cd3ed1fd 100644
--- a/build/azure-pipelines/upload-nlsmetadata.js
+++ b/build/azure-pipelines/upload-nlsmetadata.js
@@ -16,13 +16,33 @@ const commit = process.env['BUILD_SOURCEVERSION'];
const credential = new identity_1.ClientSecretCredential(process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_CLIENT_SECRET']);
function main() {
return new Promise((c, e) => {
- es.merge(vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }), vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
+ const combinedMetadataJson = es.merge(
+ // vscode: we are not using `out-build/nls.metadata.json` here because
+ // it includes metadata for translators for `keys`. but for our purpose
+ // we want only the `keys` and `messages` as `string`.
+ es.merge(vfs.src('out-build/nls.keys.json', { base: 'out-build' }), vfs.src('out-build/nls.messages.json', { base: 'out-build' }))
.pipe(merge({
+ fileName: 'vscode.json',
+ jsonSpace: '',
+ concatArrays: true,
+ edit: (parsedJson, file) => {
+ if (file.base === 'out-build') {
+ if (file.basename === 'nls.keys.json') {
+ return { keys: parsedJson };
+ }
+ else {
+ return { messages: parsedJson };
+ }
+ }
+ }
+ })),
+ // extensions
+ vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' })).pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
concatArrays: true,
edit: (parsedJson, file) => {
- if (file.base === 'out-vscode-web-min') {
+ if (file.basename === 'vscode.json') {
return { vscode: parsedJson };
}
// Handle extensions and follow the same structure as the Core nls file.
@@ -72,13 +92,15 @@ function main() {
const key = manifestJson.publisher + '.' + manifestJson.name;
return { [key]: parsedJson };
},
- }))
+ }));
+ const nlsMessagesJs = vfs.src('out-build/nls.messages.js', { base: 'out-build' });
+ es.merge(combinedMetadataJson, nlsMessagesJs)
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
- console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
+ console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=${data.basename}]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
diff --git a/build/azure-pipelines/upload-nlsmetadata.ts b/build/azure-pipelines/upload-nlsmetadata.ts
index 416d0eec408..030cc8f0e5a 100644
--- a/build/azure-pipelines/upload-nlsmetadata.ts
+++ b/build/azure-pipelines/upload-nlsmetadata.ts
@@ -24,79 +24,103 @@ interface NlsMetadata {
function main(): Promise {
return new Promise((c, e) => {
+ const combinedMetadataJson = es.merge(
+ // vscode: we are not using `out-build/nls.metadata.json` here because
+ // it includes metadata for translators for `keys`. but for our purpose
+ // we want only the `keys` and `messages` as `string`.
+ es.merge(
+ vfs.src('out-build/nls.keys.json', { base: 'out-build' }),
+ vfs.src('out-build/nls.messages.json', { base: 'out-build' }))
+ .pipe(merge({
+ fileName: 'vscode.json',
+ jsonSpace: '',
+ concatArrays: true,
+ edit: (parsedJson, file) => {
+ if (file.base === 'out-build') {
+ if (file.basename === 'nls.keys.json') {
+ return { keys: parsedJson };
+ } else {
+ return { messages: parsedJson };
+ }
+ }
+ }
+ })),
- es.merge(
- vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }),
+ // extensions
vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }),
- vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
- .pipe(merge({
- fileName: 'combined.nls.metadata.json',
- jsonSpace: '',
- concatArrays: true,
- edit: (parsedJson, file) => {
- if (file.base === 'out-vscode-web-min') {
- return { vscode: parsedJson };
- }
+ vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' })
+ ).pipe(merge({
+ fileName: 'combined.nls.metadata.json',
+ jsonSpace: '',
+ concatArrays: true,
+ edit: (parsedJson, file) => {
+ if (file.basename === 'vscode.json') {
+ return { vscode: parsedJson };
+ }
- // Handle extensions and follow the same structure as the Core nls file.
- switch (file.basename) {
- case 'package.nls.json':
- // put package.nls.json content in Core NlsMetadata format
- // language packs use the key "package" to specify that
- // translations are for the package.json file
- parsedJson = {
- messages: {
- package: Object.values(parsedJson)
- },
- keys: {
- package: Object.keys(parsedJson)
- },
- bundles: {
- main: ['package']
- }
- };
- break;
+ // Handle extensions and follow the same structure as the Core nls file.
+ switch (file.basename) {
+ case 'package.nls.json':
+ // put package.nls.json content in Core NlsMetadata format
+ // language packs use the key "package" to specify that
+ // translations are for the package.json file
+ parsedJson = {
+ messages: {
+ package: Object.values(parsedJson)
+ },
+ keys: {
+ package: Object.keys(parsedJson)
+ },
+ bundles: {
+ main: ['package']
+ }
+ };
+ break;
- case 'nls.metadata.header.json':
- parsedJson = { header: parsedJson };
- break;
+ case 'nls.metadata.header.json':
+ parsedJson = { header: parsedJson };
+ break;
- case 'nls.metadata.json': {
- // put nls.metadata.json content in Core NlsMetadata format
- const modules = Object.keys(parsedJson);
+ case 'nls.metadata.json': {
+ // put nls.metadata.json content in Core NlsMetadata format
+ const modules = Object.keys(parsedJson);
- const json: NlsMetadata = {
- keys: {},
- messages: {},
- bundles: {
- main: []
- }
- };
- for (const module of modules) {
- json.messages[module] = parsedJson[module].messages;
- json.keys[module] = parsedJson[module].keys;
- json.bundles.main.push(module);
+ const json: NlsMetadata = {
+ keys: {},
+ messages: {},
+ bundles: {
+ main: []
}
- parsedJson = json;
- break;
+ };
+ for (const module of modules) {
+ json.messages[module] = parsedJson[module].messages;
+ json.keys[module] = parsedJson[module].keys;
+ json.bundles.main.push(module);
}
+ parsedJson = json;
+ break;
}
+ }
- // Get extension id and use that as the key
- const folderPath = path.join(file.base, file.relative.split('/')[0]);
- const manifest = readFileSync(path.join(folderPath, 'package.json'), 'utf-8');
- const manifestJson = JSON.parse(manifest);
- const key = manifestJson.publisher + '.' + manifestJson.name;
- return { [key]: parsedJson };
- },
- }))
+ // Get extension id and use that as the key
+ const folderPath = path.join(file.base, file.relative.split('/')[0]);
+ const manifest = readFileSync(path.join(folderPath, 'package.json'), 'utf-8');
+ const manifestJson = JSON.parse(manifest);
+ const key = manifestJson.publisher + '.' + manifestJson.name;
+ return { [key]: parsedJson };
+ },
+ }));
+
+ const nlsMessagesJs = vfs.src('out-build/nls.messages.js', { base: 'out-build' });
+
+ es.merge(combinedMetadataJson, nlsMessagesJs)
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data: Vinyl) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
- console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
+ console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=${data.basename}]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
diff --git a/build/azure-pipelines/upload-sourcemaps.js b/build/azure-pipelines/upload-sourcemaps.js
index 7cd68398734..2a01ab79d6b 100644
--- a/build/azure-pipelines/upload-sourcemaps.js
+++ b/build/azure-pipelines/upload-sourcemaps.js
@@ -8,6 +8,7 @@ const path = require("path");
const es = require("event-stream");
const vfs = require("vinyl-fs");
const util = require("../lib/util");
+const amd_1 = require("../lib/amd");
// @ts-ignore
const deps = require("../lib/dependencies");
const identity_1 = require("@azure/identity");
@@ -25,13 +26,16 @@ function src(base, maps = `${base}/**/*.map`) {
}));
}
function main() {
+ if ((0, amd_1.isAMD)()) {
+ return Promise.resolve(); // in AMD we run into some issues, but we want to unblock the build for recovery
+ }
const sources = [];
// vscode client maps (default)
if (!base) {
const vs = src('out-vscode-min'); // client source-maps only
sources.push(vs);
const productionDependencies = deps.getProductionDependencies(root);
- const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => `./${d}/**/*.map`);
+ const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => `./${d}/**/*.map`);
const nodeModules = vfs.src(productionDependenciesSrc, { base: '.' })
.pipe(util.cleanNodeModules(path.join(root, 'build', '.moduleignore')))
.pipe(util.cleanNodeModules(path.join(root, 'build', `.moduleignore.${process.platform}`)));
diff --git a/build/azure-pipelines/upload-sourcemaps.ts b/build/azure-pipelines/upload-sourcemaps.ts
index 366ad945499..aed6446d7e5 100644
--- a/build/azure-pipelines/upload-sourcemaps.ts
+++ b/build/azure-pipelines/upload-sourcemaps.ts
@@ -8,6 +8,7 @@ import * as es from 'event-stream';
import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs';
import * as util from '../lib/util';
+import { isAMD } from '../lib/amd';
// @ts-ignore
import * as deps from '../lib/dependencies';
import { ClientSecretCredential } from '@azure/identity';
@@ -29,6 +30,9 @@ function src(base: string, maps = `${base}/**/*.map`) {
}
function main(): Promise {
+ if (isAMD()) {
+ return Promise.resolve(); // in AMD we run into some issues, but we want to unblock the build for recovery
+ }
const sources: any[] = [];
// vscode client maps (default)
@@ -36,8 +40,8 @@ function main(): Promise {
const vs = src('out-vscode-min'); // client source-maps only
sources.push(vs);
- const productionDependencies: { name: string; path: string; version: string }[] = deps.getProductionDependencies(root);
- const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => `./${d}/**/*.map`);
+ const productionDependencies = deps.getProductionDependencies(root);
+ const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => `./${d}/**/*.map`);
const nodeModules = vfs.src(productionDependenciesSrc, { base: '.' })
.pipe(util.cleanNodeModules(path.join(root, 'build', '.moduleignore')))
.pipe(util.cleanNodeModules(path.join(root, 'build', `.moduleignore.${process.platform}`)));
diff --git a/build/azure-pipelines/web/product-build-web.yml b/build/azure-pipelines/web/product-build-web.yml
index 5e423d077c7..75cf20bfc94 100644
--- a/build/azure-pipelines/web/product-build-web.yml
+++ b/build/azure-pipelines/web/product-build-web.yml
@@ -7,7 +7,7 @@ steps:
- template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -27,12 +27,12 @@ steps:
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Registry
- - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js web > .build/yarnlockhash
+ - script: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.js web > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -43,18 +43,17 @@ steps:
- script: |
set -e
- npm config set registry "$NPM_REGISTRY" --location=project
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- echo "always-auth=true" >> .npmrc
- yarn config set registry "$NPM_REGISTRY"
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ npm config set registry "$NPM_REGISTRY"
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -65,12 +64,12 @@ steps:
- script: |
set -e
for i in {1..5}; do # try 5 times
- yarn --frozen-lockfile --check-files && break
- if [ $i -eq 3 ]; then
- echo "Yarn failed too many times" >&2
+ npm ci && break
+ if [ $i -eq 5 ]; then
+ echo "Npm install failed too many times" >&2
exit 1
fi
- echo "Yarn failed $i, trying again..."
+ echo "Npm install failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
@@ -98,13 +97,12 @@ steps:
- script: |
set -e
- yarn gulp vscode-web-min-ci
+ npm run gulp vscode-web-min-ci
ARCHIVE_PATH=".build/web/vscode-web.tar.gz"
mkdir -p $(dirname $ARCHIVE_PATH)
tar --owner=0 --group=0 -czf $ARCHIVE_PATH -C .. vscode-web
echo "##vso[task.setvariable variable=WEB_PATH]$ARCHIVE_PATH"
env:
- DISABLE_V8_COMPILE_CACHE: 1 # Disable v8 cache used by yarn v1.x, refs https://github.com/nodejs/node/issues/51555
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Build
@@ -152,7 +150,7 @@ steps:
- script: |
set -e
- AZURE_STORAGE_ACCOUNT="ticino" \
+ AZURE_STORAGE_ACCOUNT="vscodeweb" \
AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \
AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \
AZURE_CLIENT_SECRET="$(AZURE_CLIENT_SECRET)" \
diff --git a/build/azure-pipelines/win32/product-build-win32-cli-sign.yml b/build/azure-pipelines/win32/product-build-win32-cli-sign.yml
index 3b5668d0082..62b1b715af2 100644
--- a/build/azure-pipelines/win32/product-build-win32-cli-sign.yml
+++ b/build/azure-pipelines/win32/product-build-win32-cli-sign.yml
@@ -17,21 +17,20 @@ steps:
displayName: Setup NPM Registry
- powershell: |
- . azure-pipelines/win32/exec.ps1
+ . build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { npm config set registry "$env:NPM_REGISTRY" --location=project }
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- exec { Add-Content -Path .npmrc -Value "always-auth=true" }
- exec { yarn config set registry "$env:NPM_REGISTRY" }
- workingDirectory: build
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ exec { npm config set registry "$env:NPM_REGISTRY" }
+ $NpmrcPath = (npm config get userconfig)
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$NpmrcPath"
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: build/.npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -40,7 +39,7 @@ steps:
. azure-pipelines/win32/retry.ps1
$ErrorActionPreference = "Stop"
$env:CHILD_CONCURRENCY="1"
- retry { exec { yarn --frozen-lockfile --check-files } }
+ retry { exec { npm ci } }
workingDirectory: build
displayName: Install build dependencies
diff --git a/build/azure-pipelines/win32/product-build-win32-test.yml b/build/azure-pipelines/win32/product-build-win32-test.yml
index ce791c094e6..6c6a0949d0d 100644
--- a/build/azure-pipelines/win32/product-build-win32-test.yml
+++ b/build/azure-pipelines/win32/product-build-win32-test.yml
@@ -12,9 +12,12 @@ parameters:
- name: PUBLISH_TASK_NAME
type: string
default: PublishPipelineArtifact@0
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- - powershell: yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
+ - powershell: npm exec -- npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download Electron and Playwright
@@ -22,36 +25,54 @@ steps:
- ${{ if eq(parameters.VSCODE_RUN_UNIT_TESTS, true) }}:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: .\scripts\test.bat --tfs "Unit Tests"
- displayName: Run unit tests (Electron)
- timeoutInMinutes: 15
-
- - powershell: yarn test-node
- displayName: Run unit tests (node.js)
- timeoutInMinutes: 15
-
- - powershell: node test/unit/browser/index.js --sequential --browser chromium --tfs "Browser Unit Tests"
- displayName: Run unit tests (Browser, Chromium)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - powershell: .\scripts\test-amd.bat --tfs "Unit Tests"
+ displayName: Run unit tests (Electron) [AMD]
+ timeoutInMinutes: 15
+ - powershell: npm run test-node-amd
+ displayName: Run unit tests (node.js) [AMD]
+ timeoutInMinutes: 15
+ - powershell: node test/unit/browser/index.amd.js --sequential --browser chromium --tfs "Browser Unit Tests"
+ displayName: Run unit tests (Browser, Chromium) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - powershell: .\scripts\test.bat --tfs "Unit Tests"
+ displayName: Run unit tests (Electron)
+ timeoutInMinutes: 15
+ - powershell: npm run test-node
+ displayName: Run unit tests (node.js)
+ timeoutInMinutes: 15
+ - powershell: node test/unit/browser/index.js --sequential --browser chromium --tfs "Browser Unit Tests"
+ displayName: Run unit tests (Browser, Chromium)
+ timeoutInMinutes: 20
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: .\scripts\test.bat --build --tfs "Unit Tests"
- displayName: Run unit tests (Electron)
- timeoutInMinutes: 15
-
- - powershell: yarn test-node --build
- displayName: Run unit tests (node.js)
- timeoutInMinutes: 15
-
- - powershell: yarn test-browser-no-install --sequential --build --browser chromium --tfs "Browser Unit Tests"
- displayName: Run unit tests (Browser, Chromium)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - powershell: .\scripts\test-amd.bat --build --tfs "Unit Tests"
+ displayName: Run unit tests (Electron) [AMD]
+ timeoutInMinutes: 15
+ - script: npm run test-node-amd -- --build
+ displayName: Run unit tests (node.js) [AMD]
+ timeoutInMinutes: 15
+ - powershell: npm run test-browser-amd-no-install -- --sequential --build --browser chromium --tfs "Browser Unit Tests"
+ displayName: Run unit tests (Browser, Chromium) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - powershell: .\scripts\test.bat --build --tfs "Unit Tests"
+ displayName: Run unit tests (Electron)
+ timeoutInMinutes: 15
+ - powershell: npm run test-node -- --build
+ displayName: Run unit tests (node.js)
+ timeoutInMinutes: 15
+ - powershell: npm run test-browser-no-install -- --sequential --build --browser chromium --tfs "Browser Unit Tests"
+ displayName: Run unit tests (Browser, Chromium)
+ timeoutInMinutes: 20
- ${{ if eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true) }}:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { yarn gulp `
+ exec { npm run gulp `
compile-extension:configuration-editing `
compile-extension:css-language-features-server `
compile-extension:emmet `
@@ -61,7 +82,6 @@ steps:
compile-extension:ipynb `
compile-extension:notebook-renderers `
compile-extension:json-language-features-server `
- compile-extension:markdown-language-features-server `
compile-extension:markdown-language-features `
compile-extension-media `
compile-extension:microsoft-authentication `
@@ -78,12 +98,17 @@ steps:
condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: .\scripts\test-integration.bat --tfs "Integration Tests"
- displayName: Run integration tests (Electron)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - powershell: .\scripts\test-integration-amd.bat --tfs "Integration Tests"
+ displayName: Run integration tests (Electron) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - powershell: .\scripts\test-integration.bat --tfs "Integration Tests"
+ displayName: Run integration tests (Electron)
+ timeoutInMinutes: 20
- - powershell: .\scripts\test-web-integration.bat --browser firefox
- displayName: Run integration tests (Browser, Firefox)
+ - powershell: .\scripts\test-web-integration.bat --browser chromium
+ displayName: Run integration tests (Browser, Chromium)
timeoutInMinutes: 20
- powershell: .\scripts\test-remote-integration.bat
@@ -91,20 +116,36 @@ steps:
timeoutInMinutes: 20
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: |
- # Figure out the full absolute path of the product we just built
- # including the remote server and configure the integration tests
- # to run with these builds instead of running out of sources.
- . build/azure-pipelines/win32/exec.ps1
- $ErrorActionPreference = "Stop"
- $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
- $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
- $AppNameShort = $AppProductJson.nameShort
- $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"
- $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-server-win32-$(VSCODE_ARCH)"
- exec { .\scripts\test-integration.bat --build --tfs "Integration Tests" }
- displayName: Run integration tests (Electron)
- timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, true) }}:
+ - powershell: |
+ # Figure out the full absolute path of the product we just built
+ # including the remote server and configure the integration tests
+ # to run with these builds instead of running out of sources.
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
+ $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
+ $AppNameShort = $AppProductJson.nameShort
+ $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"
+ $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-server-win32-$(VSCODE_ARCH)"
+ exec { .\scripts\test-integration-amd.bat --build --tfs "Integration Tests" }
+ displayName: Run integration tests (Electron) [AMD]
+ timeoutInMinutes: 20
+ - ${{ if eq(parameters.VSCODE_BUILD_AMD, false) }}:
+ - powershell: |
+ # Figure out the full absolute path of the product we just built
+ # including the remote server and configure the integration tests
+ # to run with these builds instead of running out of sources.
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
+ $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
+ $AppNameShort = $AppProductJson.nameShort
+ $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"
+ $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-server-win32-$(VSCODE_ARCH)"
+ exec { .\scripts\test-integration.bat --build --tfs "Integration Tests" }
+ displayName: Run integration tests (Electron)
+ timeoutInMinutes: 20
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -138,32 +179,33 @@ steps:
condition: succeededOrFailed()
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: yarn --cwd test/smoke compile
+ - powershell: npm run compile
+ workingDirectory: test/smoke
displayName: Compile smoke tests
- - powershell: yarn gulp compile-extension-media
+ - powershell: npm run gulp compile-extension-media
displayName: Build extensions for smoke tests
- - powershell: yarn smoketest-no-compile --tracing
+ - powershell: npm run smoketest-no-compile -- --tracing
displayName: Run smoke tests (Electron)
timeoutInMinutes: 20
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: yarn smoketest-no-compile --tracing --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
+ - powershell: npm run smoketest-no-compile -- --tracing --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
displayName: Run smoke tests (Electron)
timeoutInMinutes: 20
- - powershell: yarn smoketest-no-compile --web --tracing --headless
+ - powershell: npm run smoketest-no-compile -- --web --tracing --headless
env:
VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)\vscode-server-win32-$(VSCODE_ARCH)-web
displayName: Run smoke tests (Browser, Chromium)
timeoutInMinutes: 20
- - powershell: yarn gulp compile-extension:vscode-test-resolver
+ - powershell: npm run gulp compile-extension:vscode-test-resolver
displayName: Compile test resolver extension
timeoutInMinutes: 20
- - powershell: yarn smoketest-no-compile --tracing --remote --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
+ - powershell: npm run smoketest-no-compile -- --tracing --remote --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
env:
VSCODE_REMOTE_SERVER_PATH: $(agent.builddirectory)\vscode-server-win32-$(VSCODE_ARCH)
displayName: Run smoke tests (Remote)
diff --git a/build/azure-pipelines/win32/product-build-win32.yml b/build/azure-pipelines/win32/product-build-win32.yml
index d3827b930f8..dddcb34a894 100644
--- a/build/azure-pipelines/win32/product-build-win32.yml
+++ b/build/azure-pipelines/win32/product-build-win32.yml
@@ -11,6 +11,9 @@ parameters:
type: boolean
- name: VSCODE_RUN_SMOKE_TESTS
type: boolean
+ - name: VSCODE_BUILD_AMD
+ type: boolean
+ default: false
steps:
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
@@ -32,7 +35,7 @@ steps:
- ${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
- template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
@@ -57,12 +60,12 @@ steps:
- pwsh: |
mkdir .build -ea 0
- node build/azure-pipelines/common/computeNodeModulesCacheKey.js win32 $(VSCODE_ARCH) > .build/yarnlockhash
+ node build/azure-pipelines/common/computeNodeModulesCacheKey.js win32 $(VSCODE_ARCH) > .build/packagelockhash
displayName: Prepare node_modules cache key
- task: Cache@2
inputs:
- key: '"node_modules" | .build/yarnlockhash'
+ key: '"node_modules" | .build/packagelockhash'
path: .build/node_modules_cache
cacheHitVar: NODE_MODULES_RESTORED
displayName: Restore node_modules cache
@@ -74,18 +77,18 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { npm config set registry "$env:NPM_REGISTRY" --location=project }
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- exec { Add-Content -Path .npmrc -Value "always-auth=true" }
- exec { yarn config set registry "$env:NPM_REGISTRY" }
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ exec { npm config set registry "$env:NPM_REGISTRY" }
+ $NpmrcPath = (npm config get userconfig)
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$NpmrcPath"
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
- displayName: Setup NPM & Yarn
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
+ workingFile: $(NPMRC_PATH)
condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
@@ -93,7 +96,7 @@ steps:
. build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/retry.ps1
$ErrorActionPreference = "Stop"
- retry { exec { yarn --frozen-lockfile --check-files } }
+ retry { exec { npm ci } }
env:
npm_config_arch: $(VSCODE_ARCH)
CHILD_CONCURRENCY: 1
@@ -129,7 +132,7 @@ steps:
retryCountOnTaskFailure: 3
- ${{ if eq(parameters.VSCODE_QUALITY, 'oss') }}:
- - powershell: yarn gulp "transpile-client-swc" "transpile-extensions"
+ - powershell: npm run gulp "transpile-client-swc" "transpile-extensions"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Transpile client and extensions
@@ -142,8 +145,8 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
- exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
+ exec { npm run gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
+ exec { npm run gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
echo "##vso[task.setvariable variable=BUILT_CLIENT]true"
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
env:
@@ -153,25 +156,23 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { yarn gulp "vscode-reh-win32-$(VSCODE_ARCH)-min-ci" }
+ exec { npm run gulp "vscode-reh-win32-$(VSCODE_ARCH)-min-ci" }
mv ..\vscode-reh-win32-$(VSCODE_ARCH) ..\vscode-server-win32-$(VSCODE_ARCH) # TODO@joaomoreno
echo "##vso[task.setvariable variable=BUILT_SERVER]true"
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(CodeSigningFolderPath),$(agent.builddirectory)/vscode-server-win32-$(VSCODE_ARCH)"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Build server
- condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { yarn gulp "vscode-reh-web-win32-$(VSCODE_ARCH)-min-ci" }
+ exec { npm run gulp "vscode-reh-web-win32-$(VSCODE_ARCH)-min-ci" }
mv ..\vscode-reh-web-win32-$(VSCODE_ARCH) ..\vscode-server-win32-$(VSCODE_ARCH)-web # TODO@joaomoreno
echo "##vso[task.setvariable variable=BUILT_WEB]true"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Build server (web)
- condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
- ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}:
- template: product-build-win32-test.yml@self
@@ -181,6 +182,7 @@ steps:
VSCODE_RUN_UNIT_TESTS: ${{ parameters.VSCODE_RUN_UNIT_TESTS }}
VSCODE_RUN_INTEGRATION_TESTS: ${{ parameters.VSCODE_RUN_INTEGRATION_TESTS }}
VSCODE_RUN_SMOKE_TESTS: ${{ parameters.VSCODE_RUN_SMOKE_TESTS }}
+ VSCODE_BUILD_AMD: ${{ parameters.VSCODE_BUILD_AMD }}
${{ if ne(parameters.VSCODE_QUALITY, 'oss') }}:
PUBLISH_TASK_NAME: 1ES.PublishPipelineArtifact@1
@@ -273,7 +275,7 @@ steps:
$env:ESRPPKI = "$(ESRP-PKI)"
$env:ESRPAADUsername = "$(esrp-aad-username)"
$env:ESRPAADPassword = "$(esrp-aad-password)"
- exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-system-setup" --sign }
+ exec { npm run -- gulp "vscode-win32-$(VSCODE_ARCH)-system-setup" --sign }
$SetupPath = ".build\win32-$(VSCODE_ARCH)\system-setup\VSCodeSetup-$(VSCODE_ARCH)-$(VSCODE_VERSION).exe"
mv .build\win32-$(VSCODE_ARCH)\system-setup\VSCodeSetup.exe $SetupPath
echo "##vso[task.setvariable variable=SYSTEM_SETUP_PATH]$SetupPath"
@@ -285,7 +287,7 @@ steps:
$env:ESRPPKI = "$(ESRP-PKI)"
$env:ESRPAADUsername = "$(esrp-aad-username)"
$env:ESRPAADPassword = "$(esrp-aad-password)"
- exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-user-setup" --sign }
+ exec { npm run -- gulp "vscode-win32-$(VSCODE_ARCH)-user-setup" --sign }
$SetupPath = ".build\win32-$(VSCODE_ARCH)\user-setup\VSCodeUserSetup-$(VSCODE_ARCH)-$(VSCODE_VERSION).exe"
mv .build\win32-$(VSCODE_ARCH)\user-setup\VSCodeSetup.exe $SetupPath
echo "##vso[task.setvariable variable=USER_SETUP_PATH]$SetupPath"
@@ -312,7 +314,7 @@ steps:
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Server"
sbomPackageVersion: $(Build.SourceVersion)
- condition: and(succeededOrFailed(), ne(variables['SERVER_PATH'], ''), ne(variables['VSCODE_ARCH'], 'arm64'))
+ condition: and(succeededOrFailed(), ne(variables['SERVER_PATH'], ''))
displayName: Publish server archive
- task: 1ES.PublishPipelineArtifact@1
@@ -322,7 +324,7 @@ steps:
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)-web
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Web"
sbomPackageVersion: $(Build.SourceVersion)
- condition: and(succeededOrFailed(), ne(variables['WEB_PATH'], ''), ne(variables['VSCODE_ARCH'], 'arm64'))
+ condition: and(succeededOrFailed(), ne(variables['WEB_PATH'], ''))
displayName: Publish web server archive
- task: 1ES.PublishPipelineArtifact@1
diff --git a/build/azure-pipelines/sdl-scan.yml b/build/azure-pipelines/win32/sdl-scan-win32.yml
similarity index 51%
rename from build/azure-pipelines/sdl-scan.yml
rename to build/azure-pipelines/win32/sdl-scan-win32.yml
index af20a305d9c..fc40b9a0e60 100644
--- a/build/azure-pipelines/sdl-scan.yml
+++ b/build/azure-pipelines/win32/sdl-scan-win32.yml
@@ -1,14 +1,8 @@
parameters:
- - name: NPM_REGISTRY
- displayName: "Custom NPM Registry"
- type: string
- default: "https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/"
- - name: NPM_ARCH
- type: string
- default: x64
- name: VSCODE_ARCH
type: string
- default: x64
+ - name: VSCODE_QUALITY
+ type: string
steps:
- task: NodeTool@0
@@ -17,49 +11,48 @@ steps:
versionFilePath: .nvmrc
nodejsMirror: https://github.com/joaomoreno/node-mirror/releases/download
- - template: ./distro/download-distro.yml
+ - task: UsePythonVersion@0
+ inputs:
+ versionSpec: "3.x"
+ addToPath: true
+
+ - template: ../distro/download-distro.yml@self
- - task: AzureKeyVault@1
+ - task: AzureKeyVault@2
displayName: "Azure Key Vault: Get Secrets"
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode-build-secrets
SecretsFilter: "github-distro-mixin-password"
+ - powershell: node build/setup-npm-registry.js $env:NPM_REGISTRY
+ condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
+ displayName: Setup NPM Registry
+
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { npm config set registry "${{ parameters.NPM_REGISTRY }}" --location=project }
- # npm >v7 deprecated the `always-auth` config option, refs npm/cli@72a7eeb
- # following is a workaround for yarn to send authorization header
- # for GET requests to the registry.
- exec { Add-Content -Path .npmrc -Value "always-auth=true" }
- exec { yarn config set registry "${{ parameters.NPM_REGISTRY }}" }
- condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne('${{ parameters.NPM_REGISTRY }}', 'none'))
- displayName: Setup NPM & Yarn
+ # Set the private NPM registry to the global npmrc file
+ # so that authentication works for subfolders like build/, remote/, extensions/ etc
+ # which does not have their own .npmrc file
+ exec { npm config set registry "$env:NPM_REGISTRY" }
+ $NpmrcPath = (npm config get userconfig)
+ echo "##vso[task.setvariable variable=NPMRC_PATH]$NpmrcPath"
+ condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
+ displayName: Setup NPM
- task: npmAuthenticate@0
inputs:
- workingFile: .npmrc
- condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne('${{ parameters.NPM_REGISTRY }}', 'none'))
+ workingFile: $(NPMRC_PATH)
+ condition: and(succeeded(), ne(variables['NPM_REGISTRY'], 'none'))
displayName: Setup NPM Authentication
- - powershell: |
- . build/azure-pipelines/win32/exec.ps1
- $ErrorActionPreference = "Stop"
- exec { node build/setup-npm-registry.js "${{ parameters.NPM_REGISTRY }}" }
- condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), ne('${{ parameters.NPM_REGISTRY }}', 'none'))
- displayName: Setup NPM Registry
-
- pwsh: |
$includes = @'
{
'target_defaults': {
'conditions': [
['OS=="win"', {
- 'msvs_configuration_attributes': {
- 'SpectreMitigation': 'Spectre'
- },
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': [
@@ -89,11 +82,13 @@ steps:
. build/azure-pipelines/win32/exec.ps1
. build/azure-pipelines/win32/retry.ps1
$ErrorActionPreference = "Stop"
- retry { exec { yarn --frozen-lockfile --check-files } }
+ retry { exec { npm ci } }
env:
+ npm_config_arch: ${{ parameters.VSCODE_ARCH }}
+ CHILD_CONCURRENCY: 1
+ ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
- CHILD_CONCURRENCY: 1
displayName: Install dependencies
- script: node build/azure-pipelines/distro/mixin-npm
@@ -102,46 +97,62 @@ steps:
- script: node build/azure-pipelines/distro/mixin-quality
displayName: Mixin distro quality
env:
- VSCODE_QUALITY: stable
+ VSCODE_QUALITY: ${{ parameters.VSCODE_QUALITY }}
- - powershell: yarn compile
+ - powershell: npm run compile
displayName: Compile
- - powershell: yarn gulp "vscode-symbols-win32-${{ parameters.VSCODE_ARCH }}"
+ - powershell: |
+ Get-ChildItem '$(Build.SourcesDirectory)' -Recurse -Filter "*.exe"
+ Get-ChildItem '$(Build.SourcesDirectory)' -Recurse -Filter "*.dll"
+ Get-ChildItem '$(Build.SourcesDirectory)' -Recurse -Filter "*.node"
+ Get-ChildItem '$(Build.SourcesDirectory)' -Recurse -Filter "*.pdb"
+ displayName: List files
+
+ - powershell: npm run gulp "vscode-symbols-win32-${{ parameters.VSCODE_ARCH }}"
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: Download Symbols
+ - powershell: |
+ Get-ChildItem '$(Agent.BuildDirectory)\scanbin' -Recurse -Filter "*.exe"
+ Get-ChildItem '$(Agent.BuildDirectory)\scanbin' -Recurse -Filter "*.dll"
+ Get-ChildItem '$(Agent.BuildDirectory)\scanbin' -Recurse -Filter "*.node"
+ Get-ChildItem '$(Agent.BuildDirectory)\scanbin' -Recurse -Filter "*.pdb"
+ displayName: List files again
+
- task: BinSkim@4
inputs:
InputType: "Basic"
Function: "analyze"
TargetPattern: "guardianGlob"
AnalyzeIgnorePdbLoadError: true
- AnalyzeTargetGlob: '$(agent.builddirectory)\scanbin\**.dll;$(agent.builddirectory)\scanbin\**.exe;$(agent.builddirectory)\scanbin\**.node'
- AnalyzeLocalSymbolDirectories: '$(agent.builddirectory)\scanbin\VSCode-win32-${{ parameters.VSCODE_ARCH }}\pdb'
+ AnalyzeTargetGlob: '$(Agent.BuildDirectory)\scanbin\**.dll;$(Agent.BuildDirectory)\scanbin\**.exe;$(Agent.BuildDirectory)\scanbin\**.node'
+ AnalyzeLocalSymbolDirectories: '$(Agent.BuildDirectory)\scanbin\VSCode-win32-${{ parameters.VSCODE_ARCH }}\pdb'
- task: CopyFiles@2
displayName: 'Collect Symbols for API Scan'
inputs:
SourceFolder: $(Agent.BuildDirectory)
Contents: 'scanbin\**\*.pdb'
- TargetFolder: '$(agent.builddirectory)\symbols'
+ TargetFolder: '$(Agent.BuildDirectory)\symbols'
flattenFolders: true
condition: succeeded()
- # - task: APIScan@2
- # inputs:
- # softwareFolder: $(agent.builddirectory)\scanbin
- # softwareName: 'vscode-client'
- # softwareVersionNum: '1'
- # symbolsFolder: 'SRV*http://symweb;$(agent.builddirectory)\symbols'
- # isLargeApp: false
- # toolVersion: 'Latest'
- # displayName: Run ApiScan
- # condition: succeeded()
- # env:
- # AzureServicesAuthConnectionString: $(apiscan-connectionstring)
+ - task: APIScan@2
+ inputs:
+ softwareFolder: $(Agent.BuildDirectory)\scanbin
+ softwareName: 'vscode-client'
+ softwareVersionNum: '1'
+ symbolsFolder: 'srv*https://symweb.azurefd.net;$(Agent.BuildDirectory)\symbols'
+ isLargeApp: false
+ toolVersion: 'Latest'
+ azureSubscription: 'vscode-apiscan'
+ displayName: Run ApiScan
+ condition: succeeded()
+ env:
+ AzureServicesAuthConnectionString: $(apiscan-connectionstring)
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- task: PublishSecurityAnalysisLogs@3
inputs:
diff --git a/build/buildfile.js b/build/buildfile.js
new file mode 100644
index 00000000000..0e323ac0faf
--- /dev/null
+++ b/build/buildfile.js
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const { isAMD } = require('./lib/amd');
+
+/**
+ * @param {string} name
+ * @param {string[]=} exclude
+ * @returns {import('./lib/bundle').IEntryPoint}
+ */
+function createModuleDescription(name, exclude) {
+
+ let excludes = ['vs/css'];
+ if (Array.isArray(exclude) && exclude.length > 0) {
+ excludes = excludes.concat(exclude);
+ }
+
+ return {
+ name: name,
+ include: [],
+ exclude: excludes
+ };
+}
+
+/**
+ * @param {string} name
+ */
+function createEditorWorkerModuleDescription(name) {
+ const amdVariant = createModuleDescription(name, ['vs/base/common/worker/simpleWorker', 'vs/editor/common/services/editorSimpleWorker']);
+ amdVariant.target = 'amd';
+
+ const esmVariant = { ...amdVariant, dest: undefined };
+ esmVariant.target = 'esm';
+ esmVariant.name = `${esmVariant.name}.esm`;
+
+ return [amdVariant, esmVariant];
+}
+
+// TODO@esm take the editor simple worker top level and rename away from "base"
+exports.base = [
+ {
+ name: 'vs/editor/common/services/editorSimpleWorker',
+ include: ['vs/base/common/worker/simpleWorker'],
+ exclude: [],
+ prepend: [
+ { path: 'vs/loader.js' },
+ { path: 'vs/base/worker/workerMain.js' }
+ ],
+ dest: 'vs/base/worker/workerMain.js',
+ target: 'amd'
+ },
+ {
+ name: 'vs/editor/common/services/editorSimpleWorker.esm',
+ target: 'esm'
+ },
+ {
+ name: 'vs/base/common/worker/simpleWorker',
+ exclude: [],
+ target: 'amd'
+ }
+];
+
+exports.workerExtensionHost = createEditorWorkerModuleDescription('vs/workbench/api/worker/extensionHostWorker');
+exports.workerNotebook = createEditorWorkerModuleDescription('vs/workbench/contrib/notebook/common/services/notebookSimpleWorker');
+exports.workerLanguageDetection = createEditorWorkerModuleDescription('vs/workbench/services/languageDetection/browser/languageDetectionSimpleWorker');
+exports.workerLocalFileSearch = createEditorWorkerModuleDescription('vs/workbench/services/search/worker/localFileSearch');
+exports.workerProfileAnalysis = createEditorWorkerModuleDescription('vs/platform/profiling/electron-sandbox/profileAnalysisWorker');
+exports.workerOutputLinks = createEditorWorkerModuleDescription('vs/workbench/contrib/output/common/outputLinkComputer');
+exports.workerBackgroundTokenization = createEditorWorkerModuleDescription('vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.worker');
+
+exports.workbenchDesktop = function () {
+ return !isAMD() ? [
+ createModuleDescription('vs/workbench/contrib/debug/node/telemetryApp'),
+ createModuleDescription('vs/platform/files/node/watcher/watcherMain'),
+ createModuleDescription('vs/platform/terminal/node/ptyHostMain'),
+ createModuleDescription('vs/workbench/api/node/extensionHostProcess'),
+ createModuleDescription('vs/workbench/contrib/issue/electron-sandbox/issueReporterMain'),
+ createModuleDescription('vs/workbench/workbench.desktop.main')
+ ] : [
+ ...createEditorWorkerModuleDescription('vs/workbench/contrib/output/common/outputLinkComputer'),
+ ...createEditorWorkerModuleDescription('vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.worker'),
+ createModuleDescription('vs/workbench/contrib/debug/node/telemetryApp'),
+ createModuleDescription('vs/platform/files/node/watcher/watcherMain'),
+ createModuleDescription('vs/platform/terminal/node/ptyHostMain'),
+ createModuleDescription('vs/workbench/api/node/extensionHostProcess'),
+ createModuleDescription('vs/workbench/contrib/issue/electron-sandbox/issueReporterMain'),
+ ];
+};
+
+exports.workbenchWeb = function () {
+ return !isAMD() ? [
+ createModuleDescription('vs/workbench/workbench.web.main')
+ ] : [
+ ...createEditorWorkerModuleDescription('vs/workbench/contrib/output/common/outputLinkComputer'),
+ ...createEditorWorkerModuleDescription('vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.worker'),
+ createModuleDescription('vs/code/browser/workbench/workbench', ['vs/workbench/workbench.web.main.internal'])
+ ];
+};
+
+exports.keyboardMaps = [
+ createModuleDescription('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.linux'),
+ createModuleDescription('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.darwin'),
+ createModuleDescription('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.win')
+];
+
+exports.code = [
+ createModuleDescription('vs/code/electron-main/main'),
+ createModuleDescription('vs/code/node/cli'),
+ createModuleDescription('vs/code/node/cliProcessMain', ['vs/code/node/cli']),
+ createModuleDescription('vs/code/electron-utility/sharedProcess/sharedProcessMain'),
+ createModuleDescription('vs/code/electron-sandbox/processExplorer/processExplorerMain')
+];
+
+exports.codeWeb = [
+ createModuleDescription('vs/code/browser/workbench/workbench')
+];
+
+exports.entrypoint = createModuleDescription;
diff --git a/build/checksums/electron.txt b/build/checksums/electron.txt
index a80aa1531f1..43943ccac3b 100644
--- a/build/checksums/electron.txt
+++ b/build/checksums/electron.txt
@@ -1,75 +1,75 @@
-3d3d8bb185d7b63b0db910661fdd69d6381afb8c97742bbd2526a9c932e1f8ca *chromedriver-v29.4.0-darwin-arm64.zip
-c3d075943d87604ffa50382cc8d5798485349544ca391cab88c892f889d3b14c *chromedriver-v29.4.0-darwin-x64.zip
-6d62d2dba55e4419fa003d45f93dad1324ec29a4d3eb84fd9fd5fd7a64339389 *chromedriver-v29.4.0-linux-arm64.zip
-81bb3d362331c7296f700b1b0e8f07c4c7739b1151f698cd56af927bedda59e7 *chromedriver-v29.4.0-linux-armv7l.zip
-ab593cc39aefac8c5abd259e31f6add4b2b70c52231724a6c08ac1872b4a0edf *chromedriver-v29.4.0-linux-x64.zip
-705d42ccc05b2c48b0673b9dcf63eb78772bb79dba078a523d384ed2481bc9c0 *chromedriver-v29.4.0-mas-arm64.zip
-956a7caa28eeeb0c02eb7638a53215ffd89b4f12880f0893ff10f497ca1a8117 *chromedriver-v29.4.0-mas-x64.zip
-1f070176aa33e0139d61a3d758fd2f015f09bb275577293fe93564749b6310ba *chromedriver-v29.4.0-win32-arm64.zip
-38a71526d243bcb73c28cb648bd4816d70b5e643df52f9f86a83416014589744 *chromedriver-v29.4.0-win32-ia32.zip
-f90750d3589cb3c9f6f0ebc70d5e025cf81c382e8c23fa47a54570696a478ef0 *chromedriver-v29.4.0-win32-x64.zip
-05dffc90dd1341cc7a6b50127985e4e217fef7f50a173c7d0ff34039dd2d81b6 *electron-api.json
-7f63f7cf675ba6dec3a5e4173d729bd53c75f81e612f809641d9d0c4d9791649 *electron-v29.4.0-darwin-arm64-dsym-snapshot.zip
-aa29530fcafa4db364978d4f414a6ec2005ea695f7fee70ffbe5e114e9e453f0 *electron-v29.4.0-darwin-arm64-dsym.zip
-8d12fb6d9bcdf5bbfc93dbcd1cac348735dc6f98aa450ee03ec7837a01a8a938 *electron-v29.4.0-darwin-arm64-symbols.zip
-c16d05f1231bb3c77da05ab236b454b3a2b6a642403be51e7c9b16cd2c421a19 *electron-v29.4.0-darwin-arm64.zip
-2dfc1017831ab2f6e9ddb575d3b9cff5a0d56f16a335a3c0df508e964e2db963 *electron-v29.4.0-darwin-x64-dsym-snapshot.zip
-025de6aa39d98762928e1b700f46177e74be20101b27457659b938e2c69db326 *electron-v29.4.0-darwin-x64-dsym.zip
-ec4eb0a618207233985ceaab297be34b3d4f0813d88801d5637295b238dd661a *electron-v29.4.0-darwin-x64-symbols.zip
-8ed7924f77a5c43c137a57097c5c47c2e8e9a78197e18af11a767c98035c123e *electron-v29.4.0-darwin-x64.zip
-bde1772fa8ac4850e108012a9edd3bd93472bad8f68ddd55fca355dad81dde4f *electron-v29.4.0-linux-arm64-debug.zip
-dfe7852a7423196efb2205c788d942db3ffc9de6ce52577e173bcf7ca6973d48 *electron-v29.4.0-linux-arm64-symbols.zip
-c3764d6c3799950e3418e8e5a5a5b2c41abe421dd8bcdebf054c7c85798d9860 *electron-v29.4.0-linux-arm64.zip
-bde1772fa8ac4850e108012a9edd3bd93472bad8f68ddd55fca355dad81dde4f *electron-v29.4.0-linux-armv7l-debug.zip
-360668ba669cb2c01c2f960cdee76c29670e6ce907ccc0718e971a04af594ce9 *electron-v29.4.0-linux-armv7l-symbols.zip
-c5e92943ad78b4e41a32ae53c679e148ea2ae09f95f914b1834dbdbae578ba91 *electron-v29.4.0-linux-armv7l.zip
-375be885426bcbd272bd068bfcef41a83296c2f8e61e633233d2a9e9a69242fc *electron-v29.4.0-linux-x64-debug.zip
-847e0f75624616c2918b33de2eefeec63419bd250685610d3f52fa115527d2b9 *electron-v29.4.0-linux-x64-symbols.zip
-91e5eb374c2c85a07c2d4e99a89eb18515ff0169a49c3fa75289800e1225729e *electron-v29.4.0-linux-x64.zip
-098f973537c3d9679a69409d0b84bcc1a6113bb2002ee60068e2c22f335a3855 *electron-v29.4.0-mas-arm64-dsym-snapshot.zip
-2724aa32eb441eea21680d95fc1efdd75ac473fa19623c7acf3d546419e96154 *electron-v29.4.0-mas-arm64-dsym.zip
-98dd81914752a57da4cbaad1f0aa94b16335f9b8f997be9aa049be90b96b2886 *electron-v29.4.0-mas-arm64-symbols.zip
-fd2663f65c1f995304e3eb65870b7146adfefef07cf82bf44de75855fd4f36e8 *electron-v29.4.0-mas-arm64.zip
-237983b2169e69bb73aa0987e871e3e486755904b71ebe36c3e902377f92754a *electron-v29.4.0-mas-x64-dsym-snapshot.zip
-a5d59599827d32ef322b99eee8416e39235f4c7a0ada78342a885665e0b732dd *electron-v29.4.0-mas-x64-dsym.zip
-5182e7697ac0591e0b95c33f70316af24093c9100f442be2cee0039660e959ac *electron-v29.4.0-mas-x64-symbols.zip
-e0ee7057aff0240a70b9ed75ff44d55aeae9af67fbc8915f741711a8bb6fe744 *electron-v29.4.0-mas-x64.zip
-2802872dfc6de0f0e2e8cef9d2f4f384e3d82b20ad36fc981c4e725dd2f2abcd *electron-v29.4.0-win32-arm64-pdb.zip
-d49c954dc25ae9e4c75e61af80b9718014c52f016f43a29071913f0e7100c7bd *electron-v29.4.0-win32-arm64-symbols.zip
-c9f31ae6408aa6936b5d683eda601773789185890375cd097e61e924d4fed77a *electron-v29.4.0-win32-arm64-toolchain-profile.zip
-483d692efbe4fb1231ff63afb8a236b2e22b486fbe5ac6abbc8b208abf94a4d3 *electron-v29.4.0-win32-arm64.zip
-98458f49ba67a08e473d475a68a2818d9df076a5246fbc9b45403e8796f9d35b *electron-v29.4.0-win32-ia32-pdb.zip
-69d505d4ae59d9dddf83c4e530e45dd7c5bc64d6da90cf4f851e523be9e51014 *electron-v29.4.0-win32-ia32-symbols.zip
-c9f31ae6408aa6936b5d683eda601773789185890375cd097e61e924d4fed77a *electron-v29.4.0-win32-ia32-toolchain-profile.zip
-d5a21a17a64e9638f49f057356af23b51f56bd6a7fea3c2e0a28ff3186a7bc41 *electron-v29.4.0-win32-ia32.zip
-521ee7b3398c4dc395b43dac86cd099e86a6123de2b43636ee805b7da014ed3f *electron-v29.4.0-win32-x64-pdb.zip
-e33848ebd6c6e4ce431aa367bef887050947a136e883677cfc524ca5cabc1e98 *electron-v29.4.0-win32-x64-symbols.zip
-c9f31ae6408aa6936b5d683eda601773789185890375cd097e61e924d4fed77a *electron-v29.4.0-win32-x64-toolchain-profile.zip
-e4ef85aa3608221f8a3e011c1b1c2d2d36093ad19bda12d16b3816929fb6c99b *electron-v29.4.0-win32-x64.zip
-707ee08593289ee83514b4fc55123611309f995788f38a5ec03e285741aac1c8 *electron.d.ts
-281b5f4a49de55fdb86b1662530f07f2ced1252c878eb7a941c88ede545339e0 *ffmpeg-v29.4.0-darwin-arm64.zip
-0b735912df9b2ff3d03eb23942e03bc0116d82f1291d0a45cbde14177c2f3066 *ffmpeg-v29.4.0-darwin-x64.zip
-4e2ba537d7c131abbd34168bce2c28cc9ef6262b217d5f4085afccfdf9635da6 *ffmpeg-v29.4.0-linux-arm64.zip
-4aa56ad5d849f4e61af22678a179346b68aec9100282e1b8a43df25d95721677 *ffmpeg-v29.4.0-linux-armv7l.zip
-0558e6e1f78229d303e16d4d8c290794baa9adc619fdd2ddccadb3ea241a1df4 *ffmpeg-v29.4.0-linux-x64.zip
-224f15d8f96c75348cd7f1b85c4eab63468fae1e50ff4b1381e08011cf76e4f7 *ffmpeg-v29.4.0-mas-arm64.zip
-175ec79f0dc4c5966d9a0ca6ec1674106340ecc64503585c12c2f854249af06f *ffmpeg-v29.4.0-mas-x64.zip
-5fa13744b87fef1bfd24a37513677f446143e085504541f8ce97466803bd1893 *ffmpeg-v29.4.0-win32-arm64.zip
-d7ba316bb7e13025c9db29e0acafebb540b7716c9f111e469733615d8521186a *ffmpeg-v29.4.0-win32-ia32.zip
-35c70a28bcfd4f0b1f8c985d3d1348936bd60767d231ce28ba38f3daeeef64bb *ffmpeg-v29.4.0-win32-x64.zip
-8c7228ea0ecab25a1f7fcd1ba9680684d19f9671a497113d71a851a53867b048 *hunspell_dictionaries.zip
-7552547c8d585b9bc43518d239d7ce3ad7c5cad0346b07cdcfc1eab638b2b794 *libcxx-objects-v29.4.0-linux-arm64.zip
-76054a779d4845ad752b625213ce8990f08dcc5b89aa20660dd4f2e817ba30a8 *libcxx-objects-v29.4.0-linux-armv7l.zip
-761c317a9c874bd3d1118d0ecad33c4be23727f538cfbb42a08dd87c68da6039 *libcxx-objects-v29.4.0-linux-x64.zip
-f98f9972cc30200b8e05815f5a9cd5cec04bdeee0e48ae2143cdaeff5db9d71d *libcxx_headers.zip
-f0b0dd2be579baaf97901322ef489d03fae69a0b8524ea77b24fb3c896f73dd9 *libcxxabi_headers.zip
-5da864ea23d70538298a40e0d037a5a461a6b74984e72fd4f0cd20904bccaed1 *mksnapshot-v29.4.0-darwin-arm64.zip
-bde97bd7c69209ed6bf4cf1cdf7de622e3a9f50fe6b4dc4b5618eee868f47c62 *mksnapshot-v29.4.0-darwin-x64.zip
-a3df9b9e6ef14efe5827d0256d8ecaebe6d8be130cfc3faac0dea76eb53b9b11 *mksnapshot-v29.4.0-linux-arm64-x64.zip
-648b9dbca21194d663ddb706e6086a166e691263c764c80f836ae02c27e3657a *mksnapshot-v29.4.0-linux-armv7l-x64.zip
-e7a4201cda3956380facc2b5b9d0b1020cc5e654fba44129fc7429a982411cc1 *mksnapshot-v29.4.0-linux-x64.zip
-ffb44c45733675e0378f45fce25dafa95697d0c86179f8e46742ada16bc11aa1 *mksnapshot-v29.4.0-mas-arm64.zip
-0242da3ca193206e56b88eb108502244bae35dcc587210bd0a32d9fa4cb71041 *mksnapshot-v29.4.0-mas-x64.zip
-1445806dca6effbc60072bbde7997cefb62bdb7a9e295a090d26f27c3882685f *mksnapshot-v29.4.0-win32-arm64-x64.zip
-09599adc3afb0a13ae87fc4b8ab97c729fe3689faa6a4f5f7a4a3cf0d9cc49d3 *mksnapshot-v29.4.0-win32-ia32.zip
-84f80683d95665d29284386509bb104e840ff0b797bfbbd19da86b84d370aa49 *mksnapshot-v29.4.0-win32-x64.zip
+a010e3d6e90e3ae1d7df517044510db0419500c25b0243ac371b2cdc34264fe5 *chromedriver-v30.5.0-darwin-arm64.zip
+bb5444359e6214a393ab2b9ee6d096e4202fd32050c05bc0868d3f220501efb9 *chromedriver-v30.5.0-darwin-x64.zip
+bb02fee91d901cd2ff24200c6488691330d946277cb8fbd5681eb7fe04d6b70a *chromedriver-v30.5.0-linux-arm64.zip
+3337363abe08a74d30c0a4eb990c35c97bb5692e1c28afd2ab732ac9c51fcf10 *chromedriver-v30.5.0-linux-armv7l.zip
+bb9c1b5b11712b52e7cbdbf38aa6f180bd4acc9866a3c9a023d443ac93a1bfd3 *chromedriver-v30.5.0-linux-x64.zip
+c81eec95055c6fc553cddcbe405ce6a4aa9b2e397f65f551ce8a69772dacc80e *chromedriver-v30.5.0-mas-arm64.zip
+cce049c0bcaeeb82656971363cf2dcce9eae38cbbee558a5204085cac2b700fa *chromedriver-v30.5.0-mas-x64.zip
+474cee6b6ab8d8ff4d5beb834981b694aedfa6434e89c77391fb50fd9940421f *chromedriver-v30.5.0-win32-arm64.zip
+e841d999d224c6562422657a669b1e807f9e1fd99fbfdad9275e86637ee77a2b *chromedriver-v30.5.0-win32-ia32.zip
+3e62f30a511ae9058a4e665e56613b7412af1640e15e9b0cbf7237fa0fa5ac1b *chromedriver-v30.5.0-win32-x64.zip
+928586b78c1b59cdeab32542c0dcc7763a3eacaa2b21f3fcb6345af522e2600a *electron-api.json
+12f0d3689ac7be36b312ef81cffb99ac2ed35eecd6650aefc691085317942bce *electron-v30.5.0-darwin-arm64-dsym-snapshot.zip
+84eb4590e500f85ec854fed4e2ea479c118b075a546e3398ac95d093cdd4f49c *electron-v30.5.0-darwin-arm64-dsym.zip
+bac4837a937f620ae3f6290bb2e2c0d29f051d10b968e3e247751b727ceaf3d3 *electron-v30.5.0-darwin-arm64-symbols.zip
+1715379e74d5c5983cf74059eae174cc59bb48ef774d32d6a23fa2e52ae8f8da *electron-v30.5.0-darwin-arm64.zip
+f1849de448bd973118572dd0e70ea6f8b862e0ed09879323a872f4d4d8c84ff0 *electron-v30.5.0-darwin-x64-dsym-snapshot.zip
+1d2677b2b01cda73480d87a02dfbf8ef3b39c0d9c7f785b88edc0bbb9ded0bf4 *electron-v30.5.0-darwin-x64-dsym.zip
+34592256b3d940fb6828edcb23cd0f241605dbaa9423d429aa2472143a6c908f *electron-v30.5.0-darwin-x64-symbols.zip
+135aaa5c7b9cbd6128a6fb43df522d9bc4894c6ceb115e1db5caa2b2e2f2c9f4 *electron-v30.5.0-darwin-x64.zip
+7115b03c3aed17f5d9b1b134f7daf3ffb838f5180f4223358acf3061cf7e8eea *electron-v30.5.0-linux-arm64-debug.zip
+75c9532cf91c468dd37c2c961d1e7dbce133f8fe3565cc391f5eea66ae843b4f *electron-v30.5.0-linux-arm64-symbols.zip
+a3857bdf84379d8a4984955368b3940df9b1b1d098ed6c6120d34cde950e41c6 *electron-v30.5.0-linux-arm64.zip
+7115b03c3aed17f5d9b1b134f7daf3ffb838f5180f4223358acf3061cf7e8eea *electron-v30.5.0-linux-armv7l-debug.zip
+6de5b4aee19b2da78444cca76d35a3a20d72252dd9e31055ab96c727629007be *electron-v30.5.0-linux-armv7l-symbols.zip
+ba4cad948732d39242d934dade317785ea8239fed6175fe143f7ad747c8524d9 *electron-v30.5.0-linux-armv7l.zip
+2b447d516777af53809ee80820a7c93e704ebaa3b253e7d5b4ecf5f104f2b855 *electron-v30.5.0-linux-x64-debug.zip
+9abc7246ab2e29424700ff30c03a72d9f8508d7819ea5d924a606b4ee16e74fd *electron-v30.5.0-linux-x64-symbols.zip
+167d48e0c6b9714d3e1bcf66cc37f81a886694038e12c754866db313c1c7c90e *electron-v30.5.0-linux-x64.zip
+5aef36099d1fd316c6593bcf9895641fe79e97d3e2191a6c00e63a033e9d628b *electron-v30.5.0-mas-arm64-dsym-snapshot.zip
+cafae0c4d8b00424a7edf1234587a4a5f49ed209c649a5773131eb805790fdc4 *electron-v30.5.0-mas-arm64-dsym.zip
+c859b5d4e0fb117e6666db858878efbe77e9cf835125ba69b68099ad3d8975c0 *electron-v30.5.0-mas-arm64-symbols.zip
+7458cd6f830640fcfbf262bf207113ff7a4ff62951f3ee2f24075059b141821b *electron-v30.5.0-mas-arm64.zip
+894697a4588bcac62565c5416f43e3ea96efe65436c660c0473e382d6ff7075d *electron-v30.5.0-mas-x64-dsym-snapshot.zip
+37ef7ac94c20a30be8a53346fb2949429e3adbd5485e9c7cd440b821bd8e3a49 *electron-v30.5.0-mas-x64-dsym.zip
+b18452e34e0569adc647ebf749712bbe1c7ac60d63624015607f1eb4d3d8f3f6 *electron-v30.5.0-mas-x64-symbols.zip
+3fbff016735efd6313be0fcfcbf1856d1e0b25329c9219e7da3fa3585f075f04 *electron-v30.5.0-mas-x64.zip
+fdf4e69f7601dbe12eb09cca968ff261e3efc8c718f5a74f5805108420abb7b8 *electron-v30.5.0-win32-arm64-pdb.zip
+e0ce8ed7dc7cb633ed2fcd8f9d2a28dfbd180235b4e2f20747a12eaf397b8808 *electron-v30.5.0-win32-arm64-symbols.zip
+7351fa5cb892853a7d4b67d8858d0f9cc6506c554a2e42c9ad7e8d5e29ae2743 *electron-v30.5.0-win32-arm64-toolchain-profile.zip
+61ea193db53d4f5ae95a758b53fbd8675e9b87d5e8c97549ce716eb7830f71a3 *electron-v30.5.0-win32-arm64.zip
+3f3133f4db5384a10611f778b3e4d8f759d88d0f93fc1226066bd2324805cef2 *electron-v30.5.0-win32-ia32-pdb.zip
+206f84d0a1a4096e793e4152609792fbd6e118d9b3fe96db40b22c6c83f822f8 *electron-v30.5.0-win32-ia32-symbols.zip
+7351fa5cb892853a7d4b67d8858d0f9cc6506c554a2e42c9ad7e8d5e29ae2743 *electron-v30.5.0-win32-ia32-toolchain-profile.zip
+8ab671665fad3eb50c0ba79201944dc6a1cc08dd1ec89a5aa458415671307178 *electron-v30.5.0-win32-ia32.zip
+adc776f542ae6c8f2030a99a0eb4c55857d065708620d52119cc067c264cc08a *electron-v30.5.0-win32-x64-pdb.zip
+b1fa7b22af5e31f49278ece5cb60d1ce310547db154802c74baa30264b9aaf69 *electron-v30.5.0-win32-x64-symbols.zip
+7351fa5cb892853a7d4b67d8858d0f9cc6506c554a2e42c9ad7e8d5e29ae2743 *electron-v30.5.0-win32-x64-toolchain-profile.zip
+2b9007396722c03d6b064e7f277b502990bc2a060066ed202dea4f4ede77a820 *electron-v30.5.0-win32-x64.zip
+4acb73a8e98f769c14910e6a16f7902e1281291ecec0c80598ce07bf97878238 *electron.d.ts
+dded5f95e489ec68829ba2ea2f851601ecc30e534c5fb16c9bee97c196e6eba0 *ffmpeg-v30.5.0-darwin-arm64.zip
+3b26980535e45e6fd23b34f464f85263edf434e749722bec70f07a5538dadaf3 *ffmpeg-v30.5.0-darwin-x64.zip
+93f433080429f0edffb838a1655c4faacdb49efae24acf97b35c9eccd87abc63 *ffmpeg-v30.5.0-linux-arm64.zip
+4f7583513d48b48c44a2cbc4430cbc9a33d8f9728622166db688e3de61190821 *ffmpeg-v30.5.0-linux-armv7l.zip
+42aa45bcfebac623904082fbe74a94a9d115237118493baa9845bb4ed63a1ffe *ffmpeg-v30.5.0-linux-x64.zip
+dded5f95e489ec68829ba2ea2f851601ecc30e534c5fb16c9bee97c196e6eba0 *ffmpeg-v30.5.0-mas-arm64.zip
+3b26980535e45e6fd23b34f464f85263edf434e749722bec70f07a5538dadaf3 *ffmpeg-v30.5.0-mas-x64.zip
+418ac6118a1d0f4fe245bfd3f7db59293629db0c81ad4dcf27a15197c49b0835 *ffmpeg-v30.5.0-win32-arm64.zip
+c5980cb28dcef56e7674c754b8863c9b5e67ecdb6684f71e32d10a335b92c5fb *ffmpeg-v30.5.0-win32-ia32.zip
+7dffa8b18aa0a7941a2d03d8ac393b865a39dd93ad408e9efdd8e51061798c12 *ffmpeg-v30.5.0-win32-x64.zip
+2abc27d8460ca60a336767634ab608b9c5450d0ac9720a6fbbdd9e83f837163d *hunspell_dictionaries.zip
+7d3254bf7242ea858cadc17686c2ba1c2b7239e00628c8ae260373e9e35617b2 *libcxx-objects-v30.5.0-linux-arm64.zip
+94cc5ba1b3fe4e1db1b4f0ce4140cc3cdf42d54d6e8150d4c1dc98508f7cdad2 *libcxx-objects-v30.5.0-linux-armv7l.zip
+21193d743044c1f3052d69efaf11fc1475e5d27f014d0f701127e6da1501bee3 *libcxx-objects-v30.5.0-linux-x64.zip
+24ec523a5a5bac709f0df9bb198f52fa786be4b6c828a7cf0117012ffa28f1ce *libcxx_headers.zip
+eae200a0d1fd0d4b881358bdef600111891c75ecc4db679b680b0cbaf87ecfc3 *libcxxabi_headers.zip
+cdd3c02c5998ae39eda53af1627a7f069db29dc13b0287bcfba6197bd9a1f52e *mksnapshot-v30.5.0-darwin-arm64.zip
+4212dc901cdaa3e65a905a69c246efe8012318ad9e4141b0e1508f7befadc615 *mksnapshot-v30.5.0-darwin-x64.zip
+41ba980d159d59705187fc9a383014cb68a642044c8c39c68f9396bab4fda168 *mksnapshot-v30.5.0-linux-arm64-x64.zip
+fa2b974e8016ab576c23262c89aa910208542ecec3a2d4344df3f79a0bbb0b30 *mksnapshot-v30.5.0-linux-armv7l-x64.zip
+cdb205f80890cccc0e3c23bbe8bfa4777171b989f10c532ff488c5a4657a9cf2 *mksnapshot-v30.5.0-linux-x64.zip
+be468e8c0a3175541e1234d66b50db2932434e77a22d6a6ad3649f36c530aff1 *mksnapshot-v30.5.0-mas-arm64.zip
+f0bb8d110295ccc0cd0938a63f6a372cf6e80dd511cc1309fd4a7a1bde23dce2 *mksnapshot-v30.5.0-mas-x64.zip
+65ed62069016fa0ae0928d394c55678fa530978d1d7fa74a8b02b6b09d7a6e50 *mksnapshot-v30.5.0-win32-arm64-x64.zip
+918bf0cc88f4830af21bc7621fde1e32df8869751d898af0ad34e19c63f677a7 *mksnapshot-v30.5.0-win32-ia32.zip
+6d6badd9e8ea6df7531e3c1533939686e78c33983cf24e9c98357c2a6d7e6206 *mksnapshot-v30.5.0-win32-x64.zip
diff --git a/build/checksums/nodejs.txt b/build/checksums/nodejs.txt
index bcc9340406d..3436ff37cc5 100644
--- a/build/checksums/nodejs.txt
+++ b/build/checksums/nodejs.txt
@@ -1,7 +1,7 @@
-e0065c61f340e85106a99c4b54746c5cee09d59b08c5712f67f99e92aa44995d node-v20.11.1-darwin-arm64.tar.gz
-c52e7fb0709dbe63a4cbe08ac8af3479188692937a7bd8e776e0eedfa33bb848 node-v20.11.1-darwin-x64.tar.gz
-e34ab2fc2726b4abd896bcbff0250e9b2da737cbd9d24267518a802ed0606f3b node-v20.11.1-linux-arm64.tar.gz
-e42791f76ece283c7a4b97fbf716da72c5128c54a9779f10f03ae74a4bcfb8f6 node-v20.11.1-linux-armv7l.tar.gz
-bf3a779bef19452da90fb88358ec2c57e0d2f882839b20dc6afc297b6aafc0d7 node-v20.11.1-linux-x64.tar.gz
-a5a9d30a8f7d56e00ccb27c1a7d24c8d0bc96a2689ebba8eb7527698793496f1 win-arm64/node.exe
-bc585910690318aaebe3c57669cb83ca9d1e5791efd63195e238f54686e6c2ec win-x64/node.exe
+fc7355e778b181575153b7dea4879e8021776eeb376c43c50f65893d2ea70aa3 node-v20.16.0-darwin-arm64.tar.gz
+e18942cd706e4d69a4845ddacee2f1c17a72e853a229e3d2623d2edeb7efde72 node-v20.16.0-darwin-x64.tar.gz
+551588f8f5ca05c04efb53f1b2bb7d9834603327bdc82d60a944d385569866e1 node-v20.16.0-linux-arm64.tar.gz
+1c77c52ab507ddee479012f0b4bf523dd8400df4504447d623632353076e2e27 node-v20.16.0-linux-armv7l.tar.gz
+b3f874ea84e440d69ed02ca92429d0eccd17737fde86db69c1c153d16ec654f2 node-v20.16.0-linux-x64.tar.gz
+7e773fba3a19eac5ccbe85c1f87a05d7b112ecf41440076e6b6de1c7bffa0fdf win-arm64/node.exe
+ba221658a3b68bd583e3068903eb675b5206d86a883c084ed95502e8f634b82a win-x64/node.exe
diff --git a/build/darwin/create-universal-app.js b/build/darwin/create-universal-app.js
index 7da8e55c908..a3daf1878b0 100644
--- a/build/darwin/create-universal-app.js
+++ b/build/darwin/create-universal-app.js
@@ -6,6 +6,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
+const minimatch = require("minimatch");
const vscode_universal_bundler_1 = require("vscode-universal-bundler");
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
const root = path.dirname(path.dirname(__dirname));
@@ -18,26 +19,29 @@ async function main(buildDir) {
const appName = product.nameLong + '.app';
const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName);
const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName);
- const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
- const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
+ const asarRelativePath = path.join('Contents', 'Resources', 'app', 'node_modules.asar');
const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
+ const filesToSkip = [
+ '**/CodeResources',
+ '**/Credits.rtf',
+ ];
await (0, vscode_universal_bundler_1.makeUniversalApp)({
x64AppPath,
arm64AppPath,
- x64AsarPath,
- arm64AsarPath,
- filesToSkip: [
- 'product.json',
- 'Credits.rtf',
- 'CodeResources',
- 'fsevents.node',
- 'Info.plist', // TODO@deepak1556: regressed with 11.4.2 internal builds
- 'MainMenu.nib', // Generated sequence is not deterministic with Xcode 13
- '.npmrc'
- ],
+ asarPath: asarRelativePath,
outAppPath,
- force: true
+ force: true,
+ mergeASARs: true,
+ x64ArchFiles: '*/kerberos.node',
+ filesToSkipComparison: (file) => {
+ for (const expected of filesToSkip) {
+ if (minimatch(file, expected)) {
+ return true;
+ }
+ }
+ return false;
+ }
});
const productJson = JSON.parse(fs.readFileSync(productJsonPath, 'utf8'));
Object.assign(productJson, {
diff --git a/build/darwin/create-universal-app.ts b/build/darwin/create-universal-app.ts
index ffba8952cd8..94b8a23b9e5 100644
--- a/build/darwin/create-universal-app.ts
+++ b/build/darwin/create-universal-app.ts
@@ -5,6 +5,7 @@
import * as path from 'path';
import * as fs from 'fs';
+import * as minimatch from 'minimatch';
import { makeUniversalApp } from 'vscode-universal-bundler';
import { spawn } from '@malept/cross-spawn-promise';
@@ -21,27 +22,31 @@ async function main(buildDir?: string) {
const appName = product.nameLong + '.app';
const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName);
const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName);
- const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
- const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
+ const asarRelativePath = path.join('Contents', 'Resources', 'app', 'node_modules.asar');
const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
+ const filesToSkip = [
+ '**/CodeResources',
+ '**/Credits.rtf',
+ ];
+
await makeUniversalApp({
x64AppPath,
arm64AppPath,
- x64AsarPath,
- arm64AsarPath,
- filesToSkip: [
- 'product.json',
- 'Credits.rtf',
- 'CodeResources',
- 'fsevents.node',
- 'Info.plist', // TODO@deepak1556: regressed with 11.4.2 internal builds
- 'MainMenu.nib', // Generated sequence is not deterministic with Xcode 13
- '.npmrc'
- ],
+ asarPath: asarRelativePath,
outAppPath,
- force: true
+ force: true,
+ mergeASARs: true,
+ x64ArchFiles: '*/kerberos.node',
+ filesToSkipComparison: (file: string) => {
+ for (const expected of filesToSkip) {
+ if (minimatch(file, expected)) {
+ return true;
+ }
+ }
+ return false;
+ }
});
const productJson = JSON.parse(fs.readFileSync(productJsonPath, 'utf8'));
diff --git a/build/darwin/sign.js b/build/darwin/sign.js
index f5913b73ab8..feb5834ff85 100644
--- a/build/darwin/sign.js
+++ b/build/darwin/sign.js
@@ -10,8 +10,8 @@ const codesign = require("electron-osx-sign");
const cross_spawn_promise_1 = require("@malept/cross-spawn-promise");
const root = path.dirname(path.dirname(__dirname));
function getElectronVersion() {
- const yarnrc = fs.readFileSync(path.join(root, '.yarnrc'), 'utf8');
- const target = /^target "(.*)"$/m.exec(yarnrc)[1];
+ const npmrc = fs.readFileSync(path.join(root, '.npmrc'), 'utf8');
+ const target = /^target="(.*)"$/m.exec(npmrc)[1];
return target;
}
async function main(buildDir) {
diff --git a/build/darwin/sign.ts b/build/darwin/sign.ts
index 01e9ebf2d4b..5b3413b79e1 100644
--- a/build/darwin/sign.ts
+++ b/build/darwin/sign.ts
@@ -11,8 +11,8 @@ import { spawn } from '@malept/cross-spawn-promise';
const root = path.dirname(path.dirname(__dirname));
function getElectronVersion(): string {
- const yarnrc = fs.readFileSync(path.join(root, '.yarnrc'), 'utf8');
- const target = /^target "(.*)"$/m.exec(yarnrc)![1];
+ const npmrc = fs.readFileSync(path.join(root, '.npmrc'), 'utf8');
+ const target = /^target="(.*)"$/m.exec(npmrc)![1];
return target;
}
diff --git a/build/filters.js b/build/filters.js
index c7be2d818d9..4e5049f23f0 100644
--- a/build/filters.js
+++ b/build/filters.js
@@ -77,7 +77,9 @@ module.exports.indentationFilter = [
'!src/vs/base/common/semver/semver.js',
'!src/vs/base/node/terminateProcess.sh',
'!src/vs/base/node/cpuUsage.sh',
+ '!src/vs/editor/common/languages/highlights/*.scm',
'!test/unit/assert.js',
+ '!test/unit/assert-esm.js',
'!resources/linux/snap/electron-launch',
'!build/ext.js',
'!build/npm/gyp/patches/gyp_spectre_mitigation_support.patch',
@@ -99,8 +101,7 @@ module.exports.indentationFilter = [
// except multiple specific files
'!**/package.json',
- '!**/yarn.lock',
- '!**/yarn-error.log',
+ '!**/package-lock.json',
// except multiple specific folders
'!**/codicon/**',
@@ -117,7 +118,7 @@ module.exports.indentationFilter = [
'!src/vs/*/**/*.d.ts',
'!src/typings/**/*.d.ts',
'!extensions/**/*.d.ts',
- '!**/*.{svg,exe,png,bmp,jpg,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,template,yaml,yml,d.ts.recipe,ico,icns,plist,opus,admx,adml,wasm}',
+ '!**/*.{svg,exe,png,bmp,jpg,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,psm1,template,yaml,yml,d.ts.recipe,ico,icns,plist,opus,admx,adml,wasm}',
'!build/{lib,download,linux,darwin}/**/*.js',
'!build/**/*.sh',
'!build/azure-pipelines/**/*.js',
@@ -199,7 +200,7 @@ module.exports.eslintFilter = [
.toString().split(/\r\n|\n/)
.filter(line => !line.startsWith('#'))
.filter(line => !!line)
- .map(line => `!${line}`)
+ .map(line => line.startsWith('!') ? line.slice(1) : `!${line}`)
];
module.exports.stylelintFilter = [
diff --git a/build/gulpfile.cli.js b/build/gulpfile.cli.js
index 86646fdb274..592fc74516c 100644
--- a/build/gulpfile.cli.js
+++ b/build/gulpfile.cli.js
@@ -5,8 +5,6 @@
'use strict';
-//@ts-check
-
const es = require('event-stream');
const gulp = require('gulp');
const path = require('path');
@@ -24,7 +22,6 @@ const createReporter = require('./lib/reporter').createReporter;
const root = 'cli';
const rootAbs = path.resolve(__dirname, '..', root);
const src = `${root}/src`;
-const targetCliPath = path.join(root, 'target', 'debug', process.platform === 'win32' ? 'code.exe' : 'code');
const platformOpensslDirName =
process.platform === 'win32' ? (
diff --git a/build/gulpfile.compile.js b/build/gulpfile.compile.js
index c4947e76cbf..a8d8fb094b2 100644
--- a/build/gulpfile.compile.js
+++ b/build/gulpfile.compile.js
@@ -3,20 +3,30 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
+//@ts-check
'use strict';
const gulp = require('gulp');
const util = require('./lib/util');
+const date = require('./lib/date');
+const amd = require('./lib/amd');
const task = require('./lib/task');
const compilation = require('./lib/compilation');
const optimize = require('./lib/optimize');
+const isAMDBuild = typeof process.env.VSCODE_BUILD_AMD === 'string' && process.env.VSCODE_BUILD_AMD.toLowerCase() === 'true';
+
+/**
+ * @param {boolean} disableMangle
+ */
function makeCompileBuildTask(disableMangle) {
return task.series(
util.rimraf('out-build'),
util.buildWebNodePaths('out-build'),
+ date.writeISODate('out-build'),
+ amd.setAMD(isAMDBuild),
compilation.compileApiProposalNamesTask,
- compilation.compileTask('src', 'out-build', true, { disableMangle }),
+ compilation.compileTask(isAMDBuild ? 'src2' : 'src', 'out-build', true, { disableMangle }),
optimize.optimizeLoaderTask('out-build', 'out-build', true)
);
}
diff --git a/build/gulpfile.editor.js b/build/gulpfile.editor.js
index 22b70a953df..0d55982a8aa 100644
--- a/build/gulpfile.editor.js
+++ b/build/gulpfile.editor.js
@@ -29,19 +29,17 @@ const editorEntryPoints = [
{
name: 'vs/editor/editor.main',
include: [],
- exclude: ['vs/css', 'vs/nls'],
+ exclude: ['vs/css'],
prepend: [
- { path: 'out-editor-build/vs/css.js', amdModuleId: 'vs/css' },
- { path: 'out-editor-build/vs/nls.js', amdModuleId: 'vs/nls' }
+ { path: 'out-editor-build/vs/css.js', amdModuleId: 'vs/css' }
],
},
{
name: 'vs/base/common/worker/simpleWorker',
include: ['vs/editor/common/services/editorSimpleWorker'],
- exclude: ['vs/nls'],
+ exclude: [],
prepend: [
{ path: 'vs/loader.js' },
- { path: 'vs/nls.js', amdModuleId: 'vs/nls' },
{ path: 'vs/base/worker/workerMain.js' }
],
dest: 'vs/base/worker/workerMain.js'
@@ -79,14 +77,17 @@ const extractEditorSrcTask = task.define('extract-editor-src', () => {
extrausages
],
shakeLevel: 2, // 0-Files, 1-InnerFile, 2-ClassMembers
- importIgnorePattern: /(^vs\/css!)/,
+ importIgnorePattern: /\.css$/,
destRoot: path.join(root, 'out-editor-src'),
- redirects: []
+ redirects: {
+ '@vscode/tree-sitter-wasm': '../node_modules/@vscode/tree-sitter-wasm/wasm/tree-sitter-web',
+ }
});
});
// Disable mangling for the editor, as it complicates debugging & quite a few users rely on private/protected fields.
-const compileEditorAMDTask = task.define('compile-editor-amd', compilation.compileTask('out-editor-src', 'out-editor-build', true, { disableMangle: true }));
+// Disable NLS task to remove english strings to preserve backwards compatibility when we removed the `vs/nls!` AMD plugin.
+const compileEditorAMDTask = task.define('compile-editor-amd', compilation.compileTask('out-editor-src', 'out-editor-build', true, { disableMangle: true, preserveEnglish: true }));
const optimizeEditorAMDTask = task.define('optimize-editor-amd', optimize.optimizeTask(
{
@@ -99,7 +100,6 @@ const optimizeEditorAMDTask = task.define('optimize-editor-amd', optimize.optimi
paths: {
'vs': 'out-editor-build/vs',
'vs/css': 'out-editor-build/vs/css.build',
- 'vs/nls': 'out-editor-build/vs/nls.build',
'vscode': 'empty:'
}
},
@@ -124,7 +124,6 @@ const createESMSourcesAndResourcesTask = task.define('extract-editor-esm', () =>
'vs/base/worker/workerMain.ts',
],
renames: {
- 'vs/nls.mock.ts': 'vs/nls.ts'
}
});
});
@@ -136,7 +135,8 @@ const compileEditorESMTask = task.define('compile-editor-esm', () => {
let result;
if (process.platform === 'win32') {
result = cp.spawnSync(`..\\node_modules\\.bin\\tsc.cmd`, {
- cwd: path.join(__dirname, '../out-editor-esm')
+ cwd: path.join(__dirname, '../out-editor-esm'),
+ shell: true
});
} else {
result = cp.spawnSync(`node`, [`../node_modules/.bin/tsc`], {
@@ -198,49 +198,11 @@ const compileEditorESMTask = task.define('compile-editor-esm', () => {
}
console.log(`Open in VS Code the folder at '${destPath}' and you can analyze the compilation error`);
- throw new Error('Standalone Editor compilation failed. If this is the build machine, simply launch `yarn run gulp editor-distro` on your machine to further analyze the compilation problem.');
+ throw new Error('Standalone Editor compilation failed. If this is the build machine, simply launch `npm run gulp editor-distro` on your machine to further analyze the compilation problem.');
});
}
});
-/**
- * Go over all .js files in `/out-monaco-editor-core/esm/` and make sure that all imports
- * use `.js` at the end in order to be ESM compliant.
- */
-const appendJSToESMImportsTask = task.define('append-js-to-esm-imports', () => {
- const SRC_DIR = path.join(__dirname, '../out-monaco-editor-core/esm');
- const files = util.rreddir(SRC_DIR);
- for (const file of files) {
- const filePath = path.join(SRC_DIR, file);
- if (!/\.js$/.test(filePath)) {
- continue;
- }
-
- const contents = fs.readFileSync(filePath).toString();
- const lines = contents.split(/\r\n|\r|\n/g);
- const /** @type {string[]} */result = [];
- for (const line of lines) {
- if (!/^import/.test(line) && !/^export \* from/.test(line)) {
- // not an import
- result.push(line);
- continue;
- }
- if (/^import '[^']+\.css';/.test(line)) {
- // CSS import
- result.push(line);
- continue;
- }
- const modifiedLine = (
- line
- .replace(/^import(.*)\'([^']+)\'/, `import$1'$2.js'`)
- .replace(/^export \* from \'([^']+)\'/, `export * from '$1.js'`)
- );
- result.push(modifiedLine);
- }
- fs.writeFileSync(filePath, result.join('\n'));
- }
-});
-
/**
* @param {string} contents
*/
@@ -413,7 +375,6 @@ gulp.task('editor-distro',
task.series(
createESMSourcesAndResourcesTask,
compileEditorESMTask,
- appendJSToESMImportsTask
)
),
finalEditorResourcesTask
@@ -430,7 +391,6 @@ gulp.task('editor-esm',
extractEditorSrcTask,
createESMSourcesAndResourcesTask,
compileEditorESMTask,
- appendJSToESMImportsTask,
)
);
diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js
index a95c38b90a7..3c6a9621dda 100644
--- a/build/gulpfile.extensions.js
+++ b/build/gulpfile.extensions.js
@@ -49,7 +49,6 @@ const compilations = [
'extensions/json-language-features/client/tsconfig.json',
'extensions/json-language-features/server/tsconfig.json',
'extensions/markdown-language-features/preview-src/tsconfig.json',
- 'extensions/markdown-language-features/server/tsconfig.json',
'extensions/markdown-language-features/tsconfig.json',
'extensions/markdown-math/tsconfig.json',
'extensions/media-preview/tsconfig.json',
@@ -70,6 +69,7 @@ const compilations = [
'extensions/vscode-test-resolver/tsconfig.json',
'.vscode/extensions/vscode-selfhost-test-provider/tsconfig.json',
+ '.vscode/extensions/vscode-selfhost-import-aid/tsconfig.json',
];
const getBaseUrl = out => `https://main.vscode-cdn.net/sourcemaps/${commit}/${out}`;
@@ -102,7 +102,6 @@ const tasks = compilations.map(function (tsconfigFile) {
}
function createPipeline(build, emitError, transpileOnly) {
- const nlsDev = require('vscode-nls-dev');
const tsb = require('./lib/tsb');
const sourcemaps = require('gulp-sourcemaps');
@@ -127,7 +126,6 @@ const tasks = compilations.map(function (tsconfigFile) {
.pipe(tsFilter)
.pipe(util.loadSourcemaps())
.pipe(compilation())
- .pipe(build ? nlsDev.rewriteLocalizeCalls() : es.through())
.pipe(build ? util.stripSourceMappingURL() : es.through())
.pipe(sourcemaps.write('.', {
sourceMappingURL: !build ? null : f => `${baseUrl}/${f.relative}.map`,
@@ -137,9 +135,6 @@ const tasks = compilations.map(function (tsconfigFile) {
sourceRoot: '../src/',
}))
.pipe(tsFilter.restore)
- .pipe(build ? nlsDev.bundleMetaDataFiles(headerId, headerOut) : es.through())
- // Filter out *.nls.json file. We needed them only to bundle meta data file.
- .pipe(filter(['**', '!**/*.nls.json'], { dot: true }))
.pipe(reporter.end(emitError));
return es.duplex(input, output);
diff --git a/build/gulpfile.js b/build/gulpfile.js
index e945c06eed4..5f7b71a40f2 100644
--- a/build/gulpfile.js
+++ b/build/gulpfile.js
@@ -34,11 +34,15 @@ gulp.task(compileClientTask);
const watchClientTask = task.define('watch-client', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), task.parallel(watchTask('out', false), watchApiProposalNamesTask)));
gulp.task(watchClientTask);
+const watchClientAMDTask = task.define('watch-client-amd', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), task.parallel(watchTask('out', false, 'src2'), watchApiProposalNamesTask)));
+gulp.task(watchClientAMDTask);
+
// All
const _compileTask = task.define('compile', task.parallel(monacoTypecheckTask, compileClientTask, compileExtensionsTask, compileExtensionMediaTask));
gulp.task(_compileTask);
gulp.task(task.define('watch', task.parallel(/* monacoTypecheckWatchTask, */ watchClientTask, watchExtensionsTask)));
+gulp.task(task.define('watch-amd', task.parallel(/* monacoTypecheckWatchTask, */ watchClientAMDTask, watchExtensionsTask)));
// Default
gulp.task('default', _compileTask);
diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
index a6cfbe5a61d..e3147945f84 100644
--- a/build/gulpfile.reh.js
+++ b/build/gulpfile.reh.js
@@ -12,11 +12,13 @@ const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const optimize = require('./lib/optimize');
+const { inlineMeta } = require('./lib/inlineMeta');
const product = require('../product.json');
const rename = require('gulp-rename');
const replace = require('gulp-replace');
const filter = require('gulp-filter');
const { getProductionDependencies } = require('./lib/dependencies');
+const { readISODate } = require('./lib/date');
const vfs = require('vinyl-fs');
const packageJson = require('../package.json');
const flatmap = require('gulp-flatmap');
@@ -26,9 +28,11 @@ const fs = require('fs');
const glob = require('glob');
const { compileBuildTask } = require('./gulpfile.compile');
const { compileExtensionsBuildTask, compileExtensionMediaBuildTask } = require('./gulpfile.extensions');
-const { vscodeWebEntryPoints, vscodeWebResourceIncludes, createVSCodeWebFileContentMapper } = require('./gulpfile.vscode.web');
+const { vscodeWebResourceIncludes, createVSCodeWebFileContentMapper } = require('./gulpfile.vscode.web');
const cp = require('child_process');
const log = require('fancy-log');
+const { isAMD } = require('./lib/amd');
+const buildfile = require('./buildfile');
const REPO_ROOT = path.dirname(__dirname);
const commit = getVersion(REPO_ROOT);
@@ -39,6 +43,7 @@ const REMOTE_FOLDER = path.join(REPO_ROOT, 'remote');
const BUILD_TARGETS = [
{ platform: 'win32', arch: 'x64' },
+ { platform: 'win32', arch: 'arm64' },
{ platform: 'darwin', arch: 'x64' },
{ platform: 'darwin', arch: 'arm64' },
{ platform: 'linux', arch: 'x64' },
@@ -50,96 +55,127 @@ const BUILD_TARGETS = [
{ platform: 'linux', arch: 'alpine' },
];
-const serverResources = [
-
- // Bootstrap
- 'out-build/bootstrap.js',
- 'out-build/bootstrap-fork.js',
- 'out-build/bootstrap-amd.js',
- 'out-build/bootstrap-node.js',
+const serverResourceIncludes = [
- // Performance
- 'out-build/vs/base/common/performance.js',
+ // NLS
+ 'out-build/nls.messages.json',
// Process monitor
'out-build/vs/base/node/cpuUsage.sh',
'out-build/vs/base/node/ps.sh',
// Terminal shell integration
- 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration.ps1',
- 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh',
- 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-env.zsh',
- 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-profile.zsh',
- 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-rc.zsh',
- 'out-build/vs/workbench/contrib/terminal/browser/media/shellIntegration-login.zsh',
- 'out-build/vs/workbench/contrib/terminal/browser/media/fish_xdg_data/fish/vendor_conf.d/shellIntegration.fish',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/shellIntegration.ps1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/CodeTabExpansion.psm1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/GitTabExpansion.psm1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/shellIntegration-bash.sh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/shellIntegration-env.zsh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/shellIntegration-profile.zsh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/shellIntegration-rc.zsh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/shellIntegration-login.zsh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/fish_xdg_data/fish/vendor_conf.d/shellIntegration.fish',
- '!**/test/**'
];
-const serverWithWebResources = [
+const serverResourceExcludes = [
+ '!out-build/vs/**/{electron-sandbox,electron-main,electron-utility}/**',
+ '!out-build/vs/editor/standalone/**',
+ '!out-build/vs/workbench/**/*-tb.png',
+ '!**/test/**'
+];
- // Include all of server...
- ...serverResources,
+const serverResources = [
+ ...serverResourceIncludes,
+ ...serverResourceExcludes
+];
- // ...and all of web
+const serverWithWebResourceIncludes = !isAMD() ? [
+ ...serverResourceIncludes,
+ 'out-build/vs/code/browser/workbench/*.html',
+ ...vscodeWebResourceIncludes
+] : [
+ ...serverResourceIncludes,
...vscodeWebResourceIncludes
];
+const serverWithWebResourceExcludes = [
+ ...serverResourceExcludes,
+ '!out-build/vs/code/**/*-dev.html',
+ '!out-build/vs/code/**/*-dev.esm.html',
+];
+
+const serverWithWebResources = [
+ ...serverWithWebResourceIncludes,
+ ...serverWithWebResourceExcludes
+];
+
const serverEntryPoints = [
{
name: 'vs/server/node/server.main',
- exclude: ['vs/css', 'vs/nls']
+ exclude: ['vs/css']
},
{
name: 'vs/server/node/server.cli',
- exclude: ['vs/css', 'vs/nls']
+ exclude: ['vs/css']
},
{
name: 'vs/workbench/api/node/extensionHostProcess',
- exclude: ['vs/css', 'vs/nls']
+ exclude: ['vs/css']
},
{
name: 'vs/platform/files/node/watcher/watcherMain',
- exclude: ['vs/css', 'vs/nls']
+ exclude: ['vs/css']
},
{
name: 'vs/platform/terminal/node/ptyHostMain',
- exclude: ['vs/css', 'vs/nls']
+ exclude: ['vs/css']
}
];
+const webEntryPoints = !isAMD() ? [
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.workerOutputLinks,
+ buildfile.workerBackgroundTokenization,
+ buildfile.keyboardMaps,
+ buildfile.codeWeb
+].flat() : [
+ buildfile.entrypoint('vs/workbench/workbench.web.main.internal'),
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.keyboardMaps,
+ buildfile.workbenchWeb()
+].flat();
+
const serverWithWebEntryPoints = [
// Include all of server
...serverEntryPoints,
- // Include workbench web
- ...vscodeWebEntryPoints
+ // Include all of web
+ ...webEntryPoints,
+].flat();
+
+const commonJSEntryPoints = [
+ 'out-build/server-main.js',
+ 'out-build/server-cli.js',
+ 'out-build/bootstrap-fork.js',
];
function getNodeVersion() {
- const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
- const nodeVersion = /^target "(.*)"$/m.exec(yarnrc)[1];
- const internalNodeVersion = /^ms_build_id "(.*)"$/m.exec(yarnrc)[1];
+ const npmrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.npmrc'), 'utf8');
+ const nodeVersion = /^target="(.*)"$/m.exec(npmrc)[1];
+ const internalNodeVersion = /^ms_build_id="(.*)"$/m.exec(npmrc)[1];
return { nodeVersion, internalNodeVersion };
}
-function getNodeChecksum(nodeVersion, platform, arch, glibcPrefix) {
- let expectedName;
- switch (platform) {
- case 'win32':
- expectedName = product.nodejsRepository !== 'https://nodejs.org' ?
- `win-${arch}-node.exe` : `win-${arch}/node.exe`;
- break;
-
- case 'darwin':
- case 'alpine':
- case 'linux':
- expectedName = `node-v${nodeVersion}${glibcPrefix}-${platform}-${arch}.tar.gz`;
- break;
- }
-
+function getNodeChecksum(expectedName) {
const nodeJsChecksums = fs.readFileSync(path.join(REPO_ROOT, 'build', 'checksums', 'nodejs.txt'), 'utf8');
for (const line of nodeJsChecksums.split('\n')) {
const [checksum, name] = line.split(/\s+/);
@@ -183,7 +219,6 @@ if (defaultNodeTask) {
function nodejs(platform, arch) {
const { fetchUrls, fetchGithub } = require('./lib/fetch');
const untar = require('gulp-untar');
- const crypto = require('crypto');
if (arch === 'armhf') {
arch = 'armv7l';
@@ -195,7 +230,24 @@ function nodejs(platform, arch) {
log(`Downloading node.js ${nodeVersion} ${platform} ${arch} from ${product.nodejsRepository}...`);
const glibcPrefix = process.env['VSCODE_NODE_GLIBC'] ?? '';
- const checksumSha256 = getNodeChecksum(nodeVersion, platform, arch, glibcPrefix);
+ let expectedName;
+ switch (platform) {
+ case 'win32':
+ expectedName = product.nodejsRepository !== 'https://nodejs.org' ?
+ `win-${arch}-node.exe` : `win-${arch}/node.exe`;
+ break;
+
+ case 'darwin':
+ expectedName = `node-v${nodeVersion}-${platform}-${arch}.tar.gz`;
+ break;
+ case 'linux':
+ expectedName = `node-v${nodeVersion}${glibcPrefix}-${platform}-${arch}.tar.gz`;
+ break;
+ case 'alpine':
+ expectedName = `node-v${nodeVersion}-linux-${arch}-musl.tar.gz`;
+ break;
+ }
+ const checksumSha256 = getNodeChecksum(expectedName);
if (checksumSha256) {
log(`Using SHA256 checksum for checking integrity: ${checksumSha256}`);
@@ -206,13 +258,13 @@ function nodejs(platform, arch) {
switch (platform) {
case 'win32':
return (product.nodejsRepository !== 'https://nodejs.org' ?
- fetchGithub(product.nodejsRepository, { version: `${nodeVersion}-${internalNodeVersion}`, name: `win-${arch}-node.exe`, checksumSha256 }) :
+ fetchGithub(product.nodejsRepository, { version: `${nodeVersion}-${internalNodeVersion}`, name: expectedName, checksumSha256 }) :
fetchUrls(`/dist/v${nodeVersion}/win-${arch}/node.exe`, { base: 'https://nodejs.org', checksumSha256 }))
.pipe(rename('node.exe'));
case 'darwin':
case 'linux':
return (product.nodejsRepository !== 'https://nodejs.org' ?
- fetchGithub(product.nodejsRepository, { version: `${nodeVersion}-${internalNodeVersion}`, name: `node-v${nodeVersion}${glibcPrefix}-${platform}-${arch}.tar.gz`, checksumSha256 }) :
+ fetchGithub(product.nodejsRepository, { version: `${nodeVersion}-${internalNodeVersion}`, name: expectedName, checksumSha256 }) :
fetchUrls(`/dist/v${nodeVersion}/node-v${nodeVersion}-${platform}-${arch}.tar.gz`, { base: 'https://nodejs.org', checksumSha256 })
).pipe(flatmap(stream => stream.pipe(gunzip()).pipe(untar())))
.pipe(filter('**/node'))
@@ -220,7 +272,7 @@ function nodejs(platform, arch) {
.pipe(rename('node'));
case 'alpine':
return product.nodejsRepository !== 'https://nodejs.org' ?
- fetchGithub(product.nodejsRepository, { version: `${nodeVersion}-${internalNodeVersion}`, name: `node-v${nodeVersion}-${platform}-${arch}.tar.gz`, checksumSha256 })
+ fetchGithub(product.nodejsRepository, { version: `${nodeVersion}-${internalNodeVersion}`, name: expectedName, checksumSha256 })
.pipe(flatmap(stream => stream.pipe(gunzip()).pipe(untar())))
.pipe(filter('**/node'))
.pipe(util.setExecutableBit('**'))
@@ -289,23 +341,32 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
}
const name = product.nameShort;
- const packageJsonStream = gulp.src(['remote/package.json'], { base: 'remote' })
- .pipe(json({ name, version, dependencies: undefined, optionalDependencies: undefined }));
- const date = new Date().toISOString();
+ let packageJsonContents;
+ const packageJsonStream = gulp.src(['remote/package.json'], { base: 'remote' })
+ .pipe(json({ name, version, dependencies: undefined, optionalDependencies: undefined, ...(!isAMD() ? { type: 'module' } : {}) })) // TODO@esm this should be configured in the top level package.json
+ .pipe(es.through(function (file) {
+ packageJsonContents = file.contents.toString();
+ this.emit('data', file);
+ }));
+ let productJsonContents;
const productJsonStream = gulp.src(['product.json'], { base: '.' })
- .pipe(json({ commit, date, version }));
+ .pipe(json({ commit, date: readISODate('out-build'), version }))
+ .pipe(es.through(function (file) {
+ productJsonContents = file.contents.toString();
+ this.emit('data', file);
+ }));
const license = gulp.src(['remote/LICENSE'], { base: 'remote', allowEmpty: true });
const jsFilter = util.filter(data => !data.isDirectory() && /\.js$/.test(data.path));
const productionDependencies = getProductionDependencies(REMOTE_FOLDER);
- const dependenciesSrc = productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]).flat();
+ const dependenciesSrc = productionDependencies.map(d => path.relative(REPO_ROOT, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]).flat();
const deps = gulp.src(dependenciesSrc, { base: 'remote', dot: true })
// filter out unnecessary files, no source maps in server build
- .pipe(filter(['**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.js.map']))
+ .pipe(filter(['**', '!**/package-lock.json', '!**/*.js.map']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore')))
.pipe(util.cleanNodeModules(path.join(__dirname, `.moduleignore.${process.platform}`)))
.pipe(jsFilter)
@@ -388,6 +449,12 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
);
}
+ result = inlineMeta(result, {
+ targetPaths: commonJSEntryPoints,
+ packageJsonFn: () => packageJsonContents,
+ productJsonFn: () => productJsonContents
+ });
+
return result.pipe(vfs.dest(destination));
};
}
@@ -419,16 +486,14 @@ function tweakProductForServerWeb(product) {
},
commonJS: {
src: 'out-build',
- entryPoints: [
- 'out-build/server-main.js',
- 'out-build/server-cli.js'
- ],
+ entryPoints: commonJSEntryPoints,
platform: 'node',
external: [
'minimist',
- // TODO: we cannot inline `product.json` because
+ // We cannot inline `product.json` from here because
// it is being changed during build time at a later
// point in time (such as `checksums`)
+ // We have a manual step to inline these later.
'../product.json',
'../package.json'
]
diff --git a/build/gulpfile.scan.js b/build/gulpfile.scan.js
index 6f8144b0954..be685a8b145 100644
--- a/build/gulpfile.scan.js
+++ b/build/gulpfile.scan.js
@@ -26,6 +26,9 @@ const BUILD_TARGETS = [
{ platform: 'linux', arch: 'arm64' },
];
+// The following files do not have PDBs downloaded for them during the download symbols process.
+const excludedCheckList = ['d3dcompiler_47.dll'];
+
BUILD_TARGETS.forEach(buildTarget => {
const dashed = (/** @type {string | null} */ str) => (str ? `-${str}` : ``);
const platform = buildTarget.platform;
@@ -46,7 +49,6 @@ BUILD_TARGETS.forEach(buildTarget => {
if (platform === 'win32') {
tasks.push(
() => electron.dest(destinationPdb, { ...config, platform, arch: arch === 'armhf' ? 'arm' : arch, pdbs: true }),
- util.rimraf(path.join(destinationExe, 'd3dcompiler_47.dll')),
() => confirmPdbsExist(destinationExe, destinationPdb)
);
}
@@ -71,7 +73,7 @@ BUILD_TARGETS.forEach(buildTarget => {
function nodeModules(destinationExe, destinationPdb, platform) {
const productionDependencies = deps.getProductionDependencies(root);
- const dependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
+ const dependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
const exe = () => {
return gulp.src(dependenciesSrc, { base: '.', dot: true })
@@ -81,7 +83,8 @@ function nodeModules(destinationExe, destinationPdb, platform) {
// We don't build the prebuilt node files so we don't scan them
'!**/prebuilds/**/*.node',
// These are 3rd party modules that we should ignore
- '!**/@parcel/watcher/**/*']))
+ '!**/@parcel/watcher/**/*',
+ '!**/@bpasero/watcher/**/*']))
.pipe(gulp.dest(destinationExe));
};
@@ -110,6 +113,10 @@ function nodeModules(destinationExe, destinationPdb, platform) {
function confirmPdbsExist(destinationExe, destinationPdb) {
readdirSync(destinationExe).forEach(file => {
+ if (excludedCheckList.includes(file)) {
+ return;
+ }
+
if (file.endsWith('.dll') || file.endsWith('.exe')) {
const pdb = `${file}.pdb`;
if (!existsSync(path.join(destinationPdb, pdb))) {
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
index c6202c70883..9dfb6a3848c 100644
--- a/build/gulpfile.vscode.js
+++ b/build/gulpfile.vscode.js
@@ -6,10 +6,7 @@
'use strict';
const gulp = require('gulp');
-const merge = require('gulp-merge-json');
const fs = require('fs');
-const os = require('os');
-const cp = require('child_process');
const path = require('path');
const es = require('event-stream');
const vfs = require('vinyl-fs');
@@ -18,9 +15,11 @@ const replace = require('gulp-replace');
const filter = require('gulp-filter');
const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
+const { readISODate } = require('./lib/date');
const task = require('./lib/task');
-const buildfile = require('../src/buildfile');
+const buildfile = require('./buildfile');
const optimize = require('./lib/optimize');
+const { inlineMeta } = require('./lib/inlineMeta');
const root = path.dirname(__dirname);
const commit = getVersion(root);
const packageJson = require('../package.json');
@@ -34,11 +33,23 @@ const minimist = require('minimist');
const { compileBuildTask } = require('./gulpfile.compile');
const { compileExtensionsBuildTask, compileExtensionMediaBuildTask } = require('./gulpfile.extensions');
const { promisify } = require('util');
+const { isAMD } = require('./lib/amd');
const glob = promisify(require('glob'));
const rcedit = promisify(require('rcedit'));
// Build
-const vscodeEntryPoints = [
+const vscodeEntryPoints = !isAMD() ? [
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.workerProfileAnalysis,
+ buildfile.workerOutputLinks,
+ buildfile.workerBackgroundTokenization,
+ buildfile.workbenchDesktop(),
+ buildfile.code
+].flat() : [
buildfile.entrypoint('vs/workbench/workbench.desktop.main'),
buildfile.base,
buildfile.workerExtensionHost,
@@ -46,21 +57,72 @@ const vscodeEntryPoints = [
buildfile.workerLanguageDetection,
buildfile.workerLocalFileSearch,
buildfile.workerProfileAnalysis,
- buildfile.workbenchDesktop,
+ buildfile.workbenchDesktop(),
buildfile.code
].flat();
-const vscodeResources = [
- 'out-build/bootstrap.js',
- 'out-build/bootstrap-fork.js',
- 'out-build/bootstrap-amd.js',
- 'out-build/bootstrap-node.js',
- 'out-build/bootstrap-window.js',
+const vscodeResourceIncludes = !isAMD() ? [
+
+ // NLS
+ 'out-build/nls.messages.json',
+ 'out-build/nls.keys.json',
+
+ // Workbench
+ 'out-build/vs/code/electron-sandbox/workbench/workbench.esm.html',
+
+ // Electron Preload
+ 'out-build/vs/base/parts/sandbox/electron-sandbox/preload.js',
+ 'out-build/vs/base/parts/sandbox/electron-sandbox/preload-aux.js',
+
+ // Node Scripts
+ 'out-build/vs/base/node/{terminateProcess.sh,cpuUsage.sh,ps.sh}',
+
+ // Touchbar
+ 'out-build/vs/workbench/browser/parts/editor/media/*.png',
+ 'out-build/vs/workbench/contrib/debug/browser/media/*.png',
+
+ // External Terminal
+ 'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
+
+ // Terminal shell integration
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/fish_xdg_data/fish/vendor_conf.d/*.fish',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.ps1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.psm1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.sh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.zsh',
+
+ // Accessibility Signals
+ 'out-build/vs/platform/accessibilitySignal/browser/media/*.mp3',
+
+ // Welcome
+ 'out-build/vs/workbench/contrib/welcomeGettingStarted/common/media/**/*.{svg,png}',
+
+ // Extensions
+ 'out-build/vs/workbench/contrib/extensions/browser/media/{theme-icon.png,language-icon.svg}',
+ 'out-build/vs/workbench/services/extensionManagement/common/media/*.{svg,png}',
+
+ // Webview
+ 'out-build/vs/workbench/contrib/webview/browser/pre/*.{js,html}',
+
+ // Extension Host Worker
+ 'out-build/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.esm.html',
+
+ // Process Explorer
+ 'out-build/vs/code/electron-sandbox/processExplorer/processExplorer.esm.html',
+
+ // Tree Sitter highlights
+ 'out-build/vs/editor/common/languages/highlights/*.scm',
+
+ // Issue Reporter
+ 'out-build/vs/workbench/contrib/issue/electron-sandbox/issueReporter.esm.html'
+] : [
+ 'out-build/nls.messages.json',
+ 'out-build/nls.keys.json',
'out-build/vs/**/*.{svg,png,html,jpg,mp3}',
'!out-build/vs/code/browser/**/*.html',
'!out-build/vs/code/**/*-dev.html',
+ '!out-build/vs/code/**/*-dev.esm.html',
'!out-build/vs/editor/standalone/**/*.svg',
- 'out-build/vs/base/common/performance.js',
'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}',
'out-build/vs/base/browser/ui/codicons/codicon/**',
'out-build/vs/base/parts/sandbox/electron-sandbox/preload.js',
@@ -68,25 +130,48 @@ const vscodeResources = [
'out-build/vs/workbench/browser/media/*-theme.css',
'out-build/vs/workbench/contrib/debug/**/*.json',
'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
- 'out-build/vs/workbench/contrib/terminal/browser/media/fish_xdg_data/fish/vendor_conf.d/*.fish',
- 'out-build/vs/workbench/contrib/terminal/browser/media/*.ps1',
- 'out-build/vs/workbench/contrib/terminal/browser/media/*.sh',
- 'out-build/vs/workbench/contrib/terminal/browser/media/*.zsh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/fish_xdg_data/fish/vendor_conf.d/*.fish',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.ps1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.psm1',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.sh',
+ 'out-build/vs/workbench/contrib/terminal/common/scripts/*.zsh',
'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
- '!out-build/vs/workbench/contrib/issue/browser/*.html',
'!out-build/vs/workbench/contrib/issue/**/*-dev.html',
+ '!out-build/vs/workbench/contrib/issue/**/*-dev.esm.html',
+ 'out-build/vs/editor/common/languages/highlights/*.scm',
'out-build/vs/**/markdown.css',
'out-build/vs/workbench/contrib/tasks/**/*.json',
'!**/test/**'
];
+const vscodeResources = [
+
+ // Includes
+ ...vscodeResourceIncludes,
+
+ // Excludes
+ '!out-build/vs/code/browser/**',
+ '!out-build/vs/editor/standalone/**',
+ '!out-build/vs/code/**/*-dev.html',
+ '!out-build/vs/code/**/*-dev.esm.html',
+ '!out-build/vs/workbench/contrib/issue/**/*-dev.html',
+ '!out-build/vs/workbench/contrib/issue/**/*-dev.esm.html',
+ '!**/test/**'
+];
+
// Do not change the order of these files! They will
// be inlined into the target window file in this order
// and they depend on each other in this way.
-const windowBootstrapFiles = [
- 'out-build/bootstrap.js',
- 'out-build/vs/loader.js',
- 'out-build/bootstrap-window.js'
+const windowBootstrapFiles = [];
+if (isAMD()) {
+ windowBootstrapFiles.push('out-build/vs/loader.js');
+}
+windowBootstrapFiles.push('out-build/bootstrap-window.js');
+
+const commonJSEntryPoints = [
+ 'out-build/main.js',
+ 'out-build/cli.js',
+ 'out-build/bootstrap-fork.js'
];
const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
@@ -107,17 +192,16 @@ const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
},
commonJS: {
src: 'out-build',
- entryPoints: [
- 'out-build/main.js',
- 'out-build/cli.js'
- ],
+ entryPoints: commonJSEntryPoints,
platform: 'node',
external: [
'electron',
'minimist',
- // TODO: we cannot inline `product.json` because
+ 'original-fs',
+ // We cannot inline `product.json` from here because
// it is being changed during build time at a later
// point in time (such as `checksums`)
+ // We have a manual step to inline these later.
'../product.json',
'../package.json',
]
@@ -212,7 +296,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
'vs/workbench/workbench.desktop.main.js',
'vs/workbench/workbench.desktop.main.css',
'vs/workbench/api/node/extensionHostProcess.js',
- 'vs/code/electron-sandbox/workbench/workbench.html',
+ !isAMD() ? 'vs/code/electron-sandbox/workbench/workbench.esm.html' : 'vs/code/electron-sandbox/workbench/workbench.html',
'vs/code/electron-sandbox/workbench/workbench.js'
]);
@@ -242,21 +326,28 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
}
const name = product.nameShort;
- const packageJsonUpdates = { name, version };
+ const packageJsonUpdates = { name, version, ...(!isAMD() ? { type: 'module', main: 'out/main.js' } : {}) }; // TODO@esm this should be configured in the top level package.json
// for linux url handling
if (platform === 'linux') {
packageJsonUpdates.desktopName = `${product.applicationName}-url-handler.desktop`;
}
+ let packageJsonContents;
const packageJsonStream = gulp.src(['package.json'], { base: '.' })
- .pipe(json(packageJsonUpdates));
-
- const date = new Date().toISOString();
- const productJsonUpdate = { commit, date, checksums, version };
+ .pipe(json(packageJsonUpdates))
+ .pipe(es.through(function (file) {
+ packageJsonContents = file.contents.toString();
+ this.emit('data', file);
+ }));
+ let productJsonContents;
const productJsonStream = gulp.src(['product.json'], { base: '.' })
- .pipe(json(productJsonUpdate));
+ .pipe(json({ commit, date: readISODate('out-build'), checksums, version }))
+ .pipe(es.through(function (file) {
+ productJsonContents = file.contents.toString();
+ this.emit('data', file);
+ }));
const license = gulp.src([product.licenseFileName, 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.', allowEmpty: true });
@@ -268,7 +359,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const jsFilter = util.filter(data => !data.isDirectory() && /\.js$/.test(data.path));
const root = path.resolve(path.join(__dirname, '..'));
const productionDependencies = getProductionDependencies(root);
- const dependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
+ const dependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!**/*.mk`]).flat();
const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
.pipe(filter(['**', `!**/${config.version}/**`, '!**/bin/darwin-arm64-87/**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.js.map']))
@@ -281,10 +372,18 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
'**/*.node',
'**/@vscode/ripgrep/bin/*',
'**/node-pty/build/Release/*',
+ '**/node-pty/build/Release/conpty/*',
'**/node-pty/lib/worker/conoutSocketWorker.js',
'**/node-pty/lib/shared/conout.js',
'**/*.wasm',
'**/@vscode/vsce-sign/bin/*',
+ ], isAMD() ? [
+ '**/*.mk',
+ ] : [
+ '**/*.mk',
+ '!node_modules/vsda/**' // stay compatible with extensions that depend on us shipping `vsda` into ASAR
+ ], isAMD() ? [] : [
+ 'node_modules/vsda/**' // retain copy of `vsda` in node_modules for internal use
], 'node_modules.asar'));
let all = es.merge(
@@ -389,6 +488,12 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
.pipe(rename('bin/' + product.applicationName)));
}
+ result = inlineMeta(result, {
+ targetPaths: commonJSEntryPoints,
+ packageJsonFn: () => packageJsonContents,
+ productJsonFn: () => productJsonContents
+ });
+
return result.pipe(vfs.dest(destination));
};
}
@@ -397,7 +502,7 @@ function patchWin32DependenciesTask(destinationFolderName) {
const cwd = path.join(path.dirname(root), destinationFolderName);
return async () => {
- const deps = await glob('**/*.node', { cwd });
+ const deps = await glob('**/*.node', { cwd, ignore: 'extensions/node_modules/@parcel/watcher/**' });
const packageJson = JSON.parse(await fs.promises.readFile(path.join(cwd, 'resources', 'app', 'package.json'), 'utf8'));
const product = JSON.parse(await fs.promises.readFile(path.join(cwd, 'resources', 'app', 'product.json'), 'utf8'));
const baseVersion = packageJson.version.replace(/-.*$/, '');
@@ -496,17 +601,12 @@ gulp.task(task.define(
core,
compileExtensionsBuildTask,
function () {
- const pathToMetadata = './out-vscode/nls.metadata.json';
- const pathToRehWebMetadata = './out-vscode-reh-web/nls.metadata.json';
+ const pathToMetadata = './out-build/nls.metadata.json';
const pathToExtensions = '.build/extensions/*';
const pathToSetup = 'build/win32/i18n/messages.en.isl';
return es.merge(
- gulp.src([pathToMetadata, pathToRehWebMetadata]).pipe(merge({
- fileName: 'nls.metadata.json',
- jsonSpace: '',
- concatArrays: true
- })).pipe(i18n.createXlfFilesForCoreBundle()),
+ gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
).pipe(vfs.dest('../vscode-translations-export'));
diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js
index 28ddfb04c3d..5fa5a5d136e 100644
--- a/build/gulpfile.vscode.linux.js
+++ b/build/gulpfile.vscode.linux.js
@@ -108,7 +108,11 @@ function prepareDebPackage(arch) {
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(rename('DEBIAN/postinst'));
- const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, workspaceMime, icon, bash_completion, zsh_completion, code);
+ const templates = gulp.src('resources/linux/debian/templates.template', { base: '.' })
+ .pipe(replace('@@NAME@@', product.applicationName))
+ .pipe(rename('DEBIAN/templates'));
+
+ const all = es.merge(control, templates, postinst, postrm, prerm, desktops, appdata, workspaceMime, icon, bash_completion, zsh_completion, code);
return all.pipe(vfs.dest(destination));
};
@@ -148,6 +152,7 @@ function getRpmPackageArch(arch) {
function prepareRpmPackage(arch) {
const binaryDir = '../VSCode-linux-' + arch;
const rpmArch = getRpmPackageArch(arch);
+ const stripBinary = process.env['STRIP'] ?? '/usr/bin/strip';
return function () {
const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
@@ -204,6 +209,7 @@ function prepareRpmPackage(arch) {
.pipe(replace('@@QUALITY@@', product.quality || '@@QUALITY@@'))
.pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@'))
.pipe(replace('@@DEPENDENCIES@@', dependencies.join(', ')))
+ .pipe(replace('@@STRIP@@', stripBinary))
.pipe(rename('SPECS/' + product.applicationName + '.spec'))
.pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); }));
}));
diff --git a/build/gulpfile.vscode.web.js b/build/gulpfile.vscode.web.js
index 50c7e6fb631..80b7fc559a4 100644
--- a/build/gulpfile.vscode.web.js
+++ b/build/gulpfile.vscode.web.js
@@ -12,15 +12,17 @@ const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const optimize = require('./lib/optimize');
+const { readISODate } = require('./lib/date');
const product = require('../product.json');
const rename = require('gulp-rename');
const filter = require('gulp-filter');
const { getProductionDependencies } = require('./lib/dependencies');
const vfs = require('vinyl-fs');
-const replace = require('gulp-replace');
const packageJson = require('../package.json');
const { compileBuildTask } = require('./gulpfile.compile');
const extensions = require('./lib/extensions');
+const { isAMD } = require('./lib/amd');
+const VinylFile = require('vinyl');
const REPO_ROOT = path.dirname(__dirname);
const BUILD_ROOT = path.dirname(REPO_ROOT);
@@ -30,13 +32,40 @@ const commit = getVersion(REPO_ROOT);
const quality = product.quality;
const version = (quality && quality !== 'stable') ? `${packageJson.version}-${quality}` : packageJson.version;
-const vscodeWebResourceIncludes = [
+const vscodeWebResourceIncludes = !isAMD() ? [
+
+ // NLS
+ 'out-build/nls.messages.js',
+
+ // Accessibility Signals
+ 'out-build/vs/platform/accessibilitySignal/browser/media/*.mp3',
+
+ // Welcome
+ 'out-build/vs/workbench/contrib/welcomeGettingStarted/common/media/**/*.{svg,png}',
+
+ // Extensions
+ 'out-build/vs/workbench/contrib/extensions/browser/media/{theme-icon.png,language-icon.svg}',
+ 'out-build/vs/workbench/services/extensionManagement/common/media/*.{svg,png}',
+
+ // Webview
+ 'out-build/vs/workbench/contrib/webview/browser/pre/*.{js,html}',
+
+ // Tree Sitter highlights
+ 'out-build/vs/editor/common/languages/highlights/*.scm',
+
+ // Extension Host Worker
+ 'out-build/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.esm.html',
+] : [
+
// Workbench
'out-build/vs/{base,platform,editor,workbench}/**/*.{svg,png,jpg,mp3}',
'out-build/vs/code/browser/workbench/*.html',
'out-build/vs/base/browser/ui/codicons/codicon/**/*.ttf',
'out-build/vs/**/markdown.css',
+ // NLS
+ 'out-build/nls.messages.js',
+
// Webview
'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
'out-build/vs/workbench/contrib/webview/browser/pre/*.html',
@@ -44,6 +73,9 @@ const vscodeWebResourceIncludes = [
// Extension Worker
'out-build/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html',
+ // Tree Sitter highlights
+ 'out-build/vs/editor/common/languages/highlights/*.scm',
+
// Web node paths (needed for integration tests)
'out-build/vs/webPackagePaths.js',
];
@@ -55,28 +87,37 @@ const vscodeWebResources = [
...vscodeWebResourceIncludes,
// Excludes
- '!out-build/vs/**/{node,electron-sandbox,electron-main}/**',
+ '!out-build/vs/**/{node,electron-sandbox,electron-main,electron-utility}/**',
'!out-build/vs/editor/standalone/**',
'!out-build/vs/workbench/**/*-tb.png',
+ '!out-build/vs/code/**/*-dev.html',
+ '!out-build/vs/code/**/*-dev.esm.html',
'!**/test/**'
];
-const buildfile = require('../src/buildfile');
+const buildfile = require('./buildfile');
-const vscodeWebEntryPoints = [
- buildfile.entrypoint('vs/workbench/workbench.web.main'),
+const vscodeWebEntryPoints = !isAMD() ? [
buildfile.base,
buildfile.workerExtensionHost,
buildfile.workerNotebook,
buildfile.workerLanguageDetection,
buildfile.workerLocalFileSearch,
- buildfile.workerProfileAnalysis,
+ buildfile.workerOutputLinks,
+ buildfile.workerBackgroundTokenization,
buildfile.keyboardMaps,
- buildfile.workbenchWeb
+ buildfile.workbenchWeb(),
+ buildfile.entrypoint('vs/workbench/workbench.web.main.internal') // TODO@esm remove line when we stop supporting web-amd-esm-bridge
+].flat() : [
+ buildfile.entrypoint('vs/workbench/workbench.web.main.internal'),
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.keyboardMaps,
+ buildfile.workbenchWeb()
].flat();
-exports.vscodeWebEntryPoints = vscodeWebEntryPoints;
-
-const buildDate = new Date().toISOString();
/**
* @param {object} product The parsed product.json file contents
@@ -93,7 +134,7 @@ const createVSCodeWebProductConfigurationPatcher = (product) => {
...product,
version,
commit,
- date: buildDate
+ date: readISODate('out-build')
});
return content.replace('/*BUILD->INSERT_PRODUCT_CONFIGURATION*/', () => productConfiguration.substr(1, productConfiguration.length - 2) /* without { and }*/);
}
@@ -190,8 +231,21 @@ function packageTask(sourceFolderName, destinationFolderName) {
const extensions = gulp.src('.build/web/extensions/**', { base: '.build/web', dot: true });
- const sources = es.merge(src, extensions)
- .pipe(filter(['**', '!**/*.js.map'], { dot: true }));
+ const loader = gulp.src('build/loader.min', { base: 'build', dot: true }).pipe(rename('out/vs/loader.js')); // TODO@esm remove line when we stop supporting web-amd-esm-bridge
+
+ const sources = es.merge(...(!isAMD() ? [src, extensions, loader] : [src, extensions]))
+ .pipe(filter(['**', '!**/*.js.map'], { dot: true }))
+ // TODO@esm remove me once we stop supporting our web-esm-bridge
+ .pipe(es.through(function (file) {
+ if (file.relative === 'out/vs/workbench/workbench.web.main.internal.css') {
+ this.emit('data', new VinylFile({
+ contents: file.contents,
+ path: file.path.replace('workbench.web.main.internal.css', 'workbench.web.main.css'),
+ base: file.base
+ }));
+ }
+ this.emit('data', file);
+ }));
const name = product.nameShort;
const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' })
@@ -200,7 +254,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
const license = gulp.src(['remote/LICENSE'], { base: 'remote', allowEmpty: true });
const productionDependencies = getProductionDependencies(WEB_FOLDER);
- const dependenciesSrc = productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]).flat();
+ const dependenciesSrc = productionDependencies.map(d => path.relative(REPO_ROOT, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]).flat();
const deps = gulp.src(dependenciesSrc, { base: 'remote/web', dot: true })
.pipe(filter(['**', '!**/package-lock.json']))
diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js
index 5adfdfbfe18..98175f530dd 100644
--- a/build/gulpfile.vscode.win32.js
+++ b/build/gulpfile.vscode.win32.js
@@ -16,7 +16,6 @@ const pkg = require('../package.json');
const product = require('../product.json');
const vfs = require('vinyl-fs');
const rcedit = require('rcedit');
-const mkdirp = require('mkdirp');
const repoPath = path.dirname(__dirname);
const buildPath = (/** @type {string} */ arch) => path.join(path.dirname(repoPath), `VSCode-win32-${arch}`);
@@ -75,7 +74,7 @@ function buildWin32Setup(arch, target) {
const sourcePath = buildPath(arch);
const outputPath = setupDir(arch, target);
- mkdirp.sync(outputPath);
+ fs.mkdirSync(outputPath, { recursive: true });
const originalProductJsonPath = path.join(sourcePath, 'resources/app/product.json');
const productJsonPath = path.join(outputPath, 'product.json');
diff --git a/build/hygiene.js b/build/hygiene.js
index bc64a11f8e9..010967c49ff 100644
--- a/build/hygiene.js
+++ b/build/hygiene.js
@@ -145,11 +145,13 @@ function hygiene(some, linting = true) {
const productJsonFilter = filter('product.json', { restore: true });
const snapshotFilter = filter(['**', '!**/*.snap', '!**/*.snap.actual']);
+ const yarnLockFilter = filter(['**', '!**/yarn.lock']);
const unicodeFilterStream = filter(unicodeFilter, { restore: true });
const result = input
.pipe(filter((f) => !f.stat.isDirectory()))
.pipe(snapshotFilter)
+ .pipe(yarnLockFilter)
.pipe(productJsonFilter)
.pipe(process.env['BUILD_SOURCEVERSION'] ? es.through() : productJson)
.pipe(productJsonFilter.restore)
diff --git a/build/lib/amd.js b/build/lib/amd.js
new file mode 100644
index 00000000000..8d4e428f830
--- /dev/null
+++ b/build/lib/amd.js
@@ -0,0 +1,41 @@
+"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.setAMD = setAMD;
+exports.isAMD = isAMD;
+const path = require("path");
+const fs = require("fs");
+// TODO@esm remove this
+const outDirectory = path.join(__dirname, '..', '..', 'out-build');
+const amdMarkerFile = path.join(outDirectory, 'amd');
+function setAMD(enabled) {
+ const result = () => new Promise((resolve, _) => {
+ if (enabled) {
+ fs.mkdirSync(outDirectory, { recursive: true });
+ fs.writeFileSync(amdMarkerFile, 'true', 'utf8');
+ console.warn(`Setting build to AMD: true`);
+ }
+ else {
+ console.warn(`Setting build to AMD: false`);
+ }
+ resolve();
+ });
+ result.taskName = 'set-amd';
+ return result;
+}
+function isAMD(logWarning) {
+ try {
+ const res = (typeof process.env.VSCODE_BUILD_AMD === 'string' && process.env.VSCODE_BUILD_AMD.toLowerCase() === 'true') || (fs.readFileSync(amdMarkerFile, 'utf8') === 'true');
+ if (res && logWarning) {
+ console.warn(`[amd] ${logWarning}`);
+ }
+ return res;
+ }
+ catch (error) {
+ return false;
+ }
+}
+//# sourceMappingURL=amd.js.map
\ No newline at end of file
diff --git a/build/lib/amd.ts b/build/lib/amd.ts
new file mode 100644
index 00000000000..5373024c6a0
--- /dev/null
+++ b/build/lib/amd.ts
@@ -0,0 +1,40 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as path from 'path';
+import * as fs from 'fs';
+
+// TODO@esm remove this
+
+const outDirectory = path.join(__dirname, '..', '..', 'out-build');
+const amdMarkerFile = path.join(outDirectory, 'amd');
+
+export function setAMD(enabled: boolean) {
+ const result = () => new Promise((resolve, _) => {
+ if (enabled) {
+ fs.mkdirSync(outDirectory, { recursive: true });
+ fs.writeFileSync(amdMarkerFile, 'true', 'utf8');
+ console.warn(`Setting build to AMD: true`);
+ } else {
+ console.warn(`Setting build to AMD: false`);
+ }
+
+ resolve();
+ });
+ result.taskName = 'set-amd';
+ return result;
+}
+
+export function isAMD(logWarning?: string): boolean {
+ try {
+ const res = (typeof process.env.VSCODE_BUILD_AMD === 'string' && process.env.VSCODE_BUILD_AMD.toLowerCase() === 'true') || (fs.readFileSync(amdMarkerFile, 'utf8') === 'true');
+ if (res && logWarning) {
+ console.warn(`[amd] ${logWarning}`);
+ }
+ return res;
+ } catch (error) {
+ return false;
+ }
+}
diff --git a/build/lib/asar.js b/build/lib/asar.js
index 31845f2f2dd..19285ef7100 100644
--- a/build/lib/asar.js
+++ b/build/lib/asar.js
@@ -11,7 +11,7 @@ const pickle = require('chromium-pickle-js');
const Filesystem = require('asar/lib/filesystem');
const VinylFile = require("vinyl");
const minimatch = require("minimatch");
-function createAsar(folderPath, unpackGlobs, destFilename) {
+function createAsar(folderPath, unpackGlobs, skipGlobs, duplicateGlobs, destFilename) {
const shouldUnpackFile = (file) => {
for (let i = 0; i < unpackGlobs.length; i++) {
if (minimatch(file.relative, unpackGlobs[i])) {
@@ -20,6 +20,24 @@ function createAsar(folderPath, unpackGlobs, destFilename) {
}
return false;
};
+ const shouldSkipFile = (file) => {
+ for (const skipGlob of skipGlobs) {
+ if (minimatch(file.relative, skipGlob)) {
+ return true;
+ }
+ }
+ return false;
+ };
+ // Files that should be duplicated between
+ // node_modules.asar and node_modules
+ const shouldDuplicateFile = (file) => {
+ for (const duplicateGlob of duplicateGlobs) {
+ if (minimatch(file.relative, duplicateGlob)) {
+ return true;
+ }
+ }
+ return false;
+ };
const filesystem = new Filesystem(folderPath);
const out = [];
// Keep track of pending inserts
@@ -64,6 +82,23 @@ function createAsar(folderPath, unpackGlobs, destFilename) {
if (!file.stat.isFile()) {
throw new Error(`unknown item in stream!`);
}
+ if (shouldSkipFile(file)) {
+ this.queue(new VinylFile({
+ base: '.',
+ path: file.path,
+ stat: file.stat,
+ contents: file.contents
+ }));
+ return;
+ }
+ if (shouldDuplicateFile(file)) {
+ this.queue(new VinylFile({
+ base: '.',
+ path: file.path,
+ stat: file.stat,
+ contents: file.contents
+ }));
+ }
const shouldUnpack = shouldUnpackFile(file);
insertFile(file.relative, { size: file.contents.length, mode: file.stat.mode }, shouldUnpack);
if (shouldUnpack) {
diff --git a/build/lib/asar.ts b/build/lib/asar.ts
index 44a6416bdfb..0b225ab1624 100644
--- a/build/lib/asar.ts
+++ b/build/lib/asar.ts
@@ -17,7 +17,7 @@ declare class AsarFilesystem {
insertFile(path: string, shouldUnpack: boolean, file: { stat: { size: number; mode: number } }, options: {}): Promise;
}
-export function createAsar(folderPath: string, unpackGlobs: string[], destFilename: string): NodeJS.ReadWriteStream {
+export function createAsar(folderPath: string, unpackGlobs: string[], skipGlobs: string[], duplicateGlobs: string[], destFilename: string): NodeJS.ReadWriteStream {
const shouldUnpackFile = (file: VinylFile): boolean => {
for (let i = 0; i < unpackGlobs.length; i++) {
@@ -28,6 +28,26 @@ export function createAsar(folderPath: string, unpackGlobs: string[], destFilena
return false;
};
+ const shouldSkipFile = (file: VinylFile): boolean => {
+ for (const skipGlob of skipGlobs) {
+ if (minimatch(file.relative, skipGlob)) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ // Files that should be duplicated between
+ // node_modules.asar and node_modules
+ const shouldDuplicateFile = (file: VinylFile): boolean => {
+ for (const duplicateGlob of duplicateGlobs) {
+ if (minimatch(file.relative, duplicateGlob)) {
+ return true;
+ }
+ }
+ return false;
+ };
+
const filesystem = new Filesystem(folderPath);
const out: Buffer[] = [];
@@ -78,6 +98,23 @@ export function createAsar(folderPath: string, unpackGlobs: string[], destFilena
if (!file.stat.isFile()) {
throw new Error(`unknown item in stream!`);
}
+ if (shouldSkipFile(file)) {
+ this.queue(new VinylFile({
+ base: '.',
+ path: file.path,
+ stat: file.stat,
+ contents: file.contents
+ }));
+ return;
+ }
+ if (shouldDuplicateFile(file)) {
+ this.queue(new VinylFile({
+ base: '.',
+ path: file.path,
+ stat: file.stat,
+ contents: file.contents
+ }));
+ }
const shouldUnpack = shouldUnpackFile(file);
insertFile(file.relative, { size: file.contents.length, mode: file.stat.mode }, shouldUnpack);
diff --git a/build/lib/builtInExtensions.js b/build/lib/builtInExtensions.js
index 463ce16e18d..ac784c03506 100644
--- a/build/lib/builtInExtensions.js
+++ b/build/lib/builtInExtensions.js
@@ -16,7 +16,6 @@ const vfs = require("vinyl-fs");
const ext = require("./extensions");
const fancyLog = require("fancy-log");
const ansiColors = require("ansi-colors");
-const mkdirp = require('mkdirp');
const root = path.dirname(path.dirname(__dirname));
const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
const builtInExtensions = productjson.builtInExtensions || [];
@@ -107,7 +106,7 @@ function readControlFile() {
}
}
function writeControlFile(control) {
- mkdirp.sync(path.dirname(controlFilePath));
+ fs.mkdirSync(path.dirname(controlFilePath), { recursive: true });
fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
}
function getBuiltInExtensions() {
diff --git a/build/lib/builtInExtensions.ts b/build/lib/builtInExtensions.ts
index fefed436bb9..8b831d42d44 100644
--- a/build/lib/builtInExtensions.ts
+++ b/build/lib/builtInExtensions.ts
@@ -15,8 +15,6 @@ import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
import { Stream } from 'stream';
-const mkdirp = require('mkdirp');
-
export interface IExtensionDefinition {
name: string;
version: string;
@@ -147,7 +145,7 @@ function readControlFile(): IControlFile {
}
function writeControlFile(control: IControlFile): void {
- mkdirp.sync(path.dirname(controlFilePath));
+ fs.mkdirSync(path.dirname(controlFilePath), { recursive: true });
fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
}
diff --git a/build/lib/builtInExtensionsCG.js b/build/lib/builtInExtensionsCG.js
index 30b6791b3a0..6a1e5ea539e 100644
--- a/build/lib/builtInExtensionsCG.js
+++ b/build/lib/builtInExtensionsCG.js
@@ -15,7 +15,7 @@ const builtInExtensions = productjson.builtInExtensions || [];
const webBuiltInExtensions = productjson.webBuiltInExtensions || [];
const token = process.env['GITHUB_TOKEN'];
const contentBasePath = 'raw.githubusercontent.com';
-const contentFileNames = ['package.json', 'package-lock.json', 'yarn.lock'];
+const contentFileNames = ['package.json', 'package-lock.json'];
async function downloadExtensionDetails(extension) {
const extensionLabel = `${extension.name}@${extension.version}`;
const repository = url.parse(extension.repo).path.substr(1);
@@ -58,9 +58,8 @@ async function downloadExtensionDetails(extension) {
if (!results.find(r => r.fileName === 'package.json')?.body) {
// throw new Error(`The "package.json" file could not be found for the built-in extension - ${extensionLabel}`);
}
- if (!results.find(r => r.fileName === 'package-lock.json')?.body &&
- !results.find(r => r.fileName === 'yarn.lock')?.body) {
- // throw new Error(`The "package-lock.json"/"yarn.lock" could not be found for the built-in extension - ${extensionLabel}`);
+ if (!results.find(r => r.fileName === 'package-lock.json')?.body) {
+ // throw new Error(`The "package-lock.json" could not be found for the built-in extension - ${extensionLabel}`);
}
}
async function main() {
diff --git a/build/lib/builtInExtensionsCG.ts b/build/lib/builtInExtensionsCG.ts
index 62d09498221..9d11dea3dca 100644
--- a/build/lib/builtInExtensionsCG.ts
+++ b/build/lib/builtInExtensionsCG.ts
@@ -17,7 +17,7 @@ const webBuiltInExtensions = productjson.webBuiltInExten
const token = process.env['GITHUB_TOKEN'];
const contentBasePath = 'raw.githubusercontent.com';
-const contentFileNames = ['package.json', 'package-lock.json', 'yarn.lock'];
+const contentFileNames = ['package.json', 'package-lock.json'];
async function downloadExtensionDetails(extension: IExtensionDefinition): Promise {
const extensionLabel = `${extension.name}@${extension.version}`;
@@ -61,9 +61,8 @@ async function downloadExtensionDetails(extension: IExtensionDefinition): Promis
if (!results.find(r => r.fileName === 'package.json')?.body) {
// throw new Error(`The "package.json" file could not be found for the built-in extension - ${extensionLabel}`);
}
- if (!results.find(r => r.fileName === 'package-lock.json')?.body &&
- !results.find(r => r.fileName === 'yarn.lock')?.body) {
- // throw new Error(`The "package-lock.json"/"yarn.lock" could not be found for the built-in extension - ${extensionLabel}`);
+ if (!results.find(r => r.fileName === 'package-lock.json')?.body) {
+ // throw new Error(`The "package-lock.json" could not be found for the built-in extension - ${extensionLabel}`);
}
}
diff --git a/build/lib/bundle.js b/build/lib/bundle.js
index 1a2f870991f..627b9966700 100644
--- a/build/lib/bundle.js
+++ b/build/lib/bundle.js
@@ -5,6 +5,7 @@
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.bundle = bundle;
+exports.removeAllTSBoilerplate = removeAllTSBoilerplate;
const fs = require("fs");
const path = require("path");
const vm = require("vm");
@@ -36,14 +37,10 @@ function bundle(entryPoints, config, callback) {
const loader = loaderModule.exports;
config.isBuild = true;
config.paths = config.paths || {};
- if (!config.paths['vs/nls']) {
- config.paths['vs/nls'] = 'out-build/vs/nls.build';
- }
if (!config.paths['vs/css']) {
config.paths['vs/css'] = 'out-build/vs/css.build';
}
config.buildForceInvokeFactory = config.buildForceInvokeFactory || {};
- config.buildForceInvokeFactory['vs/nls'] = true;
config.buildForceInvokeFactory['vs/css'] = true;
loader.config(config);
loader(['require'], (localRequire) => {
@@ -53,15 +50,11 @@ function bundle(entryPoints, config, callback) {
r += '.js';
}
// avoid packaging the build version of plugins:
- r = r.replace('vs/nls.build.js', 'vs/nls.js');
r = r.replace('vs/css.build.js', 'vs/css.js');
return { path: r, amdModuleId: entry.amdModuleId };
};
for (const moduleId in entryPointsMap) {
const entryPoint = entryPointsMap[moduleId];
- if (entryPoint.append) {
- entryPoint.append = entryPoint.append.map(resolvePath);
- }
if (entryPoint.prepend) {
entryPoint.prepend = entryPoint.prepend.map(resolvePath);
}
@@ -109,7 +102,7 @@ function emitEntryPoints(modules, entryPoints) {
return allDependencies[module];
});
bundleData.bundles[moduleToBundle] = includedModules;
- const res = emitEntryPoint(modulesMap, modulesGraph, moduleToBundle, includedModules, info.prepend || [], info.append || [], info.dest);
+ const res = emitEntryPoint(modulesMap, modulesGraph, moduleToBundle, includedModules, info.prepend || [], info.dest);
result = result.concat(res.files);
for (const pluginName in res.usedPlugins) {
usedPlugins[pluginName] = usedPlugins[pluginName] || res.usedPlugins[pluginName];
@@ -132,7 +125,7 @@ function emitEntryPoints(modules, entryPoints) {
});
return {
// TODO@TS 2.1.2
- files: extractStrings(removeDuplicateTSBoilerplate(result)),
+ files: extractStrings(removeAllDuplicateTSBoilerplate(result)),
bundleData: bundleData
};
}
@@ -221,61 +214,68 @@ function extractStrings(destFiles) {
});
return destFiles;
}
-function removeDuplicateTSBoilerplate(destFiles) {
- // Taken from typescript compiler => emitFiles
- const BOILERPLATE = [
- { start: /^var __extends/, end: /^}\)\(\);$/ },
- { start: /^var __assign/, end: /^};$/ },
- { start: /^var __decorate/, end: /^};$/ },
- { start: /^var __metadata/, end: /^};$/ },
- { start: /^var __param/, end: /^};$/ },
- { start: /^var __awaiter/, end: /^};$/ },
- { start: /^var __generator/, end: /^};$/ },
- { start: /^var __createBinding/, end: /^}\)\);$/ },
- { start: /^var __setModuleDefault/, end: /^}\);$/ },
- { start: /^var __importStar/, end: /^};$/ },
- ];
+function removeAllDuplicateTSBoilerplate(destFiles) {
destFiles.forEach((destFile) => {
const SEEN_BOILERPLATE = [];
destFile.sources.forEach((source) => {
- const lines = source.contents.split(/\r\n|\n|\r/);
- const newLines = [];
- let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE;
- for (let i = 0; i < lines.length; i++) {
- const line = lines[i];
- if (IS_REMOVING_BOILERPLATE) {
- newLines.push('');
- if (END_BOILERPLATE.test(line)) {
- IS_REMOVING_BOILERPLATE = false;
- }
- }
- else {
- for (let j = 0; j < BOILERPLATE.length; j++) {
- const boilerplate = BOILERPLATE[j];
- if (boilerplate.start.test(line)) {
- if (SEEN_BOILERPLATE[j]) {
- IS_REMOVING_BOILERPLATE = true;
- END_BOILERPLATE = boilerplate.end;
- }
- else {
- SEEN_BOILERPLATE[j] = true;
- }
- }
- }
- if (IS_REMOVING_BOILERPLATE) {
- newLines.push('');
+ source.contents = removeDuplicateTSBoilerplate(source.contents, SEEN_BOILERPLATE);
+ });
+ });
+ return destFiles;
+}
+function removeAllTSBoilerplate(source) {
+ const seen = new Array(BOILERPLATE.length).fill(true, 0, 10);
+ return removeDuplicateTSBoilerplate(source, seen);
+}
+// Taken from typescript compiler => emitFiles
+const BOILERPLATE = [
+ { start: /^var __extends/, end: /^}\)\(\);$/ },
+ { start: /^var __assign/, end: /^};$/ },
+ { start: /^var __decorate/, end: /^};$/ },
+ { start: /^var __metadata/, end: /^};$/ },
+ { start: /^var __param/, end: /^};$/ },
+ { start: /^var __awaiter/, end: /^};$/ },
+ { start: /^var __generator/, end: /^};$/ },
+ { start: /^var __createBinding/, end: /^}\)\);$/ },
+ { start: /^var __setModuleDefault/, end: /^}\);$/ },
+ { start: /^var __importStar/, end: /^};$/ },
+];
+function removeDuplicateTSBoilerplate(source, SEEN_BOILERPLATE = []) {
+ const lines = source.split(/\r\n|\n|\r/);
+ const newLines = [];
+ let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE;
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i];
+ if (IS_REMOVING_BOILERPLATE) {
+ newLines.push('');
+ if (END_BOILERPLATE.test(line)) {
+ IS_REMOVING_BOILERPLATE = false;
+ }
+ }
+ else {
+ for (let j = 0; j < BOILERPLATE.length; j++) {
+ const boilerplate = BOILERPLATE[j];
+ if (boilerplate.start.test(line)) {
+ if (SEEN_BOILERPLATE[j]) {
+ IS_REMOVING_BOILERPLATE = true;
+ END_BOILERPLATE = boilerplate.end;
}
else {
- newLines.push(line);
+ SEEN_BOILERPLATE[j] = true;
}
}
}
- source.contents = newLines.join('\n');
- });
- });
- return destFiles;
+ if (IS_REMOVING_BOILERPLATE) {
+ newLines.push('');
+ }
+ else {
+ newLines.push(line);
+ }
+ }
+ }
+ return newLines.join('\n');
}
-function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend, append, dest) {
+function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend, dest) {
if (!dest) {
dest = entryPoint + '.js';
}
@@ -349,8 +349,7 @@ function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend,
};
};
const toPrepend = (prepend || []).map(toIFile);
- const toAppend = (append || []).map(toIFile);
- mainResult.sources = toPrepend.concat(mainResult.sources).concat(toAppend);
+ mainResult.sources = toPrepend.concat(mainResult.sources);
return {
files: results,
usedPlugins: usedPlugins
diff --git a/build/lib/bundle.ts b/build/lib/bundle.ts
index 2efa081b471..6e3f96a5062 100644
--- a/build/lib/bundle.ts
+++ b/build/lib/bundle.ts
@@ -52,8 +52,8 @@ export interface IEntryPoint {
include?: string[];
exclude?: string[];
prepend?: IExtraFile[];
- append?: IExtraFile[];
dest?: string;
+ target?: 'amd' | 'esm';
}
interface IEntryPointMap {
@@ -138,14 +138,10 @@ export function bundle(entryPoints: IEntryPoint[], config: ILoaderConfig, callba
const loader: any = loaderModule.exports;
config.isBuild = true;
config.paths = config.paths || {};
- if (!config.paths['vs/nls']) {
- config.paths['vs/nls'] = 'out-build/vs/nls.build';
- }
if (!config.paths['vs/css']) {
config.paths['vs/css'] = 'out-build/vs/css.build';
}
config.buildForceInvokeFactory = config.buildForceInvokeFactory || {};
- config.buildForceInvokeFactory['vs/nls'] = true;
config.buildForceInvokeFactory['vs/css'] = true;
loader.config(config);
@@ -156,15 +152,11 @@ export function bundle(entryPoints: IEntryPoint[], config: ILoaderConfig, callba
r += '.js';
}
// avoid packaging the build version of plugins:
- r = r.replace('vs/nls.build.js', 'vs/nls.js');
r = r.replace('vs/css.build.js', 'vs/css.js');
return { path: r, amdModuleId: entry.amdModuleId };
};
for (const moduleId in entryPointsMap) {
const entryPoint = entryPointsMap[moduleId];
- if (entryPoint.append) {
- entryPoint.append = entryPoint.append.map(resolvePath);
- }
if (entryPoint.prepend) {
entryPoint.prepend = entryPoint.prepend.map(resolvePath);
}
@@ -228,7 +220,6 @@ function emitEntryPoints(modules: IBuildModuleInfo[], entryPoints: IEntryPointMa
moduleToBundle,
includedModules,
info.prepend || [],
- info.append || [],
info.dest
);
@@ -256,7 +247,7 @@ function emitEntryPoints(modules: IBuildModuleInfo[], entryPoints: IEntryPointMa
return {
// TODO@TS 2.1.2
- files: extractStrings(removeDuplicateTSBoilerplate(result)),
+ files: extractStrings(removeAllDuplicateTSBoilerplate(result)),
bundleData: bundleData
};
}
@@ -355,61 +346,70 @@ function extractStrings(destFiles: IConcatFile[]): IConcatFile[] {
return destFiles;
}
-function removeDuplicateTSBoilerplate(destFiles: IConcatFile[]): IConcatFile[] {
- // Taken from typescript compiler => emitFiles
- const BOILERPLATE = [
- { start: /^var __extends/, end: /^}\)\(\);$/ },
- { start: /^var __assign/, end: /^};$/ },
- { start: /^var __decorate/, end: /^};$/ },
- { start: /^var __metadata/, end: /^};$/ },
- { start: /^var __param/, end: /^};$/ },
- { start: /^var __awaiter/, end: /^};$/ },
- { start: /^var __generator/, end: /^};$/ },
- { start: /^var __createBinding/, end: /^}\)\);$/ },
- { start: /^var __setModuleDefault/, end: /^}\);$/ },
- { start: /^var __importStar/, end: /^};$/ },
- ];
-
+function removeAllDuplicateTSBoilerplate(destFiles: IConcatFile[]): IConcatFile[] {
destFiles.forEach((destFile) => {
const SEEN_BOILERPLATE: boolean[] = [];
destFile.sources.forEach((source) => {
- const lines = source.contents.split(/\r\n|\n|\r/);
- const newLines: string[] = [];
- let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE: RegExp;
-
- for (let i = 0; i < lines.length; i++) {
- const line = lines[i];
- if (IS_REMOVING_BOILERPLATE) {
- newLines.push('');
- if (END_BOILERPLATE!.test(line)) {
- IS_REMOVING_BOILERPLATE = false;
- }
- } else {
- for (let j = 0; j < BOILERPLATE.length; j++) {
- const boilerplate = BOILERPLATE[j];
- if (boilerplate.start.test(line)) {
- if (SEEN_BOILERPLATE[j]) {
- IS_REMOVING_BOILERPLATE = true;
- END_BOILERPLATE = boilerplate.end;
- } else {
- SEEN_BOILERPLATE[j] = true;
- }
- }
- }
- if (IS_REMOVING_BOILERPLATE) {
- newLines.push('');
- } else {
- newLines.push(line);
- }
- }
- }
- source.contents = newLines.join('\n');
+ source.contents = removeDuplicateTSBoilerplate(source.contents, SEEN_BOILERPLATE);
});
});
return destFiles;
}
+export function removeAllTSBoilerplate(source: string) {
+ const seen = new Array(BOILERPLATE.length).fill(true, 0, 10);
+ return removeDuplicateTSBoilerplate(source, seen);
+}
+
+// Taken from typescript compiler => emitFiles
+const BOILERPLATE = [
+ { start: /^var __extends/, end: /^}\)\(\);$/ },
+ { start: /^var __assign/, end: /^};$/ },
+ { start: /^var __decorate/, end: /^};$/ },
+ { start: /^var __metadata/, end: /^};$/ },
+ { start: /^var __param/, end: /^};$/ },
+ { start: /^var __awaiter/, end: /^};$/ },
+ { start: /^var __generator/, end: /^};$/ },
+ { start: /^var __createBinding/, end: /^}\)\);$/ },
+ { start: /^var __setModuleDefault/, end: /^}\);$/ },
+ { start: /^var __importStar/, end: /^};$/ },
+];
+
+function removeDuplicateTSBoilerplate(source: string, SEEN_BOILERPLATE: boolean[] = []): string {
+ const lines = source.split(/\r\n|\n|\r/);
+ const newLines: string[] = [];
+ let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE: RegExp;
+
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i];
+ if (IS_REMOVING_BOILERPLATE) {
+ newLines.push('');
+ if (END_BOILERPLATE!.test(line)) {
+ IS_REMOVING_BOILERPLATE = false;
+ }
+ } else {
+ for (let j = 0; j < BOILERPLATE.length; j++) {
+ const boilerplate = BOILERPLATE[j];
+ if (boilerplate.start.test(line)) {
+ if (SEEN_BOILERPLATE[j]) {
+ IS_REMOVING_BOILERPLATE = true;
+ END_BOILERPLATE = boilerplate.end;
+ } else {
+ SEEN_BOILERPLATE[j] = true;
+ }
+ }
+ }
+ if (IS_REMOVING_BOILERPLATE) {
+ newLines.push('');
+ } else {
+ newLines.push(line);
+ }
+ }
+ }
+ return newLines.join('\n');
+}
+
interface IPluginMap {
[moduleId: string]: ILoaderPlugin;
}
@@ -425,7 +425,6 @@ function emitEntryPoint(
entryPoint: string,
includedModules: string[],
prepend: IExtraFile[],
- append: IExtraFile[],
dest: string | undefined
): IEmitEntryPointResult {
if (!dest) {
@@ -511,9 +510,8 @@ function emitEntryPoint(
};
const toPrepend = (prepend || []).map(toIFile);
- const toAppend = (append || []).map(toIFile);
- mainResult.sources = toPrepend.concat(mainResult.sources).concat(toAppend);
+ mainResult.sources = toPrepend.concat(mainResult.sources);
return {
files: results,
diff --git a/build/lib/compilation.js b/build/lib/compilation.js
index 2f408d562ce..e6fe4b592a6 100644
--- a/build/lib/compilation.js
+++ b/build/lib/compilation.js
@@ -41,7 +41,7 @@ function getTypeScriptCompilerOptions(src) {
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
return options;
}
-function createCompile(src, build, emitError, transpileOnly) {
+function createCompile(src, { build, emitError, transpileOnly, preserveEnglish }) {
const tsb = require('./tsb');
const sourcemaps = require('gulp-sourcemaps');
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
@@ -71,7 +71,7 @@ function createCompile(src, build, emitError, transpileOnly) {
.pipe(util.loadSourcemaps())
.pipe(compilation(token))
.pipe(noDeclarationsFilter)
- .pipe(util.$if(build, nls.nls()))
+ .pipe(util.$if(build, nls.nls({ preserveEnglish })))
.pipe(noDeclarationsFilter.restore)
.pipe(util.$if(!transpileOnly, sourcemaps.write('.', {
addComment: false,
@@ -90,7 +90,7 @@ function createCompile(src, build, emitError, transpileOnly) {
}
function transpileTask(src, out, swc) {
const task = () => {
- const transpile = createCompile(src, false, true, { swc });
+ const transpile = createCompile(src, { build: false, emitError: true, transpileOnly: { swc }, preserveEnglish: false });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
return srcPipe
.pipe(transpile())
@@ -104,7 +104,7 @@ function compileTask(src, out, build, options = {}) {
if (os.totalmem() < 4_000_000_000) {
throw new Error('compilation requires 4GB of RAM');
}
- const compile = createCompile(src, build, true, false);
+ const compile = createCompile(src, { build, emitError: true, transpileOnly: false, preserveEnglish: !!options.preserveEnglish });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
const generator = new MonacoGenerator(false);
if (src === 'src') {
@@ -139,11 +139,11 @@ function compileTask(src, out, build, options = {}) {
task.taskName = `compile-${path.basename(src)}`;
return task;
}
-function watchTask(out, build) {
+function watchTask(out, build, srcPath = 'src') {
const task = () => {
- const compile = createCompile('src', build, false, false);
- const src = gulp.src('src/**', { base: 'src' });
- const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
+ const compile = createCompile(srcPath, { build, emitError: false, transpileOnly: false, preserveEnglish: false });
+ const src = gulp.src(`${srcPath}/**`, { base: srcPath });
+ const watchSrc = watch(`${srcPath}/**`, { base: srcPath, readDelay: 200 });
const generator = new MonacoGenerator(true);
generator.execute();
return watchSrc
diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
index 3b6fa2df339..978fb15df9e 100644
--- a/build/lib/compilation.ts
+++ b/build/lib/compilation.ts
@@ -42,7 +42,14 @@ function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
return options;
}
-function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean | { swc: boolean }) {
+interface ICompileTaskOptions {
+ readonly build: boolean;
+ readonly emitError: boolean;
+ readonly transpileOnly: boolean | { swc: boolean };
+ readonly preserveEnglish: boolean;
+}
+
+function createCompile(src: string, { build, emitError, transpileOnly, preserveEnglish }: ICompileTaskOptions) {
const tsb = require('./tsb') as typeof import('./tsb');
const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
@@ -79,7 +86,7 @@ function createCompile(src: string, build: boolean, emitError: boolean, transpil
.pipe(util.loadSourcemaps())
.pipe(compilation(token))
.pipe(noDeclarationsFilter)
- .pipe(util.$if(build, nls.nls()))
+ .pipe(util.$if(build, nls.nls({ preserveEnglish })))
.pipe(noDeclarationsFilter.restore)
.pipe(util.$if(!transpileOnly, sourcemaps.write('.', {
addComment: false,
@@ -102,7 +109,7 @@ export function transpileTask(src: string, out: string, swc: boolean): task.Stre
const task = () => {
- const transpile = createCompile(src, false, true, { swc });
+ const transpile = createCompile(src, { build: false, emitError: true, transpileOnly: { swc }, preserveEnglish: false });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
return srcPipe
@@ -114,7 +121,7 @@ export function transpileTask(src: string, out: string, swc: boolean): task.Stre
return task;
}
-export function compileTask(src: string, out: string, build: boolean, options: { disableMangle?: boolean } = {}): task.StreamTask {
+export function compileTask(src: string, out: string, build: boolean, options: { disableMangle?: boolean; preserveEnglish?: boolean } = {}): task.StreamTask {
const task = () => {
@@ -122,7 +129,7 @@ export function compileTask(src: string, out: string, build: boolean, options: {
throw new Error('compilation requires 4GB of RAM');
}
- const compile = createCompile(src, build, true, false);
+ const compile = createCompile(src, { build, emitError: true, transpileOnly: false, preserveEnglish: !!options.preserveEnglish });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
const generator = new MonacoGenerator(false);
if (src === 'src') {
@@ -163,13 +170,13 @@ export function compileTask(src: string, out: string, build: boolean, options: {
return task;
}
-export function watchTask(out: string, build: boolean): task.StreamTask {
+export function watchTask(out: string, build: boolean, srcPath: string = 'src'): task.StreamTask {
const task = () => {
- const compile = createCompile('src', build, false, false);
+ const compile = createCompile(srcPath, { build, emitError: false, transpileOnly: false, preserveEnglish: false });
- const src = gulp.src('src/**', { base: 'src' });
- const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
+ const src = gulp.src(`${srcPath}/**`, { base: srcPath });
+ const watchSrc = watch(`${srcPath}/**`, { base: srcPath, readDelay: 200 });
const generator = new MonacoGenerator(true);
generator.execute();
diff --git a/build/lib/date.js b/build/lib/date.js
new file mode 100644
index 00000000000..77fff0e5073
--- /dev/null
+++ b/build/lib/date.js
@@ -0,0 +1,32 @@
+"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.writeISODate = writeISODate;
+exports.readISODate = readISODate;
+const path = require("path");
+const fs = require("fs");
+const root = path.join(__dirname, '..', '..');
+/**
+ * Writes a `outDir/date` file with the contents of the build
+ * so that other tasks during the build process can use it and
+ * all use the same date.
+ */
+function writeISODate(outDir) {
+ const result = () => new Promise((resolve, _) => {
+ const outDirectory = path.join(root, outDir);
+ fs.mkdirSync(outDirectory, { recursive: true });
+ const date = new Date().toISOString();
+ fs.writeFileSync(path.join(outDirectory, 'date'), date, 'utf8');
+ resolve();
+ });
+ result.taskName = 'build-date-file';
+ return result;
+}
+function readISODate(outDir) {
+ const outDirectory = path.join(root, outDir);
+ return fs.readFileSync(path.join(outDirectory, 'date'), 'utf8');
+}
+//# sourceMappingURL=date.js.map
\ No newline at end of file
diff --git a/build/lib/date.ts b/build/lib/date.ts
new file mode 100644
index 00000000000..998e89f8e6a
--- /dev/null
+++ b/build/lib/date.ts
@@ -0,0 +1,33 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as path from 'path';
+import * as fs from 'fs';
+
+const root = path.join(__dirname, '..', '..');
+
+/**
+ * Writes a `outDir/date` file with the contents of the build
+ * so that other tasks during the build process can use it and
+ * all use the same date.
+ */
+export function writeISODate(outDir: string) {
+ const result = () => new Promise((resolve, _) => {
+ const outDirectory = path.join(root, outDir);
+ fs.mkdirSync(outDirectory, { recursive: true });
+
+ const date = new Date().toISOString();
+ fs.writeFileSync(path.join(outDirectory, 'date'), date, 'utf8');
+
+ resolve();
+ });
+ result.taskName = 'build-date-file';
+ return result;
+}
+
+export function readISODate(outDir: string): string {
+ const outDirectory = path.join(root, outDir);
+ return fs.readFileSync(path.join(outDirectory, 'date'), 'utf8');
+}
diff --git a/build/lib/dependencies.js b/build/lib/dependencies.js
index 1f2dd75d68c..9bcd1204eab 100644
--- a/build/lib/dependencies.js
+++ b/build/lib/dependencies.js
@@ -8,64 +8,43 @@ exports.getProductionDependencies = getProductionDependencies;
const fs = require("fs");
const path = require("path");
const cp = require("child_process");
-const parseSemver = require('parse-semver');
const root = fs.realpathSync(path.dirname(path.dirname(__dirname)));
-function asYarnDependency(prefix, tree) {
- let parseResult;
+function getNpmProductionDependencies(folder) {
+ let raw;
try {
- parseResult = parseSemver(tree.name);
+ raw = cp.execSync('npm ls --all --omit=dev --parseable', { cwd: folder, encoding: 'utf8', env: { ...process.env, NODE_ENV: 'production' }, stdio: [null, null, null] });
}
catch (err) {
- err.message += `: ${tree.name}`;
- console.warn(`Could not parse semver: ${tree.name}`);
- return null;
- }
- // not an actual dependency in disk
- if (parseResult.version !== parseResult.range) {
- return null;
- }
- const name = parseResult.name;
- const version = parseResult.version;
- const dependencyPath = path.join(prefix, name);
- const children = [];
- for (const child of (tree.children || [])) {
- const dep = asYarnDependency(path.join(prefix, name, 'node_modules'), child);
- if (dep) {
- children.push(dep);
+ const regex = /^npm ERR! .*$/gm;
+ let match;
+ while (match = regex.exec(err.message)) {
+ if (/ELSPROBLEMS/.test(match[0])) {
+ continue;
+ }
+ else if (/invalid: xterm/.test(match[0])) {
+ continue;
+ }
+ else if (/A complete log of this run/.test(match[0])) {
+ continue;
+ }
+ else {
+ throw err;
+ }
}
+ raw = err.stdout;
}
- return { name, version, path: dependencyPath, children };
-}
-function getYarnProductionDependencies(folderPath) {
- const raw = cp.execSync('yarn list --json', { cwd: folderPath, encoding: 'utf8', env: { ...process.env, NODE_ENV: 'production' }, stdio: [null, null, 'inherit'] });
- const match = /^{"type":"tree".*$/m.exec(raw);
- if (!match || match.length !== 1) {
- throw new Error('Could not parse result of `yarn list --json`');
- }
- const trees = JSON.parse(match[0]).data.trees;
- return trees
- .map(tree => asYarnDependency(path.join(folderPath, 'node_modules'), tree))
- .filter((dep) => !!dep);
+ return raw.split(/\r?\n/).filter(line => {
+ return !!line.trim() && path.relative(root, line) !== path.relative(root, folder);
+ });
}
function getProductionDependencies(folderPath) {
- const result = [];
- const deps = getYarnProductionDependencies(folderPath);
- const flatten = (dep) => { result.push({ name: dep.name, version: dep.version, path: dep.path }); dep.children.forEach(flatten); };
- deps.forEach(flatten);
+ const result = getNpmProductionDependencies(folderPath);
// Account for distro npm dependencies
const realFolderPath = fs.realpathSync(folderPath);
const relativeFolderPath = path.relative(root, realFolderPath);
- const distroPackageJsonPath = `${root}/.build/distro/npm/${relativeFolderPath}/package.json`;
- if (fs.existsSync(distroPackageJsonPath)) {
- const distroPackageJson = JSON.parse(fs.readFileSync(distroPackageJsonPath, 'utf8'));
- const distroDependencyNames = Object.keys(distroPackageJson.dependencies ?? {});
- for (const name of distroDependencyNames) {
- result.push({
- name,
- version: distroPackageJson.dependencies[name],
- path: path.join(realFolderPath, 'node_modules', name)
- });
- }
+ const distroFolderPath = `${root}/.build/distro/npm/${relativeFolderPath}`;
+ if (fs.existsSync(distroFolderPath)) {
+ result.push(...getNpmProductionDependencies(distroFolderPath));
}
return [...new Set(result)];
}
diff --git a/build/lib/dependencies.ts b/build/lib/dependencies.ts
index 3b314e7d0c5..45368ffd26d 100644
--- a/build/lib/dependencies.ts
+++ b/build/lib/dependencies.ts
@@ -6,93 +6,46 @@
import * as fs from 'fs';
import * as path from 'path';
import * as cp from 'child_process';
-const parseSemver = require('parse-semver');
const root = fs.realpathSync(path.dirname(path.dirname(__dirname)));
-interface Tree {
- readonly name: string;
- readonly children?: Tree[];
-}
-
-interface FlatDependency {
- readonly name: string;
- readonly version: string;
- readonly path: string;
-}
-
-interface Dependency extends FlatDependency {
- readonly children: Dependency[];
-}
-
-function asYarnDependency(prefix: string, tree: Tree): Dependency | null {
- let parseResult;
+function getNpmProductionDependencies(folder: string): string[] {
+ let raw: string;
try {
- parseResult = parseSemver(tree.name);
+ raw = cp.execSync('npm ls --all --omit=dev --parseable', { cwd: folder, encoding: 'utf8', env: { ...process.env, NODE_ENV: 'production' }, stdio: [null, null, null] });
} catch (err) {
- err.message += `: ${tree.name}`;
- console.warn(`Could not parse semver: ${tree.name}`);
- return null;
- }
-
- // not an actual dependency in disk
- if (parseResult.version !== parseResult.range) {
- return null;
- }
-
- const name = parseResult.name;
- const version = parseResult.version;
- const dependencyPath = path.join(prefix, name);
- const children = [];
-
- for (const child of (tree.children || [])) {
- const dep = asYarnDependency(path.join(prefix, name, 'node_modules'), child);
-
- if (dep) {
- children.push(dep);
+ const regex = /^npm ERR! .*$/gm;
+ let match: RegExpExecArray | null;
+
+ while (match = regex.exec(err.message)) {
+ if (/ELSPROBLEMS/.test(match[0])) {
+ continue;
+ } else if (/invalid: xterm/.test(match[0])) {
+ continue;
+ } else if (/A complete log of this run/.test(match[0])) {
+ continue;
+ } else {
+ throw err;
+ }
}
- }
-
- return { name, version, path: dependencyPath, children };
-}
-function getYarnProductionDependencies(folderPath: string): Dependency[] {
- const raw = cp.execSync('yarn list --json', { cwd: folderPath, encoding: 'utf8', env: { ...process.env, NODE_ENV: 'production' }, stdio: [null, null, 'inherit'] });
- const match = /^{"type":"tree".*$/m.exec(raw);
-
- if (!match || match.length !== 1) {
- throw new Error('Could not parse result of `yarn list --json`');
+ raw = err.stdout;
}
- const trees = JSON.parse(match[0]).data.trees as Tree[];
-
- return trees
- .map(tree => asYarnDependency(path.join(folderPath, 'node_modules'), tree))
- .filter((dep): dep is Dependency => !!dep);
+ return raw.split(/\r?\n/).filter(line => {
+ return !!line.trim() && path.relative(root, line) !== path.relative(root, folder);
+ });
}
-export function getProductionDependencies(folderPath: string): FlatDependency[] {
- const result: FlatDependency[] = [];
- const deps = getYarnProductionDependencies(folderPath);
- const flatten = (dep: Dependency) => { result.push({ name: dep.name, version: dep.version, path: dep.path }); dep.children.forEach(flatten); };
- deps.forEach(flatten);
-
+export function getProductionDependencies(folderPath: string): string[] {
+ const result = getNpmProductionDependencies(folderPath);
// Account for distro npm dependencies
const realFolderPath = fs.realpathSync(folderPath);
const relativeFolderPath = path.relative(root, realFolderPath);
- const distroPackageJsonPath = `${root}/.build/distro/npm/${relativeFolderPath}/package.json`;
+ const distroFolderPath = `${root}/.build/distro/npm/${relativeFolderPath}`;
- if (fs.existsSync(distroPackageJsonPath)) {
- const distroPackageJson = JSON.parse(fs.readFileSync(distroPackageJsonPath, 'utf8'));
- const distroDependencyNames = Object.keys(distroPackageJson.dependencies ?? {});
-
- for (const name of distroDependencyNames) {
- result.push({
- name,
- version: distroPackageJson.dependencies[name],
- path: path.join(realFolderPath, 'node_modules', name)
- });
- }
+ if (fs.existsSync(distroFolderPath)) {
+ result.push(...getNpmProductionDependencies(distroFolderPath));
}
return [...new Set(result)];
diff --git a/build/lib/extensions.js b/build/lib/extensions.js
index 58d4d3e9a7f..fbf11ee1ee4 100644
--- a/build/lib/extensions.js
+++ b/build/lib/extensions.js
@@ -97,7 +97,12 @@ function fromLocalWebpack(extensionPath, webpackConfigFileName, disableMangle) {
}
}
}
- vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
+ // TODO: add prune support based on packagedDependencies to vsce.PackageManager.Npm similar
+ // to vsce.PackageManager.Yarn.
+ // A static analysis showed there are no webpack externals that are dependencies of the current
+ // local extensions so we can use the vsce.PackageManager.None config to ignore dependencies list
+ // as a temporary workaround.
+ vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.None, packagedDependencies }).then(fileNames => {
const files = fileNames
.map(fileName => path.join(extensionPath, fileName))
.map(filePath => new File({
@@ -178,7 +183,7 @@ function fromLocalWebpack(extensionPath, webpackConfigFileName, disableMangle) {
function fromLocalNormal(extensionPath) {
const vsce = require('@vscode/vsce');
const result = es.through();
- vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
+ vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Npm })
.then(fileNames => {
const files = fileNames
.map(fileName => path.join(extensionPath, fileName))
@@ -303,7 +308,7 @@ function packageLocalExtensionsStream(forWeb, disableMangle) {
else {
// also include shared production node modules
const productionDependencies = (0, dependencies_1.getProductionDependencies)('extensions/');
- const dependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
+ const dependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
result = es.merge(localExtensionsStream, gulp.src(dependenciesSrc, { base: '.' })
.pipe(util2.cleanNodeModules(path.join(root, 'build', '.moduleignore')))
.pipe(util2.cleanNodeModules(path.join(root, 'build', `.moduleignore.${process.platform}`))));
@@ -482,9 +487,6 @@ async function esbuildExtensions(taskName, isWatch, scripts) {
return reject(error);
}
reporter(stderr, script);
- if (stderr) {
- return reject();
- }
return resolve();
});
proc.stdout.on('data', (data) => {
diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts
index 0582e0cb11e..628cf90c4c9 100644
--- a/build/lib/extensions.ts
+++ b/build/lib/extensions.ts
@@ -101,7 +101,12 @@ function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string,
}
}
- vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
+ // TODO: add prune support based on packagedDependencies to vsce.PackageManager.Npm similar
+ // to vsce.PackageManager.Yarn.
+ // A static analysis showed there are no webpack externals that are dependencies of the current
+ // local extensions so we can use the vsce.PackageManager.None config to ignore dependencies list
+ // as a temporary workaround.
+ vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.None, packagedDependencies }).then(fileNames => {
const files = fileNames
.map(fileName => path.join(extensionPath, fileName))
.map(filePath => new File({
@@ -196,7 +201,7 @@ function fromLocalNormal(extensionPath: string): Stream {
const vsce = require('@vscode/vsce') as typeof import('@vscode/vsce');
const result = es.through();
- vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
+ vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Npm })
.then(fileNames => {
const files = fileNames
.map(fileName => path.join(extensionPath, fileName))
@@ -354,7 +359,7 @@ export function packageLocalExtensionsStream(forWeb: boolean, disableMangle: boo
} else {
// also include shared production node modules
const productionDependencies = getProductionDependencies('extensions/');
- const dependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
+ const dependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat();
result = es.merge(
localExtensionsStream,
@@ -563,9 +568,6 @@ async function esbuildExtensions(taskName: string, isWatch: boolean, scripts: {
return reject(error);
}
reporter(stderr, script);
- if (stderr) {
- return reject();
- }
return resolve();
});
diff --git a/build/lib/fetch.js b/build/lib/fetch.js
index 2fed63bca0e..b7da65f4af2 100644
--- a/build/lib/fetch.js
+++ b/build/lib/fetch.js
@@ -33,7 +33,7 @@ function fetchUrls(urls, options) {
}));
}
async function fetchUrl(url, options, retries = 10, retryDelay = 1000) {
- const verbose = !!options.verbose ?? (!!process.env['CI'] || !!process.env['BUILD_ARTIFACTSTAGINGDIRECTORY']);
+ const verbose = !!options.verbose || !!process.env['CI'] || !!process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'];
try {
let startTime = 0;
if (verbose) {
diff --git a/build/lib/fetch.ts b/build/lib/fetch.ts
index dc1de777e04..0c44b8e567f 100644
--- a/build/lib/fetch.ts
+++ b/build/lib/fetch.ts
@@ -42,7 +42,7 @@ export function fetchUrls(urls: string[] | string, options: IFetchOptions): es.T
}
export async function fetchUrl(url: string, options: IFetchOptions, retries = 10, retryDelay = 1000): Promise {
- const verbose = !!options.verbose ?? (!!process.env['CI'] || !!process.env['BUILD_ARTIFACTSTAGINGDIRECTORY']);
+ const verbose = !!options.verbose || !!process.env['CI'] || !!process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'];
try {
let startTime = 0;
if (verbose) {
diff --git a/build/lib/i18n.js b/build/lib/i18n.js
index c33994987f0..6964616291b 100644
--- a/build/lib/i18n.js
+++ b/build/lib/i18n.js
@@ -23,6 +23,7 @@ const fancyLog = require("fancy-log");
const ansiColors = require("ansi-colors");
const iconv = require("@vscode/iconv-lite-umd");
const l10n_dev_1 = require("@vscode/l10n-dev");
+const REPO_ROOT_PATH = path.join(__dirname, '../..');
function log(message, ...rest) {
fancyLog(ansiColors.green('[i18n]'), message, ...rest);
}
@@ -63,6 +64,17 @@ var BundledFormat;
}
BundledFormat.is = is;
})(BundledFormat || (BundledFormat = {}));
+var NLSKeysFormat;
+(function (NLSKeysFormat) {
+ function is(value) {
+ if (value === undefined) {
+ return false;
+ }
+ const candidate = value;
+ return Array.isArray(candidate) && Array.isArray(candidate[1]);
+ }
+ NLSKeysFormat.is = is;
+})(NLSKeysFormat || (NLSKeysFormat = {}));
class Line {
buffer = [];
constructor(indent = 0) {
@@ -265,67 +277,8 @@ function stripComments(content) {
});
return result;
}
-function escapeCharacters(value) {
- const result = [];
- for (let i = 0; i < value.length; i++) {
- const ch = value.charAt(i);
- switch (ch) {
- case '\'':
- result.push('\\\'');
- break;
- case '"':
- result.push('\\"');
- break;
- case '\\':
- result.push('\\\\');
- break;
- case '\n':
- result.push('\\n');
- break;
- case '\r':
- result.push('\\r');
- break;
- case '\t':
- result.push('\\t');
- break;
- case '\b':
- result.push('\\b');
- break;
- case '\f':
- result.push('\\f');
- break;
- default:
- result.push(ch);
- }
- }
- return result.join('');
-}
-function processCoreBundleFormat(fileHeader, languages, json, emitter) {
- const keysSection = json.keys;
- const messageSection = json.messages;
- const bundleSection = json.bundles;
- const statistics = Object.create(null);
- const defaultMessages = Object.create(null);
- const modules = Object.keys(keysSection);
- modules.forEach((module) => {
- const keys = keysSection[module];
- const messages = messageSection[module];
- if (!messages || keys.length !== messages.length) {
- emitter.emit('error', `Message for module ${module} corrupted. Mismatch in number of keys and messages.`);
- return;
- }
- const messageMap = Object.create(null);
- defaultMessages[module] = messageMap;
- keys.map((key, i) => {
- if (typeof key === 'string') {
- messageMap[key] = messages[i];
- }
- else {
- messageMap[key.key] = messages[i];
- }
- });
- });
- const languageDirectory = path.join(__dirname, '..', '..', '..', 'vscode-loc', 'i18n');
+function processCoreBundleFormat(base, fileHeader, languages, json, emitter) {
+ const languageDirectory = path.join(REPO_ROOT_PATH, '..', 'vscode-loc', 'i18n');
if (!fs.existsSync(languageDirectory)) {
log(`No VS Code localization repository found. Looking at ${languageDirectory}`);
log(`To bundle translations please check out the vscode-loc repository as a sibling of the vscode repository.`);
@@ -335,8 +288,6 @@ function processCoreBundleFormat(fileHeader, languages, json, emitter) {
if (process.env['VSCODE_BUILD_VERBOSE']) {
log(`Generating nls bundles for: ${language.id}`);
}
- statistics[language.id] = 0;
- const localizedModules = Object.create(null);
const languageFolderName = language.translationId || language.id;
const i18nFile = path.join(languageDirectory, `vscode-language-pack-${languageFolderName}`, 'translations', 'main.i18n.json');
let allMessages;
@@ -344,87 +295,36 @@ function processCoreBundleFormat(fileHeader, languages, json, emitter) {
const content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
allMessages = JSON.parse(content);
}
- modules.forEach((module) => {
- const order = keysSection[module];
- let moduleMessage;
- if (allMessages) {
- moduleMessage = allMessages.contents[module];
+ let nlsIndex = 0;
+ const nlsResult = [];
+ for (const [moduleId, nlsKeys] of json) {
+ const moduleTranslations = allMessages?.contents[moduleId];
+ for (const nlsKey of nlsKeys) {
+ nlsResult.push(moduleTranslations?.[nlsKey]); // pushing `undefined` is fine, as we keep english strings as fallback for monaco editor in the build
+ nlsIndex++;
}
- if (!moduleMessage) {
- if (process.env['VSCODE_BUILD_VERBOSE']) {
- log(`No localized messages found for module ${module}. Using default messages.`);
- }
- moduleMessage = defaultMessages[module];
- statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
- }
- const localizedMessages = [];
- order.forEach((keyInfo) => {
- let key = null;
- if (typeof keyInfo === 'string') {
- key = keyInfo;
- }
- else {
- key = keyInfo.key;
- }
- let message = moduleMessage[key];
- if (!message) {
- if (process.env['VSCODE_BUILD_VERBOSE']) {
- log(`No localized message found for key ${key} in module ${module}. Using default message.`);
- }
- message = defaultMessages[module][key];
- statistics[language.id] = statistics[language.id] + 1;
- }
- localizedMessages.push(message);
- });
- localizedModules[module] = localizedMessages;
- });
- Object.keys(bundleSection).forEach((bundle) => {
- const modules = bundleSection[bundle];
- const contents = [
- fileHeader,
- `define("${bundle}.nls.${language.id}", {`
- ];
- modules.forEach((module, index) => {
- contents.push(`\t"${module}": [`);
- const messages = localizedModules[module];
- if (!messages) {
- emitter.emit('error', `Didn't find messages for module ${module}.`);
- return;
- }
- messages.forEach((message, index) => {
- contents.push(`\t\t"${escapeCharacters(message)}${index < messages.length ? '",' : '"'}`);
- });
- contents.push(index < modules.length - 1 ? '\t],' : '\t]');
- });
- contents.push('});');
- emitter.queue(new File({ path: bundle + '.nls.' + language.id + '.js', contents: Buffer.from(contents.join('\n'), 'utf-8') }));
- });
- });
- Object.keys(statistics).forEach(key => {
- const value = statistics[key];
- log(`${key} has ${value} untranslated strings.`);
- });
- sortedLanguages.forEach(language => {
- const stats = statistics[language.id];
- if (!stats) {
- log(`\tNo translations found for language ${language.id}. Using default language instead.`);
}
+ emitter.queue(new File({
+ contents: Buffer.from(`${fileHeader}
+globalThis._VSCODE_NLS_MESSAGES=${JSON.stringify(nlsResult)};
+globalThis._VSCODE_NLS_LANGUAGE=${JSON.stringify(language.id)};`),
+ base,
+ path: `${base}/nls.messages.${language.id}.js`
+ }));
});
}
function processNlsFiles(opts) {
return (0, event_stream_1.through)(function (file) {
const fileName = path.basename(file.path);
- if (fileName === 'nls.metadata.json') {
- let json = null;
- if (file.isBuffer()) {
- json = JSON.parse(file.contents.toString('utf8'));
- }
- else {
- this.emit('error', `Failed to read component file: ${file.relative}`);
- return;
+ if (fileName === 'bundleInfo.json') { // pick a root level file to put the core bundles (TODO@esm this file is not created anymore, pick another)
+ try {
+ const json = JSON.parse(fs.readFileSync(path.join(REPO_ROOT_PATH, opts.out, 'nls.keys.json')).toString());
+ if (NLSKeysFormat.is(json)) {
+ processCoreBundleFormat(file.base, opts.fileHeader, opts.languages, json, this);
+ }
}
- if (BundledFormat.is(json)) {
- processCoreBundleFormat(opts.fileHeader, opts.languages, json, this);
+ catch (error) {
+ this.emit('error', `Failed to read component file: ${error}`);
}
}
this.queue(file);
diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json
index 219436efb3d..ad6a53b745e 100644
--- a/build/lib/i18n.resources.json
+++ b/build/lib/i18n.resources.json
@@ -186,14 +186,6 @@
"name": "vs/workbench/contrib/astNavigation",
"project": "vscode-workbench"
},
- {
- "name": "vs/workbench/contrib/aideChat",
- "project": "vscode-workbench"
- },
- {
- "name": "vs/workbench/contrib/inlineAideChat",
- "project": "vscode-workbench"
- },
{
"name": "vs/workbench/contrib/aideProbe",
"project": "vscode-workbench"
@@ -589,6 +581,14 @@
{
"name": "vs/workbench/contrib/authentication",
"project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/replNotebook",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/list",
+ "project": "vscode-workbench"
}
]
}
diff --git a/build/lib/i18n.ts b/build/lib/i18n.ts
index 444e3abe59c..cd7e522ad36 100644
--- a/build/lib/i18n.ts
+++ b/build/lib/i18n.ts
@@ -16,6 +16,8 @@ import * as ansiColors from 'ansi-colors';
import * as iconv from '@vscode/iconv-lite-umd';
import { l10nJsonFormat, getL10nXlf, l10nJsonDetails, getL10nFilesFromXlf, getL10nJson } from '@vscode/l10n-dev';
+const REPO_ROOT_PATH = path.join(__dirname, '../..');
+
function log(message: any, ...rest: any[]): void {
fancyLog(ansiColors.green('[i18n]'), message, ...rest);
}
@@ -91,6 +93,19 @@ module BundledFormat {
}
}
+type NLSKeysFormat = [string /* module ID */, string[] /* keys */];
+
+module NLSKeysFormat {
+ export function is(value: any): value is NLSKeysFormat {
+ if (value === undefined) {
+ return false;
+ }
+
+ const candidate = value as NLSKeysFormat;
+ return Array.isArray(candidate) && Array.isArray(candidate[1]);
+ }
+}
+
interface BundledExtensionFormat {
[key: string]: {
messages: string[];
@@ -329,70 +344,8 @@ function stripComments(content: string): string {
return result;
}
-function escapeCharacters(value: string): string {
- const result: string[] = [];
- for (let i = 0; i < value.length; i++) {
- const ch = value.charAt(i);
- switch (ch) {
- case '\'':
- result.push('\\\'');
- break;
- case '"':
- result.push('\\"');
- break;
- case '\\':
- result.push('\\\\');
- break;
- case '\n':
- result.push('\\n');
- break;
- case '\r':
- result.push('\\r');
- break;
- case '\t':
- result.push('\\t');
- break;
- case '\b':
- result.push('\\b');
- break;
- case '\f':
- result.push('\\f');
- break;
- default:
- result.push(ch);
- }
- }
- return result.join('');
-}
-
-function processCoreBundleFormat(fileHeader: string, languages: Language[], json: BundledFormat, emitter: ThroughStream) {
- const keysSection = json.keys;
- const messageSection = json.messages;
- const bundleSection = json.bundles;
-
- const statistics: Record = Object.create(null);
-
- const defaultMessages: Record> = Object.create(null);
- const modules = Object.keys(keysSection);
- modules.forEach((module) => {
- const keys = keysSection[module];
- const messages = messageSection[module];
- if (!messages || keys.length !== messages.length) {
- emitter.emit('error', `Message for module ${module} corrupted. Mismatch in number of keys and messages.`);
- return;
- }
- const messageMap: Record = Object.create(null);
- defaultMessages[module] = messageMap;
- keys.map((key, i) => {
- if (typeof key === 'string') {
- messageMap[key] = messages[i];
- } else {
- messageMap[key.key] = messages[i];
- }
- });
- });
-
- const languageDirectory = path.join(__dirname, '..', '..', '..', 'vscode-loc', 'i18n');
+function processCoreBundleFormat(base: string, fileHeader: string, languages: Language[], json: NLSKeysFormat, emitter: ThroughStream) {
+ const languageDirectory = path.join(REPO_ROOT_PATH, '..', 'vscode-loc', 'i18n');
if (!fs.existsSync(languageDirectory)) {
log(`No VS Code localization repository found. Looking at ${languageDirectory}`);
log(`To bundle translations please check out the vscode-loc repository as a sibling of the vscode repository.`);
@@ -403,8 +356,6 @@ function processCoreBundleFormat(fileHeader: string, languages: Language[], json
log(`Generating nls bundles for: ${language.id}`);
}
- statistics[language.id] = 0;
- const localizedModules: Record = Object.create(null);
const languageFolderName = language.translationId || language.id;
const i18nFile = path.join(languageDirectory, `vscode-language-pack-${languageFolderName}`, 'translations', 'main.i18n.json');
let allMessages: I18nFormat | undefined;
@@ -412,86 +363,38 @@ function processCoreBundleFormat(fileHeader: string, languages: Language[], json
const content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
allMessages = JSON.parse(content);
}
- modules.forEach((module) => {
- const order = keysSection[module];
- let moduleMessage: { [messageKey: string]: string } | undefined;
- if (allMessages) {
- moduleMessage = allMessages.contents[module];
- }
- if (!moduleMessage) {
- if (process.env['VSCODE_BUILD_VERBOSE']) {
- log(`No localized messages found for module ${module}. Using default messages.`);
- }
- moduleMessage = defaultMessages[module];
- statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
+
+ let nlsIndex = 0;
+ const nlsResult: Array = [];
+ for (const [moduleId, nlsKeys] of json) {
+ const moduleTranslations = allMessages?.contents[moduleId];
+ for (const nlsKey of nlsKeys) {
+ nlsResult.push(moduleTranslations?.[nlsKey]); // pushing `undefined` is fine, as we keep english strings as fallback for monaco editor in the build
+ nlsIndex++;
}
- const localizedMessages: string[] = [];
- order.forEach((keyInfo) => {
- let key: string | null = null;
- if (typeof keyInfo === 'string') {
- key = keyInfo;
- } else {
- key = keyInfo.key;
- }
- let message: string = moduleMessage![key];
- if (!message) {
- if (process.env['VSCODE_BUILD_VERBOSE']) {
- log(`No localized message found for key ${key} in module ${module}. Using default message.`);
- }
- message = defaultMessages[module][key];
- statistics[language.id] = statistics[language.id] + 1;
- }
- localizedMessages.push(message);
- });
- localizedModules[module] = localizedMessages;
- });
- Object.keys(bundleSection).forEach((bundle) => {
- const modules = bundleSection[bundle];
- const contents: string[] = [
- fileHeader,
- `define("${bundle}.nls.${language.id}", {`
- ];
- modules.forEach((module, index) => {
- contents.push(`\t"${module}": [`);
- const messages = localizedModules[module];
- if (!messages) {
- emitter.emit('error', `Didn't find messages for module ${module}.`);
- return;
- }
- messages.forEach((message, index) => {
- contents.push(`\t\t"${escapeCharacters(message)}${index < messages.length ? '",' : '"'}`);
- });
- contents.push(index < modules.length - 1 ? '\t],' : '\t]');
- });
- contents.push('});');
- emitter.queue(new File({ path: bundle + '.nls.' + language.id + '.js', contents: Buffer.from(contents.join('\n'), 'utf-8') }));
- });
- });
- Object.keys(statistics).forEach(key => {
- const value = statistics[key];
- log(`${key} has ${value} untranslated strings.`);
- });
- sortedLanguages.forEach(language => {
- const stats = statistics[language.id];
- if (!stats) {
- log(`\tNo translations found for language ${language.id}. Using default language instead.`);
}
+
+ emitter.queue(new File({
+ contents: Buffer.from(`${fileHeader}
+globalThis._VSCODE_NLS_MESSAGES=${JSON.stringify(nlsResult)};
+globalThis._VSCODE_NLS_LANGUAGE=${JSON.stringify(language.id)};`),
+ base,
+ path: `${base}/nls.messages.${language.id}.js`
+ }));
});
}
-export function processNlsFiles(opts: { fileHeader: string; languages: Language[] }): ThroughStream {
+export function processNlsFiles(opts: { out: string; fileHeader: string; languages: Language[] }): ThroughStream {
return through(function (this: ThroughStream, file: File) {
const fileName = path.basename(file.path);
- if (fileName === 'nls.metadata.json') {
- let json = null;
- if (file.isBuffer()) {
- json = JSON.parse((file.contents).toString('utf8'));
- } else {
- this.emit('error', `Failed to read component file: ${file.relative}`);
- return;
- }
- if (BundledFormat.is(json)) {
- processCoreBundleFormat(opts.fileHeader, opts.languages, json, this);
+ if (fileName === 'bundleInfo.json') { // pick a root level file to put the core bundles (TODO@esm this file is not created anymore, pick another)
+ try {
+ const json = JSON.parse(fs.readFileSync(path.join(REPO_ROOT_PATH, opts.out, 'nls.keys.json')).toString());
+ if (NLSKeysFormat.is(json)) {
+ processCoreBundleFormat(file.base, opts.fileHeader, opts.languages, json, this);
+ }
+ } catch (error) {
+ this.emit('error', `Failed to read component file: ${error}`);
}
}
this.queue(file);
diff --git a/build/lib/inlineMeta.js b/build/lib/inlineMeta.js
new file mode 100644
index 00000000000..f1dbfa83a7e
--- /dev/null
+++ b/build/lib/inlineMeta.js
@@ -0,0 +1,48 @@
+"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.inlineMeta = inlineMeta;
+const es = require("event-stream");
+const path_1 = require("path");
+const packageJsonMarkerId = 'BUILD_INSERT_PACKAGE_CONFIGURATION';
+// TODO@bpasero in order to inline `product.json`, more work is
+// needed to ensure that we cover all cases where modifications
+// are done to the product configuration during build. There are
+// at least 2 more changes that kick in very late:
+// - a `darwinUniversalAssetId` is added in`create-universal-app.ts`
+// - a `target` is added in `gulpfile.vscode.win32.js`
+// const productJsonMarkerId = 'BUILD_INSERT_PRODUCT_CONFIGURATION';
+function inlineMeta(result, ctx) {
+ return result.pipe(es.through(function (file) {
+ if (matchesFile(file, ctx)) {
+ let content = file.contents.toString();
+ let markerFound = false;
+ const packageMarker = `${packageJsonMarkerId}:"${packageJsonMarkerId}"`; // this needs to be the format after esbuild has processed the file (e.g. double quotes)
+ if (content.includes(packageMarker)) {
+ content = content.replace(packageMarker, JSON.stringify(JSON.parse(ctx.packageJsonFn())).slice(1, -1) /* trim braces */);
+ markerFound = true;
+ }
+ // const productMarker = `${productJsonMarkerId}:"${productJsonMarkerId}"`; // this needs to be the format after esbuild has processed the file (e.g. double quotes)
+ // if (content.includes(productMarker)) {
+ // content = content.replace(productMarker, JSON.stringify(JSON.parse(ctx.productJsonFn())).slice(1, -1) /* trim braces */);
+ // markerFound = true;
+ // }
+ if (markerFound) {
+ file.contents = Buffer.from(content);
+ }
+ }
+ this.emit('data', file);
+ }));
+}
+function matchesFile(file, ctx) {
+ for (const targetPath of ctx.targetPaths) {
+ if (file.basename === (0, path_1.basename)(targetPath)) { // TODO would be nicer to figure out root relative path to not match on false positives
+ return true;
+ }
+ }
+ return false;
+}
+//# sourceMappingURL=inlineMeta.js.map
\ No newline at end of file
diff --git a/build/lib/inlineMeta.ts b/build/lib/inlineMeta.ts
new file mode 100644
index 00000000000..ef3987fc32e
--- /dev/null
+++ b/build/lib/inlineMeta.ts
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as es from 'event-stream';
+import { basename } from 'path';
+import * as File from 'vinyl';
+
+export interface IInlineMetaContext {
+ readonly targetPaths: string[];
+ readonly packageJsonFn: () => string;
+ readonly productJsonFn: () => string;
+}
+
+const packageJsonMarkerId = 'BUILD_INSERT_PACKAGE_CONFIGURATION';
+
+// TODO@bpasero in order to inline `product.json`, more work is
+// needed to ensure that we cover all cases where modifications
+// are done to the product configuration during build. There are
+// at least 2 more changes that kick in very late:
+// - a `darwinUniversalAssetId` is added in`create-universal-app.ts`
+// - a `target` is added in `gulpfile.vscode.win32.js`
+// const productJsonMarkerId = 'BUILD_INSERT_PRODUCT_CONFIGURATION';
+
+export function inlineMeta(result: NodeJS.ReadWriteStream, ctx: IInlineMetaContext): NodeJS.ReadWriteStream {
+ return result.pipe(es.through(function (file: File) {
+ if (matchesFile(file, ctx)) {
+ let content = file.contents.toString();
+ let markerFound = false;
+
+ const packageMarker = `${packageJsonMarkerId}:"${packageJsonMarkerId}"`; // this needs to be the format after esbuild has processed the file (e.g. double quotes)
+ if (content.includes(packageMarker)) {
+ content = content.replace(packageMarker, JSON.stringify(JSON.parse(ctx.packageJsonFn())).slice(1, -1) /* trim braces */);
+ markerFound = true;
+ }
+
+ // const productMarker = `${productJsonMarkerId}:"${productJsonMarkerId}"`; // this needs to be the format after esbuild has processed the file (e.g. double quotes)
+ // if (content.includes(productMarker)) {
+ // content = content.replace(productMarker, JSON.stringify(JSON.parse(ctx.productJsonFn())).slice(1, -1) /* trim braces */);
+ // markerFound = true;
+ // }
+
+ if (markerFound) {
+ file.contents = Buffer.from(content);
+ }
+ }
+
+ this.emit('data', file);
+ }));
+}
+
+function matchesFile(file: File, ctx: IInlineMetaContext): boolean {
+ for (const targetPath of ctx.targetPaths) {
+ if (file.basename === basename(targetPath)) { // TODO would be nicer to figure out root relative path to not match on false positives
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/build/lib/layersChecker.js b/build/lib/layersChecker.js
index 7494b71bb66..98241a368b5 100644
--- a/build/lib/layersChecker.js
+++ b/build/lib/layersChecker.js
@@ -69,7 +69,10 @@ const CORE_TYPES = [
'RequestInit',
'Headers',
'Response',
- '__global'
+ '__global',
+ 'PerformanceMark',
+ 'PerformanceObserver',
+ 'ImportMeta'
];
// Types that are defined in a common layer but are known to be only
// available in native environments should not be allowed in browser
@@ -232,6 +235,22 @@ const RULES = [
'@types/node' // no node.js
]
},
+ // Electron (utility)
+ {
+ target: '**/vs/**/electron-utility/**',
+ allowedTypes: [
+ ...CORE_TYPES,
+ // --> types from electron.d.ts that duplicate from lib.dom.d.ts
+ 'Event',
+ 'Request'
+ ],
+ disallowedTypes: [
+ 'ipcMain' // not allowed, use validatedIpcMain instead
+ ],
+ disallowedDefinitions: [
+ 'lib.dom.d.ts' // no DOM
+ ]
+ },
// Electron (main)
{
target: '**/vs/**/electron-main/**',
diff --git a/build/lib/layersChecker.ts b/build/lib/layersChecker.ts
index 4861fa6d86e..26a18a48da7 100644
--- a/build/lib/layersChecker.ts
+++ b/build/lib/layersChecker.ts
@@ -70,7 +70,10 @@ const CORE_TYPES = [
'RequestInit',
'Headers',
'Response',
- '__global'
+ '__global',
+ 'PerformanceMark',
+ 'PerformanceObserver',
+ 'ImportMeta'
];
// Types that are defined in a common layer but are known to be only
@@ -254,6 +257,24 @@ const RULES: IRule[] = [
]
},
+ // Electron (utility)
+ {
+ target: '**/vs/**/electron-utility/**',
+ allowedTypes: [
+ ...CORE_TYPES,
+
+ // --> types from electron.d.ts that duplicate from lib.dom.d.ts
+ 'Event',
+ 'Request'
+ ],
+ disallowedTypes: [
+ 'ipcMain' // not allowed, use validatedIpcMain instead
+ ],
+ disallowedDefinitions: [
+ 'lib.dom.d.ts' // no DOM
+ ]
+ },
+
// Electron (main)
{
target: '**/vs/**/electron-main/**',
diff --git a/build/lib/mangle/index.js b/build/lib/mangle/index.js
index bb6b414e845..f429712f100 100644
--- a/build/lib/mangle/index.js
+++ b/build/lib/mangle/index.js
@@ -14,7 +14,8 @@ const ts = require("typescript");
const url_1 = require("url");
const workerpool = require("workerpool");
const staticLanguageServiceHost_1 = require("./staticLanguageServiceHost");
-const buildfile = require('../../../src/buildfile');
+const amd_1 = require("../amd");
+const buildfile = require('../../buildfile');
class ShortIdent {
prefix;
static _keywords = new Set(['await', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger',
@@ -247,36 +248,51 @@ function isNameTakenInFile(node, name) {
}
return false;
}
-const skippedExportMangledFiles = [
- // Build
- 'css.build',
- 'nls.build',
- // Monaco
- 'editorCommon',
- 'editorOptions',
- 'editorZoom',
- 'standaloneEditor',
- 'standaloneEnums',
- 'standaloneLanguages',
- // Generated
- 'extensionsApiProposals',
- // Module passed around as type
- 'pfs',
- // entry points
- ...[
- buildfile.entrypoint('vs/server/node/server.main', []),
- buildfile.entrypoint('vs/workbench/workbench.desktop.main', []),
- buildfile.base,
- buildfile.workerExtensionHost,
- buildfile.workerNotebook,
- buildfile.workerLanguageDetection,
- buildfile.workerLocalFileSearch,
- buildfile.workerProfileAnalysis,
- buildfile.workbenchDesktop,
- buildfile.workbenchWeb,
- buildfile.code
- ].flat().map(x => x.name),
-];
+const skippedExportMangledFiles = function () {
+ return [
+ // Build
+ 'css.build',
+ // Monaco
+ 'editorCommon',
+ 'editorOptions',
+ 'editorZoom',
+ 'standaloneEditor',
+ 'standaloneEnums',
+ 'standaloneLanguages',
+ // Generated
+ 'extensionsApiProposals',
+ // Module passed around as type
+ 'pfs',
+ // entry points
+ ...!(0, amd_1.isAMD)() ? [
+ buildfile.entrypoint('vs/server/node/server.main'),
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.workerProfileAnalysis,
+ buildfile.workerOutputLinks,
+ buildfile.workerBackgroundTokenization,
+ buildfile.workbenchDesktop(),
+ buildfile.workbenchWeb(),
+ buildfile.code,
+ buildfile.codeWeb
+ ].flat().map(x => x.name) : [
+ buildfile.entrypoint('vs/server/node/server.main'),
+ buildfile.entrypoint('vs/workbench/workbench.desktop.main'),
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.workerProfileAnalysis,
+ buildfile.workbenchDesktop(),
+ buildfile.workbenchWeb(),
+ buildfile.code
+ ].flat().map(x => x.name),
+ ];
+};
const skippedExportMangledProjects = [
// Test projects
'vscode-api-tests',
@@ -520,7 +536,7 @@ class Mangler {
for (const data of this.allExportedSymbols.values()) {
if (data.fileName.endsWith('.d.ts')
|| skippedExportMangledProjects.some(proj => data.fileName.includes(proj))
- || skippedExportMangledFiles.some(file => data.fileName.endsWith(file + '.ts'))) {
+ || skippedExportMangledFiles().some(file => data.fileName.endsWith(file + '.ts'))) {
continue;
}
if (!data.shouldMangle(data.replacementName)) {
diff --git a/build/lib/mangle/index.ts b/build/lib/mangle/index.ts
index 4a7544f162b..ecede4cc108 100644
--- a/build/lib/mangle/index.ts
+++ b/build/lib/mangle/index.ts
@@ -12,7 +12,8 @@ import * as ts from 'typescript';
import { pathToFileURL } from 'url';
import * as workerpool from 'workerpool';
import { StaticLanguageServiceHost } from './staticLanguageServiceHost';
-const buildfile = require('../../../src/buildfile');
+import { isAMD } from '../amd';
+const buildfile = require('../../buildfile');
class ShortIdent {
@@ -279,41 +280,55 @@ function isNameTakenInFile(node: ts.Node, name: string): boolean {
return false;
}
-
-const skippedExportMangledFiles = [
- // Build
- 'css.build',
- 'nls.build',
-
- // Monaco
- 'editorCommon',
- 'editorOptions',
- 'editorZoom',
- 'standaloneEditor',
- 'standaloneEnums',
- 'standaloneLanguages',
-
- // Generated
- 'extensionsApiProposals',
-
- // Module passed around as type
- 'pfs',
-
- // entry points
- ...[
- buildfile.entrypoint('vs/server/node/server.main', []),
- buildfile.entrypoint('vs/workbench/workbench.desktop.main', []),
- buildfile.base,
- buildfile.workerExtensionHost,
- buildfile.workerNotebook,
- buildfile.workerLanguageDetection,
- buildfile.workerLocalFileSearch,
- buildfile.workerProfileAnalysis,
- buildfile.workbenchDesktop,
- buildfile.workbenchWeb,
- buildfile.code
- ].flat().map(x => x.name),
-];
+const skippedExportMangledFiles = function () { // using a function() to ensure late isAMD() check
+ return [
+ // Build
+ 'css.build',
+
+ // Monaco
+ 'editorCommon',
+ 'editorOptions',
+ 'editorZoom',
+ 'standaloneEditor',
+ 'standaloneEnums',
+ 'standaloneLanguages',
+
+ // Generated
+ 'extensionsApiProposals',
+
+ // Module passed around as type
+ 'pfs',
+
+ // entry points
+ ...!isAMD() ? [
+ buildfile.entrypoint('vs/server/node/server.main'),
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.workerProfileAnalysis,
+ buildfile.workerOutputLinks,
+ buildfile.workerBackgroundTokenization,
+ buildfile.workbenchDesktop(),
+ buildfile.workbenchWeb(),
+ buildfile.code,
+ buildfile.codeWeb
+ ].flat().map(x => x.name) : [
+ buildfile.entrypoint('vs/server/node/server.main'),
+ buildfile.entrypoint('vs/workbench/workbench.desktop.main'),
+ buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
+ buildfile.workerLanguageDetection,
+ buildfile.workerLocalFileSearch,
+ buildfile.workerProfileAnalysis,
+ buildfile.workbenchDesktop(),
+ buildfile.workbenchWeb(),
+ buildfile.code
+ ].flat().map(x => x.name),
+ ];
+};
const skippedExportMangledProjects = [
// Test projects
@@ -610,7 +625,7 @@ export class Mangler {
for (const data of this.allExportedSymbols.values()) {
if (data.fileName.endsWith('.d.ts')
|| skippedExportMangledProjects.some(proj => data.fileName.includes(proj))
- || skippedExportMangledFiles.some(file => data.fileName.endsWith(file + '.ts'))
+ || skippedExportMangledFiles().some(file => data.fileName.endsWith(file + '.ts'))
) {
continue;
}
diff --git a/build/lib/nls.js b/build/lib/nls.js
index 48ca84f2433..00b9c9262fa 100644
--- a/build/lib/nls.js
+++ b/build/lib/nls.js
@@ -10,6 +10,8 @@ const event_stream_1 = require("event-stream");
const File = require("vinyl");
const sm = require("source-map");
const path = require("path");
+const sort = require("gulp-sort");
+const amd_1 = require("./amd");
var CollectStepResult;
(function (CollectStepResult) {
CollectStepResult[CollectStepResult["Yes"] = 0] = "Yes";
@@ -38,23 +40,15 @@ function clone(object) {
}
return result;
}
-function template(lines) {
- let indent = '', wrap = '';
- if (lines.length > 1) {
- indent = '\t';
- wrap = '\n';
- }
- return `/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-define([], [${wrap + lines.map(l => indent + l).join(',\n') + wrap}]);`;
-}
/**
* Returns a stream containing the patched JavaScript and source maps.
*/
-function nls() {
+function nls(options) {
+ let base;
const input = (0, event_stream_1.through)();
- const output = input.pipe((0, event_stream_1.through)(function (f) {
+ const output = input
+ .pipe(sort()) // IMPORTANT: to ensure stable NLS metadata generation, we must sort the files because NLS messages are globally extracted and indexed across all files
+ .pipe((0, event_stream_1.through)(function (f) {
if (!f.sourceMap) {
return this.emit('error', new Error(`File ${f.relative} does not have sourcemaps.`));
}
@@ -70,7 +64,40 @@ function nls() {
if (!typescript) {
return this.emit('error', new Error(`File ${f.relative} does not have the original content in the source map.`));
}
- _nls.patchFiles(f, typescript).forEach(f => this.emit('data', f));
+ base = f.base;
+ this.emit('data', _nls.patchFile(f, typescript, options));
+ }, function () {
+ for (const file of [
+ new File({
+ contents: Buffer.from(JSON.stringify({
+ keys: _nls.moduleToNLSKeys,
+ messages: _nls.moduleToNLSMessages,
+ }, null, '\t')),
+ base,
+ path: `${base}/nls.metadata.json`
+ }),
+ new File({
+ contents: Buffer.from(JSON.stringify(_nls.allNLSMessages)),
+ base,
+ path: `${base}/nls.messages.json`
+ }),
+ new File({
+ contents: Buffer.from(JSON.stringify(_nls.allNLSModulesAndKeys)),
+ base,
+ path: `${base}/nls.keys.json`
+ }),
+ new File({
+ contents: Buffer.from(`/*---------------------------------------------------------
+ * Copyright (C) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------*/
+globalThis._VSCODE_NLS_MESSAGES=${JSON.stringify(_nls.allNLSMessages)};`),
+ base,
+ path: `${base}/nls.messages.js`
+ })
+ ]) {
+ this.emit('data', file);
+ }
+ this.emit('end');
}));
return (0, event_stream_1.duplex)(input, output);
}
@@ -79,6 +106,11 @@ function isImportNode(ts, node) {
}
var _nls;
(function (_nls) {
+ _nls.moduleToNLSKeys = {};
+ _nls.moduleToNLSMessages = {};
+ _nls.allNLSMessages = [];
+ _nls.allNLSModulesAndKeys = [];
+ let allNLSMessagesIndex = 0;
function fileFrom(file, contents, path = file.path) {
return new File({
contents: Buffer.from(contents),
@@ -138,21 +170,24 @@ var _nls;
.filter(n => n.kind === ts.SyntaxKind.ImportEqualsDeclaration)
.map(n => n)
.filter(d => d.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference)
- .filter(d => d.moduleReference.expression.getText() === '\'vs/nls\'');
+ .filter(d => {
+ if (!(0, amd_1.isAMD)()) {
+ return d.moduleReference.expression.getText().endsWith(`/nls.js'`);
+ }
+ return d.moduleReference.expression.getText().endsWith(`/nls'`);
+ });
// import ... from 'vs/nls';
const importDeclarations = imports
.filter(n => n.kind === ts.SyntaxKind.ImportDeclaration)
.map(n => n)
.filter(d => d.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral)
- .filter(d => d.moduleSpecifier.getText() === '\'vs/nls\'')
+ .filter(d => {
+ if (!(0, amd_1.isAMD)()) {
+ return d.moduleSpecifier.getText().endsWith(`/nls.js'`);
+ }
+ return d.moduleSpecifier.getText().endsWith(`/nls'`);
+ })
.filter(d => !!d.importClause && !!d.importClause.namedBindings);
- const nlsExpressions = importEqualsDeclarations
- .map(d => d.moduleReference.expression)
- .concat(importDeclarations.map(d => d.moduleSpecifier))
- .map(d => ({
- start: ts.getLineAndCharacterOfPosition(sourceFile, d.getStart()),
- end: ts.getLineAndCharacterOfPosition(sourceFile, d.getEnd())
- }));
// `nls.localize(...)` calls
const nlsLocalizeCallExpressions = importDeclarations
.filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport))
@@ -206,8 +241,7 @@ var _nls;
value: a[1].getText()
}));
return {
- localizeCalls: localizeCalls.toArray(),
- nlsExpressions: nlsExpressions.toArray()
+ localizeCalls: localizeCalls.toArray()
};
}
class TextModel {
@@ -262,14 +296,10 @@ var _nls;
.flatten().toArray().join('');
}
}
- function patchJavascript(patches, contents, moduleId) {
+ function patchJavascript(patches, contents) {
const model = new TextModel(contents);
// patch the localize calls
lazy(patches).reverse().each(p => model.apply(p));
- // patch the 'vs/nls' imports
- const firstLine = model.get(0);
- const patchedFirstLine = firstLine.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
- model.set(0, patchedFirstLine);
return model.toString();
}
function patchSourcemap(patches, rsm, smc) {
@@ -307,14 +337,21 @@ var _nls;
}
return JSON.parse(smg.toString());
}
- function patch(ts, moduleId, typescript, javascript, sourcemap) {
- const { localizeCalls, nlsExpressions } = analyze(ts, typescript, 'localize');
- const { localizeCalls: localize2Calls, nlsExpressions: nls2Expressions } = analyze(ts, typescript, 'localize2');
+ function parseLocalizeKeyOrValue(sourceExpression) {
+ // sourceValue can be "foo", 'foo', `foo` or { .... }
+ // in its evalulated form
+ // we want to return either the string or the object
+ // eslint-disable-next-line no-eval
+ return eval(`(${sourceExpression})`);
+ }
+ function patch(ts, typescript, javascript, sourcemap, options) {
+ const { localizeCalls } = analyze(ts, typescript, 'localize');
+ const { localizeCalls: localize2Calls } = analyze(ts, typescript, 'localize2');
if (localizeCalls.length === 0 && localize2Calls.length === 0) {
return { javascript, sourcemap };
}
- const nlsKeys = template(localizeCalls.map(lc => lc.key).concat(localize2Calls.map(lc => lc.key)));
- const nls = template(localizeCalls.map(lc => lc.value).concat(localize2Calls.map(lc => lc.value)));
+ const nlsKeys = localizeCalls.map(lc => parseLocalizeKeyOrValue(lc.key)).concat(localize2Calls.map(lc => parseLocalizeKeyOrValue(lc.key)));
+ const nlsMessages = localizeCalls.map(lc => parseLocalizeKeyOrValue(lc.value)).concat(localize2Calls.map(lc => parseLocalizeKeyOrValue(lc.value)));
const smc = new sm.SourceMapConsumer(sourcemap);
const positionFrom = mappedPositionFrom.bind(null, sourcemap.sources[0]);
// build patches
@@ -323,16 +360,18 @@ var _nls;
const end = lcFrom(smc.generatedPositionFor(positionFrom(c.range.end)));
return { span: { start, end }, content: c.content };
};
- let i = 0;
const localizePatches = lazy(localizeCalls)
- .map(lc => ([
- { range: lc.keySpan, content: '' + (i++) },
+ .map(lc => (options.preserveEnglish ? [
+ { range: lc.keySpan, content: `${allNLSMessagesIndex++}` } // localize('key', "message") => localize(, "message")
+ ] : [
+ { range: lc.keySpan, content: `${allNLSMessagesIndex++}` }, // localize('key', "message") => localize(, null)
{ range: lc.valueSpan, content: 'null' }
]))
.flatten()
.map(toPatch);
const localize2Patches = lazy(localize2Calls)
- .map(lc => ({ range: lc.keySpan, content: '' + (i++) }))
+ .map(lc => ({ range: lc.keySpan, content: `${allNLSMessagesIndex++}` } // localize2('key', "message") => localize(, "message")
+ ))
.map(toPatch);
// Sort patches by their start position
const patches = localizePatches.concat(localize2Patches).toArray().sort((a, b) => {
@@ -352,34 +391,29 @@ var _nls;
return 0;
}
});
- javascript = patchJavascript(patches, javascript, moduleId);
- // since imports are not within the sourcemap information,
- // we must do this MacGyver style
- if (nlsExpressions.length || nls2Expressions.length) {
- javascript = javascript.replace(/^define\(.*$/m, line => {
- return line.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
- });
- }
+ javascript = patchJavascript(patches, javascript);
sourcemap = patchSourcemap(patches, sourcemap, smc);
- return { javascript, sourcemap, nlsKeys, nls };
+ return { javascript, sourcemap, nlsKeys, nlsMessages };
}
- function patchFiles(javascriptFile, typescript) {
+ function patchFile(javascriptFile, typescript, options) {
const ts = require('typescript');
// hack?
const moduleId = javascriptFile.relative
.replace(/\.js$/, '')
.replace(/\\/g, '/');
- const { javascript, sourcemap, nlsKeys, nls } = patch(ts, moduleId, typescript, javascriptFile.contents.toString(), javascriptFile.sourceMap);
- const result = [fileFrom(javascriptFile, javascript)];
- result[0].sourceMap = sourcemap;
+ const { javascript, sourcemap, nlsKeys, nlsMessages } = patch(ts, typescript, javascriptFile.contents.toString(), javascriptFile.sourceMap, options);
+ const result = fileFrom(javascriptFile, javascript);
+ result.sourceMap = sourcemap;
if (nlsKeys) {
- result.push(fileFrom(javascriptFile, nlsKeys, javascriptFile.path.replace(/\.js$/, '.nls.keys.js')));
+ _nls.moduleToNLSKeys[moduleId] = nlsKeys;
+ _nls.allNLSModulesAndKeys.push([moduleId, nlsKeys.map(nlsKey => typeof nlsKey === 'string' ? nlsKey : nlsKey.key)]);
}
- if (nls) {
- result.push(fileFrom(javascriptFile, nls, javascriptFile.path.replace(/\.js$/, '.nls.js')));
+ if (nlsMessages) {
+ _nls.moduleToNLSMessages[moduleId] = nlsMessages;
+ _nls.allNLSMessages.push(...nlsMessages);
}
return result;
}
- _nls.patchFiles = patchFiles;
+ _nls.patchFile = patchFile;
})(_nls || (_nls = {}));
//# sourceMappingURL=nls.js.map
\ No newline at end of file
diff --git a/build/lib/nls.ts b/build/lib/nls.ts
index c4ee031b2eb..a861122b1bb 100644
--- a/build/lib/nls.ts
+++ b/build/lib/nls.ts
@@ -8,7 +8,9 @@ import * as lazy from 'lazy.js';
import { duplex, through } from 'event-stream';
import * as File from 'vinyl';
import * as sm from 'source-map';
-import * as path from 'path';
+import * as path from 'path';
+import * as sort from 'gulp-sort';
+import { isAMD } from './amd';
declare class FileSourceMap extends File {
public sourceMap: sm.RawSourceMap;
@@ -48,47 +50,70 @@ function clone(object: T): T {
return result;
}
-function template(lines: string[]): string {
- let indent = '', wrap = '';
-
- if (lines.length > 1) {
- indent = '\t';
- wrap = '\n';
- }
-
- return `/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-define([], [${wrap + lines.map(l => indent + l).join(',\n') + wrap}]);`;
-}
-
/**
* Returns a stream containing the patched JavaScript and source maps.
*/
-export function nls(): NodeJS.ReadWriteStream {
+export function nls(options: { preserveEnglish: boolean }): NodeJS.ReadWriteStream {
+ let base: string;
const input = through();
- const output = input.pipe(through(function (f: FileSourceMap) {
- if (!f.sourceMap) {
- return this.emit('error', new Error(`File ${f.relative} does not have sourcemaps.`));
- }
+ const output = input
+ .pipe(sort()) // IMPORTANT: to ensure stable NLS metadata generation, we must sort the files because NLS messages are globally extracted and indexed across all files
+ .pipe(through(function (f: FileSourceMap) {
+ if (!f.sourceMap) {
+ return this.emit('error', new Error(`File ${f.relative} does not have sourcemaps.`));
+ }
- let source = f.sourceMap.sources[0];
- if (!source) {
- return this.emit('error', new Error(`File ${f.relative} does not have a source in the source map.`));
- }
+ let source = f.sourceMap.sources[0];
+ if (!source) {
+ return this.emit('error', new Error(`File ${f.relative} does not have a source in the source map.`));
+ }
- const root = f.sourceMap.sourceRoot;
- if (root) {
- source = path.join(root, source);
- }
+ const root = f.sourceMap.sourceRoot;
+ if (root) {
+ source = path.join(root, source);
+ }
- const typescript = f.sourceMap.sourcesContent![0];
- if (!typescript) {
- return this.emit('error', new Error(`File ${f.relative} does not have the original content in the source map.`));
- }
+ const typescript = f.sourceMap.sourcesContent![0];
+ if (!typescript) {
+ return this.emit('error', new Error(`File ${f.relative} does not have the original content in the source map.`));
+ }
- _nls.patchFiles(f, typescript).forEach(f => this.emit('data', f));
- }));
+ base = f.base;
+ this.emit('data', _nls.patchFile(f, typescript, options));
+ }, function () {
+ for (const file of [
+ new File({
+ contents: Buffer.from(JSON.stringify({
+ keys: _nls.moduleToNLSKeys,
+ messages: _nls.moduleToNLSMessages,
+ }, null, '\t')),
+ base,
+ path: `${base}/nls.metadata.json`
+ }),
+ new File({
+ contents: Buffer.from(JSON.stringify(_nls.allNLSMessages)),
+ base,
+ path: `${base}/nls.messages.json`
+ }),
+ new File({
+ contents: Buffer.from(JSON.stringify(_nls.allNLSModulesAndKeys)),
+ base,
+ path: `${base}/nls.keys.json`
+ }),
+ new File({
+ contents: Buffer.from(`/*---------------------------------------------------------
+ * Copyright (C) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------*/
+globalThis._VSCODE_NLS_MESSAGES=${JSON.stringify(_nls.allNLSMessages)};`),
+ base,
+ path: `${base}/nls.messages.js`
+ })
+ ]) {
+ this.emit('data', file);
+ }
+
+ this.emit('end');
+ }));
return duplex(input, output);
}
@@ -99,11 +124,19 @@ function isImportNode(ts: typeof import('typescript'), node: ts.Node): boolean {
module _nls {
- interface INlsStringResult {
+ export const moduleToNLSKeys: { [name: string /* module ID */]: ILocalizeKey[] /* keys */ } = {};
+ export const moduleToNLSMessages: { [name: string /* module ID */]: string[] /* messages */ } = {};
+ export const allNLSMessages: string[] = [];
+ export const allNLSModulesAndKeys: Array<[string /* module ID */, string[] /* keys */]> = [];
+ let allNLSMessagesIndex = 0;
+
+ type ILocalizeKey = string | { key: string }; // key might contain metadata for translators and then is not just a string
+
+ interface INlsPatchResult {
javascript: string;
sourcemap: sm.RawSourceMap;
- nls?: string;
- nlsKeys?: string;
+ nlsMessages?: string[];
+ nlsKeys?: ILocalizeKey[];
}
interface ISpan {
@@ -120,7 +153,6 @@ module _nls {
interface ILocalizeAnalysisResult {
localizeCalls: ILocalizeCall[];
- nlsExpressions: ISpan[];
}
interface IPatch {
@@ -200,24 +232,26 @@ module _nls {
.filter(n => n.kind === ts.SyntaxKind.ImportEqualsDeclaration)
.map(n => n)
.filter(d => d.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference)
- .filter(d => (d.moduleReference).expression.getText() === '\'vs/nls\'');
+ .filter(d => {
+ if (!isAMD()) {
+ return (d.moduleReference).expression.getText().endsWith(`/nls.js'`);
+ }
+ return (d.moduleReference).expression.getText().endsWith(`/nls'`);
+ });
// import ... from 'vs/nls';
const importDeclarations = imports
.filter(n => n.kind === ts.SyntaxKind.ImportDeclaration)
.map(n => n)
.filter(d => d.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral)
- .filter(d => d.moduleSpecifier.getText() === '\'vs/nls\'')
+ .filter(d => {
+ if (!isAMD()) {
+ return d.moduleSpecifier.getText().endsWith(`/nls.js'`);
+ }
+ return d.moduleSpecifier.getText().endsWith(`/nls'`);
+ })
.filter(d => !!d.importClause && !!d.importClause.namedBindings);
- const nlsExpressions = importEqualsDeclarations
- .map(d => (d.moduleReference).expression)
- .concat(importDeclarations.map(d => d.moduleSpecifier))
- .map(d => ({
- start: ts.getLineAndCharacterOfPosition(sourceFile, d.getStart()),
- end: ts.getLineAndCharacterOfPosition(sourceFile, d.getEnd())
- }));
-
// `nls.localize(...)` calls
const nlsLocalizeCallExpressions = importDeclarations
.filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport))
@@ -280,8 +314,7 @@ module _nls {
}));
return {
- localizeCalls: localizeCalls.toArray(),
- nlsExpressions: nlsExpressions.toArray()
+ localizeCalls: localizeCalls.toArray()
};
}
@@ -351,17 +384,12 @@ module _nls {
}
}
- function patchJavascript(patches: IPatch[], contents: string, moduleId: string): string {
+ function patchJavascript(patches: IPatch[], contents: string): string {
const model = new TextModel(contents);
// patch the localize calls
lazy(patches).reverse().each(p => model.apply(p));
- // patch the 'vs/nls' imports
- const firstLine = model.get(0);
- const patchedFirstLine = firstLine.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
- model.set(0, patchedFirstLine);
-
return model.toString();
}
@@ -410,16 +438,24 @@ module _nls {
return JSON.parse(smg.toString());
}
- function patch(ts: typeof import('typescript'), moduleId: string, typescript: string, javascript: string, sourcemap: sm.RawSourceMap): INlsStringResult {
- const { localizeCalls, nlsExpressions } = analyze(ts, typescript, 'localize');
- const { localizeCalls: localize2Calls, nlsExpressions: nls2Expressions } = analyze(ts, typescript, 'localize2');
+ function parseLocalizeKeyOrValue(sourceExpression: string) {
+ // sourceValue can be "foo", 'foo', `foo` or { .... }
+ // in its evalulated form
+ // we want to return either the string or the object
+ // eslint-disable-next-line no-eval
+ return eval(`(${sourceExpression})`);
+ }
+
+ function patch(ts: typeof import('typescript'), typescript: string, javascript: string, sourcemap: sm.RawSourceMap, options: { preserveEnglish: boolean }): INlsPatchResult {
+ const { localizeCalls } = analyze(ts, typescript, 'localize');
+ const { localizeCalls: localize2Calls } = analyze(ts, typescript, 'localize2');
if (localizeCalls.length === 0 && localize2Calls.length === 0) {
return { javascript, sourcemap };
}
- const nlsKeys = template(localizeCalls.map(lc => lc.key).concat(localize2Calls.map(lc => lc.key)));
- const nls = template(localizeCalls.map(lc => lc.value).concat(localize2Calls.map(lc => lc.value)));
+ const nlsKeys = localizeCalls.map(lc => parseLocalizeKeyOrValue(lc.key)).concat(localize2Calls.map(lc => parseLocalizeKeyOrValue(lc.key)));
+ const nlsMessages = localizeCalls.map(lc => parseLocalizeKeyOrValue(lc.value)).concat(localize2Calls.map(lc => parseLocalizeKeyOrValue(lc.value)));
const smc = new sm.SourceMapConsumer(sourcemap);
const positionFrom = mappedPositionFrom.bind(null, sourcemap.sources[0]);
@@ -430,18 +466,20 @@ module _nls {
return { span: { start, end }, content: c.content };
};
- let i = 0;
const localizePatches = lazy(localizeCalls)
- .map(lc => ([
- { range: lc.keySpan, content: '' + (i++) },
- { range: lc.valueSpan, content: 'null' }
- ]))
+ .map(lc => (
+ options.preserveEnglish ? [
+ { range: lc.keySpan, content: `${allNLSMessagesIndex++}` } // localize('key', "message") => localize(, "message")
+ ] : [
+ { range: lc.keySpan, content: `${allNLSMessagesIndex++}` }, // localize('key', "message") => localize(, null)
+ { range: lc.valueSpan, content: 'null' }
+ ]))
.flatten()
.map(toPatch);
const localize2Patches = lazy(localize2Calls)
.map(lc => (
- { range: lc.keySpan, content: '' + (i++) }
+ { range: lc.keySpan, content: `${allNLSMessagesIndex++}` } // localize2('key', "message") => localize(, "message")
))
.map(toPatch);
@@ -460,45 +498,39 @@ module _nls {
}
});
- javascript = patchJavascript(patches, javascript, moduleId);
-
- // since imports are not within the sourcemap information,
- // we must do this MacGyver style
- if (nlsExpressions.length || nls2Expressions.length) {
- javascript = javascript.replace(/^define\(.*$/m, line => {
- return line.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
- });
- }
+ javascript = patchJavascript(patches, javascript);
sourcemap = patchSourcemap(patches, sourcemap, smc);
- return { javascript, sourcemap, nlsKeys, nls };
+ return { javascript, sourcemap, nlsKeys, nlsMessages };
}
- export function patchFiles(javascriptFile: File, typescript: string): File[] {
+ export function patchFile(javascriptFile: File, typescript: string, options: { preserveEnglish: boolean }): File {
const ts = require('typescript') as typeof import('typescript');
// hack?
const moduleId = javascriptFile.relative
.replace(/\.js$/, '')
.replace(/\\/g, '/');
- const { javascript, sourcemap, nlsKeys, nls } = patch(
+ const { javascript, sourcemap, nlsKeys, nlsMessages } = patch(
ts,
- moduleId,
typescript,
javascriptFile.contents.toString(),
- (javascriptFile).sourceMap
+ (javascriptFile).sourceMap,
+ options
);
- const result: File[] = [fileFrom(javascriptFile, javascript)];
- (result[0]).sourceMap = sourcemap;
+ const result = fileFrom(javascriptFile, javascript);
+ (result).sourceMap = sourcemap;
if (nlsKeys) {
- result.push(fileFrom(javascriptFile, nlsKeys, javascriptFile.path.replace(/\.js$/, '.nls.keys.js')));
+ moduleToNLSKeys[moduleId] = nlsKeys;
+ allNLSModulesAndKeys.push([moduleId, nlsKeys.map(nlsKey => typeof nlsKey === 'string' ? nlsKey : nlsKey.key)]);
}
- if (nls) {
- result.push(fileFrom(javascriptFile, nls, javascriptFile.path.replace(/\.js$/, '.nls.js')));
+ if (nlsMessages) {
+ moduleToNLSMessages[moduleId] = nlsMessages;
+ allNLSMessages.push(...nlsMessages);
}
return result;
diff --git a/build/lib/node.js b/build/lib/node.js
index 7209dffc134..74a54a3c170 100644
--- a/build/lib/node.js
+++ b/build/lib/node.js
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
const root = path.dirname(path.dirname(__dirname));
-const yarnrcPath = path.join(root, 'remote', '.yarnrc');
-const yarnrc = fs.readFileSync(yarnrcPath, 'utf8');
-const version = /^target\s+"([^"]+)"$/m.exec(yarnrc)[1];
+const npmrcPath = path.join(root, 'remote', '.npmrc');
+const npmrc = fs.readFileSync(npmrcPath, 'utf8');
+const version = /^target="(.*)"$/m.exec(npmrc)[1];
const platform = process.platform;
const arch = process.arch;
const node = platform === 'win32' ? 'node.exe' : 'node';
diff --git a/build/lib/node.ts b/build/lib/node.ts
index d1b0039b022..4beb13ae91b 100644
--- a/build/lib/node.ts
+++ b/build/lib/node.ts
@@ -7,9 +7,9 @@ import * as path from 'path';
import * as fs from 'fs';
const root = path.dirname(path.dirname(__dirname));
-const yarnrcPath = path.join(root, 'remote', '.yarnrc');
-const yarnrc = fs.readFileSync(yarnrcPath, 'utf8');
-const version = /^target\s+"([^"]+)"$/m.exec(yarnrc)![1];
+const npmrcPath = path.join(root, 'remote', '.npmrc');
+const npmrc = fs.readFileSync(npmrcPath, 'utf8');
+const version = /^target="(.*)"$/m.exec(npmrc)![1];
const platform = process.platform;
const arch = process.arch;
diff --git a/build/lib/optimize.js b/build/lib/optimize.js
index d48235ebf15..1d6d48afd64 100644
--- a/build/lib/optimize.js
+++ b/build/lib/optimize.js
@@ -15,6 +15,7 @@ const filter = require("gulp-filter");
const fancyLog = require("fancy-log");
const ansiColors = require("ansi-colors");
const path = require("path");
+const fs = require("fs");
const pump = require("pump");
const VinylFile = require("vinyl");
const bundle = require("./bundle");
@@ -22,6 +23,9 @@ const i18n_1 = require("./i18n");
const stats_1 = require("./stats");
const util = require("./util");
const postcss_1 = require("./postcss");
+const esbuild = require("esbuild");
+const sourcemaps = require("gulp-sourcemaps");
+const amd_1 = require("./amd");
const REPO_ROOT_PATH = path.join(__dirname, '../..');
function log(prefix, message) {
fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
@@ -53,7 +57,7 @@ function loaderPlugin(src, base, amdModuleId) {
function loader(src, bundledFileHeader, bundleLoader, externalLoaderInfo) {
let loaderStream = gulp.src(`${src}/vs/loader.js`, { base: `${src}` });
if (bundleLoader) {
- loaderStream = es.merge(loaderStream, loaderPlugin(`${src}/vs/css.js`, `${src}`, 'vs/css'), loaderPlugin(`${src}/vs/nls.js`, `${src}`, 'vs/nls'));
+ loaderStream = es.merge(loaderStream, loaderPlugin(`${src}/vs/css.js`, `${src}`, 'vs/css'));
}
const files = [];
const order = (f) => {
@@ -63,10 +67,7 @@ function loader(src, bundledFileHeader, bundleLoader, externalLoaderInfo) {
if (f.path.endsWith('css.js')) {
return 1;
}
- if (f.path.endsWith('nls.js')) {
- return 2;
- }
- return 3;
+ return 2;
};
return (loaderStream
.pipe(es.through(function (data) {
@@ -151,12 +152,11 @@ const DEFAULT_FILE_HEADER = [
].join('\n');
function optimizeAMDTask(opts) {
const src = opts.src;
- const entryPoints = opts.entryPoints;
+ const entryPoints = opts.entryPoints.filter(d => d.target !== 'esm');
const resources = opts.resources;
const loaderConfig = opts.loaderConfig;
const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
const fileContentMapper = opts.fileContentMapper || ((contents, _path) => contents);
- const sourcemaps = require('gulp-sourcemaps');
const bundlesStream = es.through(); // this stream will contain the bundled files
const resourcesStream = es.through(); // this stream will contain the resources
const bundleInfoStream = es.through(); // this stream will contain bundleInfo.json
@@ -192,12 +192,132 @@ function optimizeAMDTask(opts) {
includeContent: true
}))
.pipe(opts.languages && opts.languages.length ? (0, i18n_1.processNlsFiles)({
+ out: opts.src,
fileHeader: bundledFileHeader,
languages: opts.languages
}) : es.through());
}
+function optimizeESMTask(opts, cjsOpts) {
+ const resourcesStream = es.through(); // this stream will contain the resources
+ const bundlesStream = es.through(); // this stream will contain the bundled files
+ const entryPoints = opts.entryPoints.filter(d => d.target !== 'amd');
+ if (cjsOpts) {
+ cjsOpts.entryPoints.forEach(entryPoint => entryPoints.push({ name: path.parse(entryPoint).name }));
+ }
+ const allMentionedModules = new Set();
+ for (const entryPoint of entryPoints) {
+ allMentionedModules.add(entryPoint.name);
+ entryPoint.include?.forEach(allMentionedModules.add, allMentionedModules);
+ entryPoint.exclude?.forEach(allMentionedModules.add, allMentionedModules);
+ }
+ allMentionedModules.delete('vs/css'); // TODO@esm remove this when vs/css is removed
+ const bundleAsync = async () => {
+ const files = [];
+ const tasks = [];
+ for (const entryPoint of entryPoints) {
+ console.log(`[bundle] '${entryPoint.name}'`);
+ // support for 'dest' via esbuild#in/out
+ const dest = entryPoint.dest?.replace(/\.[^/.]+$/, '') ?? entryPoint.name;
+ // boilerplate massage
+ const banner = { js: '' };
+ const tslibPath = path.join(require.resolve('tslib'), '../tslib.es6.js');
+ banner.js += await fs.promises.readFile(tslibPath, 'utf-8');
+ const boilerplateTrimmer = {
+ name: 'boilerplate-trimmer',
+ setup(build) {
+ build.onLoad({ filter: /\.js$/ }, async (args) => {
+ const contents = await fs.promises.readFile(args.path, 'utf-8');
+ const newContents = bundle.removeAllTSBoilerplate(contents);
+ return { contents: newContents };
+ });
+ }
+ };
+ // support for 'preprend' via the esbuild#banner
+ if (entryPoint.prepend?.length) {
+ for (const item of entryPoint.prepend) {
+ const fullpath = path.join(REPO_ROOT_PATH, opts.src, item.path);
+ const source = await fs.promises.readFile(fullpath, 'utf8');
+ banner.js += source + '\n';
+ }
+ }
+ const task = esbuild.build({
+ bundle: true,
+ external: entryPoint.exclude,
+ packages: 'external', // "external all the things", see https://esbuild.github.io/api/#packages
+ platform: 'neutral', // makes esm
+ format: 'esm',
+ sourcemap: 'external',
+ plugins: [boilerplateTrimmer],
+ target: ['es2022'],
+ loader: {
+ '.ttf': 'file',
+ '.svg': 'file',
+ '.png': 'file',
+ '.sh': 'file',
+ },
+ assetNames: 'media/[name]', // moves media assets into a sub-folder "media"
+ banner: entryPoint.name === 'vs/workbench/workbench.web.main' ? undefined : banner, // TODO@esm remove line when we stop supporting web-amd-esm-bridge
+ entryPoints: [
+ {
+ in: path.join(REPO_ROOT_PATH, opts.src, `${entryPoint.name}.js`),
+ out: dest,
+ }
+ ],
+ outdir: path.join(REPO_ROOT_PATH, opts.src),
+ write: false, // enables res.outputFiles
+ metafile: true, // enables res.metafile
+ }).then(res => {
+ for (const file of res.outputFiles) {
+ let contents = file.contents;
+ let sourceMapFile = undefined;
+ if (file.path.endsWith('.js')) {
+ if (opts.fileContentMapper) {
+ // UGLY the fileContentMapper is per file but at this point we have all files
+ // bundled already. So, we call the mapper for the same contents but each file
+ // that has been included in the bundle...
+ let newText = file.text;
+ for (const input of Object.keys(res.metafile.inputs)) {
+ newText = opts.fileContentMapper(newText, input);
+ }
+ contents = Buffer.from(newText);
+ }
+ sourceMapFile = res.outputFiles.find(f => f.path === `${file.path}.map`);
+ }
+ const fileProps = {
+ contents: Buffer.from(contents),
+ sourceMap: sourceMapFile ? JSON.parse(sourceMapFile.text) : undefined, // support gulp-sourcemaps
+ path: file.path,
+ base: path.join(REPO_ROOT_PATH, opts.src)
+ };
+ files.push(new VinylFile(fileProps));
+ }
+ });
+ // await task; // FORCE serial bundling (makes debugging easier)
+ tasks.push(task);
+ }
+ await Promise.all(tasks);
+ return { files };
+ };
+ bundleAsync().then((output) => {
+ // bundle output (JS, CSS, SVG...)
+ es.readArray(output.files).pipe(bundlesStream);
+ // forward all resources
+ gulp.src(opts.resources, { base: `${opts.src}`, allowEmpty: true }).pipe(resourcesStream);
+ });
+ const result = es.merge(bundlesStream, resourcesStream);
+ return result
+ .pipe(sourcemaps.write('./', {
+ sourceRoot: undefined,
+ addComment: true,
+ includeContent: true
+ }))
+ .pipe(opts.languages && opts.languages.length ? (0, i18n_1.processNlsFiles)({
+ out: opts.src,
+ fileHeader: opts.header || DEFAULT_FILE_HEADER,
+ languages: opts.languages
+ }) : es.through());
+}
function optimizeCommonJSTask(opts) {
- const esbuild = require('esbuild');
const src = opts.src;
const entryPoints = opts.entryPoints;
return gulp.src(entryPoints, { base: `${src}`, allowEmpty: true })
@@ -228,9 +348,15 @@ function optimizeLoaderTask(src, out, bundleLoader, bundledFileHeader = '', exte
}
function optimizeTask(opts) {
return function () {
- const optimizers = [optimizeAMDTask(opts.amd)];
- if (opts.commonJS) {
- optimizers.push(optimizeCommonJSTask(opts.commonJS));
+ const optimizers = [];
+ if (!(0, amd_1.isAMD)()) {
+ optimizers.push(optimizeESMTask(opts.amd, opts.commonJS));
+ }
+ else {
+ optimizers.push(optimizeAMDTask(opts.amd));
+ if (opts.commonJS) {
+ optimizers.push(optimizeCommonJSTask(opts.commonJS));
+ }
}
if (opts.manual) {
optimizers.push(optimizeManualTask(opts.manual));
@@ -239,11 +365,9 @@ function optimizeTask(opts) {
};
}
function minifyTask(src, sourceMapBaseUrl) {
- const esbuild = require('esbuild');
const sourceMappingURL = sourceMapBaseUrl ? ((f) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
return cb => {
const cssnano = require('cssnano');
- const sourcemaps = require('gulp-sourcemaps');
const svgmin = require('gulp-svgmin');
const jsFilter = filter('**/*.js', { restore: true });
const cssFilter = filter('**/*.css', { restore: true });
@@ -255,7 +379,7 @@ function minifyTask(src, sourceMapBaseUrl) {
sourcemap: 'external',
outdir: '.',
platform: 'node',
- target: ['esnext'],
+ target: ['es2022'],
write: false
}).then(res => {
const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path));
@@ -271,12 +395,7 @@ function minifyTask(src, sourceMapBaseUrl) {
cb(undefined, f);
}
}, cb);
- }), jsFilter.restore, cssFilter, (0, postcss_1.gulpPostcss)([cssnano({ preset: 'default' })]), cssFilter.restore, svgFilter, svgmin(), svgFilter.restore, sourcemaps.mapSources((sourcePath) => {
- if (sourcePath === 'bootstrap-fork.js') {
- return 'bootstrap-fork.orig.js';
- }
- return sourcePath;
- }), sourcemaps.write('./', {
+ }), jsFilter.restore, cssFilter, (0, postcss_1.gulpPostcss)([cssnano({ preset: 'default' })]), cssFilter.restore, svgFilter, svgmin(), svgFilter.restore, sourcemaps.write('./', {
sourceMappingURL,
sourceRoot: undefined,
includeContent: true,
diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts
index 5b6dee9bf65..a5b4efe2823 100644
--- a/build/lib/optimize.ts
+++ b/build/lib/optimize.ts
@@ -10,6 +10,7 @@ import * as filter from 'gulp-filter';
import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
import * as path from 'path';
+import * as fs from 'fs';
import * as pump from 'pump';
import * as VinylFile from 'vinyl';
import * as bundle from './bundle';
@@ -17,6 +18,9 @@ import { Language, processNlsFiles } from './i18n';
import { createStatsStream } from './stats';
import * as util from './util';
import { gulpPostcss } from './postcss';
+import * as esbuild from 'esbuild';
+import * as sourcemaps from 'gulp-sourcemaps';
+import { isAMD } from './amd';
const REPO_ROOT_PATH = path.join(__dirname, '../..');
@@ -60,8 +64,7 @@ function loader(src: string, bundledFileHeader: string, bundleLoader: boolean, e
if (bundleLoader) {
loaderStream = es.merge(
loaderStream,
- loaderPlugin(`${src}/vs/css.js`, `${src}`, 'vs/css'),
- loaderPlugin(`${src}/vs/nls.js`, `${src}`, 'vs/nls'),
+ loaderPlugin(`${src}/vs/css.js`, `${src}`, 'vs/css')
);
}
@@ -73,10 +76,7 @@ function loader(src: string, bundledFileHeader: string, bundleLoader: boolean, e
if (f.path.endsWith('css.js')) {
return 1;
}
- if (f.path.endsWith('nls.js')) {
- return 2;
- }
- return 3;
+ return 2;
};
return (
@@ -217,14 +217,12 @@ const DEFAULT_FILE_HEADER = [
function optimizeAMDTask(opts: IOptimizeAMDTaskOpts): NodeJS.ReadWriteStream {
const src = opts.src;
- const entryPoints = opts.entryPoints;
+ const entryPoints = opts.entryPoints.filter(d => d.target !== 'esm');
const resources = opts.resources;
const loaderConfig = opts.loaderConfig;
const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
const fileContentMapper = opts.fileContentMapper || ((contents: string, _path: string) => contents);
- const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
-
const bundlesStream = es.through(); // this stream will contain the bundled files
const resourcesStream = es.through(); // this stream will contain the resources
const bundleInfoStream = es.through(); // this stream will contain bundleInfo.json
@@ -269,11 +267,161 @@ function optimizeAMDTask(opts: IOptimizeAMDTaskOpts): NodeJS.ReadWriteStream {
includeContent: true
}))
.pipe(opts.languages && opts.languages.length ? processNlsFiles({
+ out: opts.src,
fileHeader: bundledFileHeader,
languages: opts.languages
}) : es.through());
}
+function optimizeESMTask(opts: IOptimizeAMDTaskOpts, cjsOpts?: IOptimizeCommonJSTaskOpts): NodeJS.ReadWriteStream {
+ const resourcesStream = es.through(); // this stream will contain the resources
+ const bundlesStream = es.through(); // this stream will contain the bundled files
+
+ const entryPoints = opts.entryPoints.filter(d => d.target !== 'amd');
+ if (cjsOpts) {
+ cjsOpts.entryPoints.forEach(entryPoint => entryPoints.push({ name: path.parse(entryPoint).name }));
+ }
+
+ const allMentionedModules = new Set();
+ for (const entryPoint of entryPoints) {
+ allMentionedModules.add(entryPoint.name);
+ entryPoint.include?.forEach(allMentionedModules.add, allMentionedModules);
+ entryPoint.exclude?.forEach(allMentionedModules.add, allMentionedModules);
+ }
+
+ allMentionedModules.delete('vs/css'); // TODO@esm remove this when vs/css is removed
+
+ const bundleAsync = async () => {
+
+ const files: VinylFile[] = [];
+ const tasks: Promise[] = [];
+
+ for (const entryPoint of entryPoints) {
+
+ console.log(`[bundle] '${entryPoint.name}'`);
+
+ // support for 'dest' via esbuild#in/out
+ const dest = entryPoint.dest?.replace(/\.[^/.]+$/, '') ?? entryPoint.name;
+
+ // boilerplate massage
+ const banner = { js: '' };
+ const tslibPath = path.join(require.resolve('tslib'), '../tslib.es6.js');
+ banner.js += await fs.promises.readFile(tslibPath, 'utf-8');
+
+ const boilerplateTrimmer: esbuild.Plugin = {
+ name: 'boilerplate-trimmer',
+ setup(build) {
+ build.onLoad({ filter: /\.js$/ }, async args => {
+ const contents = await fs.promises.readFile(args.path, 'utf-8');
+ const newContents = bundle.removeAllTSBoilerplate(contents);
+ return { contents: newContents };
+ });
+ }
+ };
+
+ // support for 'preprend' via the esbuild#banner
+ if (entryPoint.prepend?.length) {
+ for (const item of entryPoint.prepend) {
+ const fullpath = path.join(REPO_ROOT_PATH, opts.src, item.path);
+ const source = await fs.promises.readFile(fullpath, 'utf8');
+ banner.js += source + '\n';
+ }
+ }
+
+ const task = esbuild.build({
+ bundle: true,
+ external: entryPoint.exclude,
+ packages: 'external', // "external all the things", see https://esbuild.github.io/api/#packages
+ platform: 'neutral', // makes esm
+ format: 'esm',
+ sourcemap: 'external',
+ plugins: [boilerplateTrimmer],
+ target: ['es2022'],
+ loader: {
+ '.ttf': 'file',
+ '.svg': 'file',
+ '.png': 'file',
+ '.sh': 'file',
+ },
+ assetNames: 'media/[name]', // moves media assets into a sub-folder "media"
+ banner: entryPoint.name === 'vs/workbench/workbench.web.main' ? undefined : banner, // TODO@esm remove line when we stop supporting web-amd-esm-bridge
+ entryPoints: [
+ {
+ in: path.join(REPO_ROOT_PATH, opts.src, `${entryPoint.name}.js`),
+ out: dest,
+ }
+ ],
+ outdir: path.join(REPO_ROOT_PATH, opts.src),
+ write: false, // enables res.outputFiles
+ metafile: true, // enables res.metafile
+
+ }).then(res => {
+ for (const file of res.outputFiles) {
+
+ let contents = file.contents;
+ let sourceMapFile: esbuild.OutputFile | undefined = undefined;
+
+ if (file.path.endsWith('.js')) {
+
+ if (opts.fileContentMapper) {
+ // UGLY the fileContentMapper is per file but at this point we have all files
+ // bundled already. So, we call the mapper for the same contents but each file
+ // that has been included in the bundle...
+ let newText = file.text;
+ for (const input of Object.keys(res.metafile.inputs)) {
+ newText = opts.fileContentMapper(newText, input);
+ }
+ contents = Buffer.from(newText);
+ }
+
+ sourceMapFile = res.outputFiles.find(f => f.path === `${file.path}.map`);
+ }
+
+ const fileProps = {
+ contents: Buffer.from(contents),
+ sourceMap: sourceMapFile ? JSON.parse(sourceMapFile.text) : undefined, // support gulp-sourcemaps
+ path: file.path,
+ base: path.join(REPO_ROOT_PATH, opts.src)
+ };
+ files.push(new VinylFile(fileProps));
+ }
+ });
+
+ // await task; // FORCE serial bundling (makes debugging easier)
+ tasks.push(task);
+ }
+
+ await Promise.all(tasks);
+ return { files };
+ };
+
+ bundleAsync().then((output) => {
+
+ // bundle output (JS, CSS, SVG...)
+ es.readArray(output.files).pipe(bundlesStream);
+
+ // forward all resources
+ gulp.src(opts.resources, { base: `${opts.src}`, allowEmpty: true }).pipe(resourcesStream);
+ });
+
+ const result = es.merge(
+ bundlesStream,
+ resourcesStream
+ );
+
+ return result
+ .pipe(sourcemaps.write('./', {
+ sourceRoot: undefined,
+ addComment: true,
+ includeContent: true
+ }))
+ .pipe(opts.languages && opts.languages.length ? processNlsFiles({
+ out: opts.src,
+ fileHeader: opts.header || DEFAULT_FILE_HEADER,
+ languages: opts.languages
+ }) : es.through());
+}
+
export interface IOptimizeCommonJSTaskOpts {
/**
* The paths to consider for optimizing.
@@ -294,8 +442,6 @@ export interface IOptimizeCommonJSTaskOpts {
}
function optimizeCommonJSTask(opts: IOptimizeCommonJSTaskOpts): NodeJS.ReadWriteStream {
- const esbuild = require('esbuild') as typeof import('esbuild');
-
const src = opts.src;
const entryPoints = opts.entryPoints;
@@ -363,9 +509,15 @@ export interface IOptimizeTaskOpts {
export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStream {
return function () {
- const optimizers = [optimizeAMDTask(opts.amd)];
- if (opts.commonJS) {
- optimizers.push(optimizeCommonJSTask(opts.commonJS));
+ const optimizers: NodeJS.ReadWriteStream[] = [];
+ if (!isAMD()) {
+ optimizers.push(optimizeESMTask(opts.amd, opts.commonJS));
+ } else {
+ optimizers.push(optimizeAMDTask(opts.amd));
+
+ if (opts.commonJS) {
+ optimizers.push(optimizeCommonJSTask(opts.commonJS));
+ }
}
if (opts.manual) {
@@ -377,12 +529,10 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
}
export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) => void {
- const esbuild = require('esbuild') as typeof import('esbuild');
const sourceMappingURL = sourceMapBaseUrl ? ((f: any) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
return cb => {
const cssnano = require('cssnano') as typeof import('cssnano');
- const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
const svgmin = require('gulp-svgmin') as typeof import('gulp-svgmin');
const jsFilter = filter('**/*.js', { restore: true });
@@ -400,7 +550,7 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
sourcemap: 'external',
outdir: '.',
platform: 'node',
- target: ['esnext'],
+ target: ['es2022'],
write: false
}).then(res => {
const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path))!;
@@ -425,13 +575,6 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
svgFilter,
svgmin(),
svgFilter.restore,
- (sourcemaps).mapSources((sourcePath: string) => {
- if (sourcePath === 'bootstrap-fork.js') {
- return 'bootstrap-fork.orig.js';
- }
-
- return sourcePath;
- }),
sourcemaps.write('./', {
sourceMappingURL,
sourceRoot: undefined,
diff --git a/build/lib/preLaunch.js b/build/lib/preLaunch.js
index 1bfe7f573f6..4791514fdfe 100644
--- a/build/lib/preLaunch.js
+++ b/build/lib/preLaunch.js
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const child_process_1 = require("child_process");
const fs_1 = require("fs");
-const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
+const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
const rootDir = path.resolve(__dirname, '..', '..');
function runProcess(command, args = []) {
return new Promise((resolve, reject) => {
@@ -28,15 +28,15 @@ async function exists(subdir) {
}
async function ensureNodeModules() {
if (!(await exists('node_modules'))) {
- await runProcess(yarn);
+ await runProcess(npm, ['ci']);
}
}
async function getElectron() {
- await runProcess(yarn, ['electron']);
+ await runProcess(npm, ['run', 'electron']);
}
async function ensureCompiled() {
if (!(await exists('out'))) {
- await runProcess(yarn, ['compile']);
+ await runProcess(npm, ['run', 'compile']);
}
}
async function main() {
diff --git a/build/lib/preLaunch.ts b/build/lib/preLaunch.ts
index d6776e62798..e0ea274458a 100644
--- a/build/lib/preLaunch.ts
+++ b/build/lib/preLaunch.ts
@@ -9,7 +9,7 @@ import * as path from 'path';
import { spawn } from 'child_process';
import { promises as fs } from 'fs';
-const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
+const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
const rootDir = path.resolve(__dirname, '..', '..');
function runProcess(command: string, args: ReadonlyArray = []) {
@@ -31,17 +31,17 @@ async function exists(subdir: string) {
async function ensureNodeModules() {
if (!(await exists('node_modules'))) {
- await runProcess(yarn);
+ await runProcess(npm, ['ci']);
}
}
async function getElectron() {
- await runProcess(yarn, ['electron']);
+ await runProcess(npm, ['run', 'electron']);
}
async function ensureCompiled() {
if (!(await exists('out'))) {
- await runProcess(yarn, ['compile']);
+ await runProcess(npm, ['run', 'compile']);
}
}
diff --git a/build/lib/standalone.js b/build/lib/standalone.js
index dbc47db0833..b724a009e8a 100644
--- a/build/lib/standalone.js
+++ b/build/lib/standalone.js
@@ -51,7 +51,12 @@ function extractEditor(options) {
// Add extra .d.ts files from `node_modules/@types/`
if (Array.isArray(options.compilerOptions?.types)) {
options.compilerOptions.types.forEach((type) => {
- options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
+ if (type === '@webgpu/types') {
+ options.typings.push(`../node_modules/${type}/dist/index.d.ts`);
+ }
+ else {
+ options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
+ }
});
}
const result = tss.shake(options);
@@ -79,13 +84,7 @@ function extractEditor(options) {
const info = ts.preProcessFile(fileContents);
for (let i = info.importedFiles.length - 1; i >= 0; i--) {
const importedFileName = info.importedFiles[i].fileName;
- let importedFilePath;
- if (/^vs\/css!/.test(importedFileName)) {
- importedFilePath = importedFileName.substr('vs/css!'.length) + '.css';
- }
- else {
- importedFilePath = importedFileName;
- }
+ let importedFilePath = importedFileName;
if (/(^\.\/)|(^\.\.\/)/.test(importedFilePath)) {
importedFilePath = path.join(path.dirname(fileName), importedFilePath);
}
@@ -93,8 +92,9 @@ function extractEditor(options) {
transportCSS(importedFilePath, copyFile, writeOutputFile);
}
else {
- if (fs.existsSync(path.join(options.sourcesRoot, importedFilePath + '.js'))) {
- copyFile(importedFilePath + '.js');
+ const pathToCopy = path.join(options.sourcesRoot, importedFilePath);
+ if (fs.existsSync(pathToCopy) && !fs.statSync(pathToCopy).isDirectory()) {
+ copyFile(importedFilePath);
}
}
}
@@ -106,14 +106,10 @@ function extractEditor(options) {
'vs/css.build.ts',
'vs/css.ts',
'vs/loader.js',
- 'vs/loader.d.ts',
- 'vs/nls.build.ts',
- 'vs/nls.ts',
- 'vs/nls.mock.ts',
+ 'vs/loader.d.ts'
].forEach(copyFile);
}
function createESMSourcesAndResources2(options) {
- const ts = require('typescript');
const SRC_FOLDER = path.join(REPO_ROOT, options.srcFolder);
const OUT_FOLDER = path.join(REPO_ROOT, options.outFolder);
const OUT_RESOURCES_FOLDER = path.join(REPO_ROOT, options.outResourcesFolder);
@@ -134,58 +130,16 @@ function createESMSourcesAndResources2(options) {
}
if (file === 'tsconfig.json') {
const tsConfig = JSON.parse(fs.readFileSync(path.join(SRC_FOLDER, file)).toString());
- tsConfig.compilerOptions.module = 'es6';
+ tsConfig.compilerOptions.module = 'es2022';
tsConfig.compilerOptions.outDir = path.join(path.relative(OUT_FOLDER, OUT_RESOURCES_FOLDER), 'vs').replace(/\\/g, '/');
write(getDestAbsoluteFilePath(file), JSON.stringify(tsConfig, null, '\t'));
continue;
}
- if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
+ if (/\.ts$/.test(file) || /\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
// Transport the files directly
write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
continue;
}
- if (/\.ts$/.test(file)) {
- // Transform the .ts file
- let fileContents = fs.readFileSync(path.join(SRC_FOLDER, file)).toString();
- const info = ts.preProcessFile(fileContents);
- for (let i = info.importedFiles.length - 1; i >= 0; i--) {
- const importedFilename = info.importedFiles[i].fileName;
- const pos = info.importedFiles[i].pos;
- const end = info.importedFiles[i].end;
- let importedFilepath;
- if (/^vs\/css!/.test(importedFilename)) {
- importedFilepath = importedFilename.substr('vs/css!'.length) + '.css';
- }
- else {
- importedFilepath = importedFilename;
- }
- if (/(^\.\/)|(^\.\.\/)/.test(importedFilepath)) {
- importedFilepath = path.join(path.dirname(file), importedFilepath);
- }
- let relativePath;
- if (importedFilepath === path.dirname(file).replace(/\\/g, '/')) {
- relativePath = '../' + path.basename(path.dirname(file));
- }
- else if (importedFilepath === path.dirname(path.dirname(file)).replace(/\\/g, '/')) {
- relativePath = '../../' + path.basename(path.dirname(path.dirname(file)));
- }
- else {
- relativePath = path.relative(path.dirname(file), importedFilepath);
- }
- relativePath = relativePath.replace(/\\/g, '/');
- if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
- relativePath = './' + relativePath;
- }
- fileContents = (fileContents.substring(0, pos + 1)
- + relativePath
- + fileContents.substring(end + 1));
- }
- fileContents = fileContents.replace(/import ([a-zA-Z0-9]+) = require\(('[^']+')\);/g, function (_, m1, m2) {
- return `import * as ${m1} from ${m2};`;
- });
- write(getDestAbsoluteFilePath(file), fileContents);
- continue;
- }
console.log(`UNKNOWN FILE: ${file}`);
}
function walkDirRecursive(dir) {
diff --git a/build/lib/standalone.ts b/build/lib/standalone.ts
index 775a1be5996..9563cd6670b 100644
--- a/build/lib/standalone.ts
+++ b/build/lib/standalone.ts
@@ -59,7 +59,11 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
// Add extra .d.ts files from `node_modules/@types/`
if (Array.isArray(options.compilerOptions?.types)) {
options.compilerOptions.types.forEach((type: string) => {
- options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
+ if (type === '@webgpu/types') {
+ options.typings.push(`../node_modules/${type}/dist/index.d.ts`);
+ } else {
+ options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
+ }
});
}
@@ -90,12 +94,7 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
for (let i = info.importedFiles.length - 1; i >= 0; i--) {
const importedFileName = info.importedFiles[i].fileName;
- let importedFilePath: string;
- if (/^vs\/css!/.test(importedFileName)) {
- importedFilePath = importedFileName.substr('vs/css!'.length) + '.css';
- } else {
- importedFilePath = importedFileName;
- }
+ let importedFilePath = importedFileName;
if (/(^\.\/)|(^\.\.\/)/.test(importedFilePath)) {
importedFilePath = path.join(path.dirname(fileName), importedFilePath);
}
@@ -103,8 +102,9 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
if (/\.css$/.test(importedFilePath)) {
transportCSS(importedFilePath, copyFile, writeOutputFile);
} else {
- if (fs.existsSync(path.join(options.sourcesRoot, importedFilePath + '.js'))) {
- copyFile(importedFilePath + '.js');
+ const pathToCopy = path.join(options.sourcesRoot, importedFilePath);
+ if (fs.existsSync(pathToCopy) && !fs.statSync(pathToCopy).isDirectory()) {
+ copyFile(importedFilePath);
}
}
}
@@ -118,10 +118,7 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
'vs/css.build.ts',
'vs/css.ts',
'vs/loader.js',
- 'vs/loader.d.ts',
- 'vs/nls.build.ts',
- 'vs/nls.ts',
- 'vs/nls.mock.ts',
+ 'vs/loader.d.ts'
].forEach(copyFile);
}
@@ -134,7 +131,6 @@ export interface IOptions2 {
}
export function createESMSourcesAndResources2(options: IOptions2): void {
- const ts = require('typescript') as typeof import('typescript');
const SRC_FOLDER = path.join(REPO_ROOT, options.srcFolder);
const OUT_FOLDER = path.join(REPO_ROOT, options.outFolder);
@@ -160,66 +156,18 @@ export function createESMSourcesAndResources2(options: IOptions2): void {
if (file === 'tsconfig.json') {
const tsConfig = JSON.parse(fs.readFileSync(path.join(SRC_FOLDER, file)).toString());
- tsConfig.compilerOptions.module = 'es6';
+ tsConfig.compilerOptions.module = 'es2022';
tsConfig.compilerOptions.outDir = path.join(path.relative(OUT_FOLDER, OUT_RESOURCES_FOLDER), 'vs').replace(/\\/g, '/');
write(getDestAbsoluteFilePath(file), JSON.stringify(tsConfig, null, '\t'));
continue;
}
- if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
+ if (/\.ts$/.test(file) || /\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
// Transport the files directly
write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
continue;
}
- if (/\.ts$/.test(file)) {
- // Transform the .ts file
- let fileContents = fs.readFileSync(path.join(SRC_FOLDER, file)).toString();
-
- const info = ts.preProcessFile(fileContents);
-
- for (let i = info.importedFiles.length - 1; i >= 0; i--) {
- const importedFilename = info.importedFiles[i].fileName;
- const pos = info.importedFiles[i].pos;
- const end = info.importedFiles[i].end;
-
- let importedFilepath: string;
- if (/^vs\/css!/.test(importedFilename)) {
- importedFilepath = importedFilename.substr('vs/css!'.length) + '.css';
- } else {
- importedFilepath = importedFilename;
- }
- if (/(^\.\/)|(^\.\.\/)/.test(importedFilepath)) {
- importedFilepath = path.join(path.dirname(file), importedFilepath);
- }
-
- let relativePath: string;
- if (importedFilepath === path.dirname(file).replace(/\\/g, '/')) {
- relativePath = '../' + path.basename(path.dirname(file));
- } else if (importedFilepath === path.dirname(path.dirname(file)).replace(/\\/g, '/')) {
- relativePath = '../../' + path.basename(path.dirname(path.dirname(file)));
- } else {
- relativePath = path.relative(path.dirname(file), importedFilepath);
- }
- relativePath = relativePath.replace(/\\/g, '/');
- if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
- relativePath = './' + relativePath;
- }
- fileContents = (
- fileContents.substring(0, pos + 1)
- + relativePath
- + fileContents.substring(end + 1)
- );
- }
-
- fileContents = fileContents.replace(/import ([a-zA-Z0-9]+) = require\(('[^']+')\);/g, function (_, m1, m2) {
- return `import * as ${m1} from ${m2};`;
- });
-
- write(getDestAbsoluteFilePath(file), fileContents);
- continue;
- }
-
console.log(`UNKNOWN FILE: ${file}`);
}
diff --git a/build/lib/stylelint/vscode-known-variables.json b/build/lib/stylelint/vscode-known-variables.json
index e482a5ca5af..56aa02ebfb7 100644
--- a/build/lib/stylelint/vscode-known-variables.json
+++ b/build/lib/stylelint/vscode-known-variables.json
@@ -17,12 +17,6 @@
"--vscode-activityBarTop-dropBorder",
"--vscode-activityBarTop-foreground",
"--vscode-activityBarTop-inactiveForeground",
- "--vscode-aideChat-avatarBackground",
- "--vscode-aideChat-avatarForeground",
- "--vscode-aideChat-requestBackground",
- "--vscode-aideChat-requestBorder",
- "--vscode-aideChat-slashCommandBackground",
- "--vscode-aideChat-slashCommandForeground",
"--vscode-badge-background",
"--vscode-badge-foreground",
"--vscode-banner-background",
@@ -144,6 +138,7 @@
"--vscode-editor-findRangeHighlightBorder",
"--vscode-editor-focusedStackFrameHighlightBackground",
"--vscode-editor-foldBackground",
+ "--vscode-editor-foldPlaceholderForeground",
"--vscode-editor-foreground",
"--vscode-editor-hoverHighlightBackground",
"--vscode-editor-inactiveSelectionBackground",
@@ -172,6 +167,10 @@
"--vscode-editor-wordHighlightStrongBorder",
"--vscode-editor-wordHighlightTextBackground",
"--vscode-editor-wordHighlightTextBorder",
+ "--vscode-editorActionList-background",
+ "--vscode-editorActionList-focusBackground",
+ "--vscode-editorActionList-focusForeground",
+ "--vscode-editorActionList-foreground",
"--vscode-editorActiveLineNumber-foreground",
"--vscode-editorBracketHighlight-foreground1",
"--vscode-editorBracketHighlight-foreground2",
@@ -536,11 +535,25 @@
"--vscode-quickInputList-focusForeground",
"--vscode-quickInputList-focusIconForeground",
"--vscode-quickInputTitle-background",
+ "--vscode-radio-activeBackground",
+ "--vscode-radio-activeBorder",
+ "--vscode-radio-activeForeground",
+ "--vscode-radio-inactiveBackground",
+ "--vscode-radio-inactiveBorder",
+ "--vscode-radio-inactiveForeground",
+ "--vscode-radio-inactiveHoverBackground",
"--vscode-sash-hoverBorder",
- "--vscode-scm-historyItemAdditionsForeground",
- "--vscode-scm-historyItemDeletionsForeground",
- "--vscode-scm-historyItemSelectedStatisticsBorder",
- "--vscode-scm-historyItemStatisticsBorder",
+ "--vscode-scmGraph-foreground1",
+ "--vscode-scmGraph-foreground2",
+ "--vscode-scmGraph-foreground3",
+ "--vscode-scmGraph-historyItemBaseRefColor",
+ "--vscode-scmGraph-historyItemRefColor",
+ "--vscode-scmGraph-historyItemRemoteRefColor",
+ "--vscode-scmGraph-historyItemHoverAdditionsForeground",
+ "--vscode-scmGraph-historyItemHoverDefaultLabelBackground",
+ "--vscode-scmGraph-historyItemHoverDefaultLabelForeground",
+ "--vscode-scmGraph-historyItemHoverDeletionsForeground",
+ "--vscode-scmGraph-historyItemHoverLabelForeground",
"--vscode-scrollbar-shadow",
"--vscode-scrollbarSlider-activeBackground",
"--vscode-scrollbarSlider-background",
@@ -716,8 +729,10 @@
"--vscode-terminalCommandDecoration-defaultBackground",
"--vscode-terminalCommandDecoration-errorBackground",
"--vscode-terminalCommandDecoration-successBackground",
+ "--vscode-terminalCommandGuide-foreground",
"--vscode-terminalCursor-background",
"--vscode-terminalCursor-foreground",
+ "--vscode-terminalOverviewRuler-border",
"--vscode-terminalOverviewRuler-cursorForeground",
"--vscode-terminalOverviewRuler-findMatchForeground",
"--vscode-terminalStickyScroll-background",
@@ -787,7 +802,6 @@
"--vscode-window-inactiveBorder"
],
"others": [
- "--size",
"--background-dark",
"--background-light",
"--dropdown-padding-bottom",
@@ -817,6 +831,7 @@
"--testMessageDecorationFontFamily",
"--testMessageDecorationFontSize",
"--title-border-bottom-color",
+ "--title-wco-width",
"--vscode-chat-list-background",
"--vscode-editorCodeLens-fontFamily",
"--vscode-editorCodeLens-fontFamilyDefault",
@@ -841,6 +856,8 @@
"--vscode-editorStickyScroll-scrollableWidth",
"--vscode-editorStickyScroll-foldingOpacityTransition",
"--window-border-color",
+ "--vscode-parameterHintsWidget-editorFontFamily",
+ "--vscode-parameterHintsWidget-editorFontFamilyDefault",
"--workspace-trust-check-color",
"--workspace-trust-selected-color",
"--workspace-trust-unselected-color",
diff --git a/build/lib/treeshaking.js b/build/lib/treeshaking.js
index c8e95511877..af06f4e3ec5 100644
--- a/build/lib/treeshaking.js
+++ b/build/lib/treeshaking.js
@@ -100,35 +100,36 @@ function discoverAndReadFiles(ts, options) {
options.entryPoints.forEach((entryPoint) => enqueue(entryPoint));
while (queue.length > 0) {
const moduleId = queue.shift();
- const dts_filename = path.join(options.sourcesRoot, moduleId + '.d.ts');
+ let redirectedModuleId = moduleId;
+ if (options.redirects[moduleId]) {
+ redirectedModuleId = options.redirects[moduleId];
+ }
+ const dts_filename = path.join(options.sourcesRoot, redirectedModuleId + '.d.ts');
if (fs.existsSync(dts_filename)) {
const dts_filecontents = fs.readFileSync(dts_filename).toString();
FILES[`${moduleId}.d.ts`] = dts_filecontents;
continue;
}
- const js_filename = path.join(options.sourcesRoot, moduleId + '.js');
+ const js_filename = path.join(options.sourcesRoot, redirectedModuleId + '.js');
if (fs.existsSync(js_filename)) {
// This is an import for a .js file, so ignore it...
continue;
}
- let ts_filename;
- if (options.redirects[moduleId]) {
- ts_filename = path.join(options.sourcesRoot, options.redirects[moduleId] + '.ts');
- }
- else {
- ts_filename = path.join(options.sourcesRoot, moduleId + '.ts');
- }
+ const ts_filename = path.join(options.sourcesRoot, redirectedModuleId + '.ts');
const ts_filecontents = fs.readFileSync(ts_filename).toString();
const info = ts.preProcessFile(ts_filecontents);
for (let i = info.importedFiles.length - 1; i >= 0; i--) {
const importedFileName = info.importedFiles[i].fileName;
if (options.importIgnorePattern.test(importedFileName)) {
- // Ignore vs/css! imports
+ // Ignore *.css imports
continue;
}
let importedModuleId = importedFileName;
if (/(^\.\/)|(^\.\.\/)/.test(importedModuleId)) {
importedModuleId = path.join(path.dirname(moduleId), importedModuleId);
+ if (importedModuleId.endsWith('.js')) { // ESM: code imports require to be relative and have a '.js' file extension
+ importedModuleId = importedModuleId.substr(0, importedModuleId.length - 3);
+ }
}
enqueue(importedModuleId);
}
@@ -455,6 +456,9 @@ function markNodes(ts, languageService, options) {
const nodeSourceFile = node.getSourceFile();
let fullPath;
if (/(^\.\/)|(^\.\.\/)/.test(importText)) {
+ if (importText.endsWith('.js')) { // ESM: code imports require to be relative and to have a '.js' file extension
+ importText = importText.substr(0, importText.length - 3);
+ }
fullPath = path.join(path.dirname(nodeSourceFile.fileName), importText) + '.ts';
}
else {
diff --git a/build/lib/treeshaking.ts b/build/lib/treeshaking.ts
index 020e567eb72..cd17c5f0278 100644
--- a/build/lib/treeshaking.ts
+++ b/build/lib/treeshaking.ts
@@ -53,7 +53,7 @@ export interface ITreeShakingOptions {
*/
shakeLevel: ShakeLevel;
/**
- * regex pattern to ignore certain imports e.g. `vs/css!` imports
+ * regex pattern to ignore certain imports e.g. `.css` imports
*/
importIgnorePattern: RegExp;
@@ -155,38 +155,43 @@ function discoverAndReadFiles(ts: typeof import('typescript'), options: ITreeSha
while (queue.length > 0) {
const moduleId = queue.shift()!;
- const dts_filename = path.join(options.sourcesRoot, moduleId + '.d.ts');
+ let redirectedModuleId: string = moduleId;
+ if (options.redirects[moduleId]) {
+ redirectedModuleId = options.redirects[moduleId];
+ }
+
+ const dts_filename = path.join(options.sourcesRoot, redirectedModuleId + '.d.ts');
if (fs.existsSync(dts_filename)) {
const dts_filecontents = fs.readFileSync(dts_filename).toString();
FILES[`${moduleId}.d.ts`] = dts_filecontents;
continue;
}
- const js_filename = path.join(options.sourcesRoot, moduleId + '.js');
+
+ const js_filename = path.join(options.sourcesRoot, redirectedModuleId + '.js');
if (fs.existsSync(js_filename)) {
// This is an import for a .js file, so ignore it...
continue;
}
- let ts_filename: string;
- if (options.redirects[moduleId]) {
- ts_filename = path.join(options.sourcesRoot, options.redirects[moduleId] + '.ts');
- } else {
- ts_filename = path.join(options.sourcesRoot, moduleId + '.ts');
- }
+ const ts_filename = path.join(options.sourcesRoot, redirectedModuleId + '.ts');
+
const ts_filecontents = fs.readFileSync(ts_filename).toString();
const info = ts.preProcessFile(ts_filecontents);
for (let i = info.importedFiles.length - 1; i >= 0; i--) {
const importedFileName = info.importedFiles[i].fileName;
if (options.importIgnorePattern.test(importedFileName)) {
- // Ignore vs/css! imports
+ // Ignore *.css imports
continue;
}
let importedModuleId = importedFileName;
if (/(^\.\/)|(^\.\.\/)/.test(importedModuleId)) {
importedModuleId = path.join(path.dirname(moduleId), importedModuleId);
+ if (importedModuleId.endsWith('.js')) { // ESM: code imports require to be relative and have a '.js' file extension
+ importedModuleId = importedModuleId.substr(0, importedModuleId.length - 3);
+ }
}
enqueue(importedModuleId);
}
@@ -565,6 +570,9 @@ function markNodes(ts: typeof import('typescript'), languageService: ts.Language
const nodeSourceFile = node.getSourceFile();
let fullPath: string;
if (/(^\.\/)|(^\.\.\/)/.test(importText)) {
+ if (importText.endsWith('.js')) { // ESM: code imports require to be relative and to have a '.js' file extension
+ importText = importText.substr(0, importText.length - 3);
+ }
fullPath = path.join(path.dirname(nodeSourceFile.fileName), importText) + '.ts';
} else {
fullPath = importText + '.ts';
diff --git a/build/lib/tsb/builder.js b/build/lib/tsb/builder.js
index fc74bfa8acc..cee2758e896 100644
--- a/build/lib/tsb/builder.js
+++ b/build/lib/tsb/builder.js
@@ -355,7 +355,7 @@ function createTypeScriptBuilder(config, projectFile, cmd) {
// print stats
const headNow = process.memoryUsage().heapUsed;
const MB = 1024 * 1024;
- _log('[tsb]', `time: ${colors.yellow((Date.now() - t1) + 'ms')} + \nmem: ${colors.cyan(Math.ceil(headNow / MB) + 'MB')} ${colors.bgCyan('delta: ' + Math.ceil((headNow - headUsed) / MB))}`);
+ _log('[tsb]', `time: ${colors.yellow((Date.now() - t1) + 'ms')} + \nmem: ${colors.cyan(Math.ceil(headNow / MB) + 'MB')} ${colors.bgcyan('delta: ' + Math.ceil((headNow - headUsed) / MB))}`);
headUsed = headNow;
});
}
@@ -550,7 +550,10 @@ class LanguageServiceHost {
let found = false;
while (!found && dirname.indexOf(stopDirname) === 0) {
dirname = path.dirname(dirname);
- const resolvedPath = path.resolve(dirname, ref.fileName);
+ let resolvedPath = path.resolve(dirname, ref.fileName);
+ if (resolvedPath.endsWith('.js')) {
+ resolvedPath = resolvedPath.slice(0, -3);
+ }
const normalizedPath = normalize(resolvedPath);
if (this.getScriptSnapshot(normalizedPath + '.ts')) {
this._dependencies.inertEdge(filename, normalizedPath + '.ts');
diff --git a/build/lib/tsb/builder.ts b/build/lib/tsb/builder.ts
index 9fc476ae702..70c71591a6e 100644
--- a/build/lib/tsb/builder.ts
+++ b/build/lib/tsb/builder.ts
@@ -427,7 +427,7 @@ export function createTypeScriptBuilder(config: IConfiguration, projectFile: str
const MB = 1024 * 1024;
_log(
'[tsb]',
- `time: ${colors.yellow((Date.now() - t1) + 'ms')} + \nmem: ${colors.cyan(Math.ceil(headNow / MB) + 'MB')} ${colors.bgCyan('delta: ' + Math.ceil((headNow - headUsed) / MB))}`
+ `time: ${colors.yellow((Date.now() - t1) + 'ms')} + \nmem: ${colors.cyan(Math.ceil(headNow / MB) + 'MB')} ${colors.bgcyan('delta: ' + Math.ceil((headNow - headUsed) / MB))}`
);
headUsed = headNow;
});
@@ -660,7 +660,10 @@ class LanguageServiceHost implements ts.LanguageServiceHost {
while (!found && dirname.indexOf(stopDirname) === 0) {
dirname = path.dirname(dirname);
- const resolvedPath = path.resolve(dirname, ref.fileName);
+ let resolvedPath = path.resolve(dirname, ref.fileName);
+ if (resolvedPath.endsWith('.js')) {
+ resolvedPath = resolvedPath.slice(0, -3);
+ }
const normalizedPath = normalize(resolvedPath);
if (this.getScriptSnapshot(normalizedPath + '.ts')) {
diff --git a/build/lib/util.js b/build/lib/util.js
index 02ce049b00b..09df0e69e3f 100644
--- a/build/lib/util.js
+++ b/build/lib/util.js
@@ -315,9 +315,9 @@ function streamToPromise(stream) {
});
}
function getElectronVersion() {
- const yarnrc = fs.readFileSync(path.join(root, '.yarnrc'), 'utf8');
- const electronVersion = /^target "(.*)"$/m.exec(yarnrc)[1];
- const msBuildId = /^ms_build_id "(.*)"$/m.exec(yarnrc)[1];
+ const npmrc = fs.readFileSync(path.join(root, '.npmrc'), 'utf8');
+ const electronVersion = /^target="(.*)"$/m.exec(npmrc)[1];
+ const msBuildId = /^ms_build_id="(.*)"$/m.exec(npmrc)[1];
return { electronVersion, msBuildId };
}
function acquireWebNodePaths() {
diff --git a/build/lib/util.ts b/build/lib/util.ts
index 6648ce42364..4cbe8f552ce 100644
--- a/build/lib/util.ts
+++ b/build/lib/util.ts
@@ -385,9 +385,9 @@ export function streamToPromise(stream: NodeJS.ReadWriteStream): Promise {
}
export function getElectronVersion(): Record {
- const yarnrc = fs.readFileSync(path.join(root, '.yarnrc'), 'utf8');
- const electronVersion = /^target "(.*)"$/m.exec(yarnrc)![1];
- const msBuildId = /^ms_build_id "(.*)"$/m.exec(yarnrc)![1];
+ const npmrc = fs.readFileSync(path.join(root, '.npmrc'), 'utf8');
+ const electronVersion = /^target="(.*)"$/m.exec(npmrc)![1];
+ const msBuildId = /^ms_build_id="(.*)"$/m.exec(npmrc)![1];
return { electronVersion, msBuildId };
}
diff --git a/build/linux/debian/dep-lists.js b/build/linux/debian/dep-lists.js
index d843c090063..3bb58fb1215 100644
--- a/build/linux/debian/dep-lists.js
+++ b/build/linux/debian/dep-lists.js
@@ -31,6 +31,7 @@ exports.referenceGeneratedDepsByArch = {
'libc6 (>= 2.16)',
'libc6 (>= 2.17)',
'libc6 (>= 2.2.5)',
+ 'libc6 (>= 2.25)',
'libc6 (>= 2.28)',
'libcairo2 (>= 1.6.0)',
'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
@@ -39,10 +40,8 @@ exports.referenceGeneratedDepsByArch = {
'libexpat1 (>= 2.1~beta3)',
'libgbm1 (>= 17.1.0~rc2)',
'libglib2.0-0 (>= 2.37.3)',
- 'libgssapi-krb5-2 (>= 1.17)',
'libgtk-3-0 (>= 3.9.10)',
'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
- 'libkrb5-3 (>= 1.6.dfsg.2)',
'libnspr4 (>= 2:4.9-2~)',
'libnss3 (>= 2:3.30)',
'libnss3 (>= 3.26)',
@@ -67,6 +66,7 @@ exports.referenceGeneratedDepsByArch = {
'libatspi2.0-0 (>= 2.9.90)',
'libc6 (>= 2.16)',
'libc6 (>= 2.17)',
+ 'libc6 (>= 2.25)',
'libc6 (>= 2.28)',
'libc6 (>= 2.4)',
'libc6 (>= 2.9)',
@@ -77,10 +77,8 @@ exports.referenceGeneratedDepsByArch = {
'libexpat1 (>= 2.1~beta3)',
'libgbm1 (>= 17.1.0~rc2)',
'libglib2.0-0 (>= 2.37.3)',
- 'libgssapi-krb5-2 (>= 1.17)',
'libgtk-3-0 (>= 3.9.10)',
'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
- 'libkrb5-3 (>= 1.6.dfsg.2)',
'libnspr4 (>= 2:4.9-2~)',
'libnss3 (>= 2:3.30)',
'libnss3 (>= 3.26)',
@@ -108,6 +106,7 @@ exports.referenceGeneratedDepsByArch = {
'libatk1.0-0 (>= 2.2.0)',
'libatspi2.0-0 (>= 2.9.90)',
'libc6 (>= 2.17)',
+ 'libc6 (>= 2.25)',
'libc6 (>= 2.28)',
'libcairo2 (>= 1.6.0)',
'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
@@ -116,10 +115,8 @@ exports.referenceGeneratedDepsByArch = {
'libexpat1 (>= 2.1~beta3)',
'libgbm1 (>= 17.1.0~rc2)',
'libglib2.0-0 (>= 2.37.3)',
- 'libgssapi-krb5-2 (>= 1.17)',
'libgtk-3-0 (>= 3.9.10)',
'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
- 'libkrb5-3 (>= 1.6.dfsg.2)',
'libnspr4 (>= 2:4.9-2~)',
'libnss3 (>= 2:3.30)',
'libnss3 (>= 3.26)',
diff --git a/build/linux/debian/dep-lists.ts b/build/linux/debian/dep-lists.ts
index 4028370cd02..e3d78d1139a 100644
--- a/build/linux/debian/dep-lists.ts
+++ b/build/linux/debian/dep-lists.ts
@@ -31,6 +31,7 @@ export const referenceGeneratedDepsByArch = {
'libc6 (>= 2.16)',
'libc6 (>= 2.17)',
'libc6 (>= 2.2.5)',
+ 'libc6 (>= 2.25)',
'libc6 (>= 2.28)',
'libcairo2 (>= 1.6.0)',
'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
@@ -39,10 +40,8 @@ export const referenceGeneratedDepsByArch = {
'libexpat1 (>= 2.1~beta3)',
'libgbm1 (>= 17.1.0~rc2)',
'libglib2.0-0 (>= 2.37.3)',
- 'libgssapi-krb5-2 (>= 1.17)',
'libgtk-3-0 (>= 3.9.10)',
'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
- 'libkrb5-3 (>= 1.6.dfsg.2)',
'libnspr4 (>= 2:4.9-2~)',
'libnss3 (>= 2:3.30)',
'libnss3 (>= 3.26)',
@@ -67,6 +66,7 @@ export const referenceGeneratedDepsByArch = {
'libatspi2.0-0 (>= 2.9.90)',
'libc6 (>= 2.16)',
'libc6 (>= 2.17)',
+ 'libc6 (>= 2.25)',
'libc6 (>= 2.28)',
'libc6 (>= 2.4)',
'libc6 (>= 2.9)',
@@ -77,10 +77,8 @@ export const referenceGeneratedDepsByArch = {
'libexpat1 (>= 2.1~beta3)',
'libgbm1 (>= 17.1.0~rc2)',
'libglib2.0-0 (>= 2.37.3)',
- 'libgssapi-krb5-2 (>= 1.17)',
'libgtk-3-0 (>= 3.9.10)',
'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
- 'libkrb5-3 (>= 1.6.dfsg.2)',
'libnspr4 (>= 2:4.9-2~)',
'libnss3 (>= 2:3.30)',
'libnss3 (>= 3.26)',
@@ -108,6 +106,7 @@ export const referenceGeneratedDepsByArch = {
'libatk1.0-0 (>= 2.2.0)',
'libatspi2.0-0 (>= 2.9.90)',
'libc6 (>= 2.17)',
+ 'libc6 (>= 2.25)',
'libc6 (>= 2.28)',
'libcairo2 (>= 1.6.0)',
'libcurl3-gnutls | libcurl3-nss | libcurl4 | libcurl3',
@@ -116,10 +115,8 @@ export const referenceGeneratedDepsByArch = {
'libexpat1 (>= 2.1~beta3)',
'libgbm1 (>= 17.1.0~rc2)',
'libglib2.0-0 (>= 2.37.3)',
- 'libgssapi-krb5-2 (>= 1.17)',
'libgtk-3-0 (>= 3.9.10)',
'libgtk-3-0 (>= 3.9.10) | libgtk-4-1',
- 'libkrb5-3 (>= 1.6.dfsg.2)',
'libnspr4 (>= 2:4.9-2~)',
'libnss3 (>= 2:3.30)',
'libnss3 (>= 3.26)',
diff --git a/build/linux/debian/install-sysroot.js b/build/linux/debian/install-sysroot.js
index feca7d3fa9d..77ff92151e8 100644
--- a/build/linux/debian/install-sysroot.js
+++ b/build/linux/debian/install-sysroot.js
@@ -29,9 +29,9 @@ const ghDownloadHeaders = {
Accept: 'application/octet-stream',
};
function getElectronVersion() {
- const yarnrc = fs.readFileSync(path.join(REPO_ROOT, '.yarnrc'), 'utf8');
- const electronVersion = /^target "(.*)"$/m.exec(yarnrc)[1];
- const msBuildId = /^ms_build_id "(.*)"$/m.exec(yarnrc)[1];
+ const npmrc = fs.readFileSync(path.join(REPO_ROOT, '.npmrc'), 'utf8');
+ const electronVersion = /^target="(.*)"$/m.exec(npmrc)[1];
+ const msBuildId = /^ms_build_id="(.*)"$/m.exec(npmrc)[1];
return { electronVersion, msBuildId };
}
function getSha(filename) {
diff --git a/build/linux/debian/install-sysroot.ts b/build/linux/debian/install-sysroot.ts
index aa417dcc722..76a31d63cdb 100644
--- a/build/linux/debian/install-sysroot.ts
+++ b/build/linux/debian/install-sysroot.ts
@@ -38,9 +38,9 @@ interface IFetchOptions {
}
function getElectronVersion(): Record {
- const yarnrc = fs.readFileSync(path.join(REPO_ROOT, '.yarnrc'), 'utf8');
- const electronVersion = /^target "(.*)"$/m.exec(yarnrc)![1];
- const msBuildId = /^ms_build_id "(.*)"$/m.exec(yarnrc)![1];
+ const npmrc = fs.readFileSync(path.join(REPO_ROOT, '.npmrc'), 'utf8');
+ const electronVersion = /^target="(.*)"$/m.exec(npmrc)![1];
+ const msBuildId = /^ms_build_id="(.*)"$/m.exec(npmrc)![1];
return { electronVersion, msBuildId };
}
diff --git a/build/linux/dependencies-generator.js b/build/linux/dependencies-generator.js
index 0e7953b8e89..99453bc588b 100644
--- a/build/linux/dependencies-generator.js
+++ b/build/linux/dependencies-generator.js
@@ -15,6 +15,7 @@ const dep_lists_2 = require("./rpm/dep-lists");
const types_1 = require("./debian/types");
const types_2 = require("./rpm/types");
const product = require("../../product.json");
+const amd_1 = require("../lib/amd");
// A flag that can easily be toggled.
// Make sure to compile the build directory after toggling the value.
// If false, we warn about new dependencies if they show up
@@ -23,7 +24,7 @@ const product = require("../../product.json");
// The reference dependencies, which one has to update when the new dependencies
// are valid, are in dep-lists.ts
const FAIL_BUILD_FOR_NEW_DEPENDENCIES = true;
-// Based on https://source.chromium.org/chromium/chromium/src/+/refs/tags/122.0.6261.156:chrome/installer/linux/BUILD.gn;l=64-80
+// Based on https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.243:chrome/installer/linux/BUILD.gn;l=64-80
// and the Linux Archive build
// Shared library dependencies that we already bundle.
const bundledDeps = [
@@ -43,7 +44,8 @@ async function getDependencies(packageType, buildDir, applicationName, arch) {
throw new Error('Invalid RPM arch string ' + arch);
}
// Get the files for which we want to find dependencies.
- const nativeModulesPath = path.join(buildDir, 'resources', 'app', 'node_modules.asar.unpacked');
+ const canAsar = (0, amd_1.isAMD)(); // TODO@esm ASAR disabled in ESM
+ const nativeModulesPath = path.join(buildDir, 'resources', 'app', canAsar ? 'node_modules.asar.unpacked' : 'node_modules');
const findResult = (0, child_process_1.spawnSync)('find', [nativeModulesPath, '-name', '*.node']);
if (findResult.status) {
console.error('Error finding files:');
diff --git a/build/linux/dependencies-generator.ts b/build/linux/dependencies-generator.ts
index 226310e1258..d390818dc54 100644
--- a/build/linux/dependencies-generator.ts
+++ b/build/linux/dependencies-generator.ts
@@ -15,6 +15,7 @@ import { referenceGeneratedDepsByArch as rpmGeneratedDeps } from './rpm/dep-list
import { DebianArchString, isDebianArchString } from './debian/types';
import { isRpmArchString, RpmArchString } from './rpm/types';
import product = require('../../product.json');
+import { isAMD } from '../lib/amd';
// A flag that can easily be toggled.
// Make sure to compile the build directory after toggling the value.
@@ -25,7 +26,7 @@ import product = require('../../product.json');
// are valid, are in dep-lists.ts
const FAIL_BUILD_FOR_NEW_DEPENDENCIES: boolean = true;
-// Based on https://source.chromium.org/chromium/chromium/src/+/refs/tags/122.0.6261.156:chrome/installer/linux/BUILD.gn;l=64-80
+// Based on https://source.chromium.org/chromium/chromium/src/+/refs/tags/124.0.6367.243:chrome/installer/linux/BUILD.gn;l=64-80
// and the Linux Archive build
// Shared library dependencies that we already bundle.
const bundledDeps = [
@@ -47,7 +48,8 @@ export async function getDependencies(packageType: 'deb' | 'rpm', buildDir: stri
}
// Get the files for which we want to find dependencies.
- const nativeModulesPath = path.join(buildDir, 'resources', 'app', 'node_modules.asar.unpacked');
+ const canAsar = isAMD(); // TODO@esm ASAR disabled in ESM
+ const nativeModulesPath = path.join(buildDir, 'resources', 'app', canAsar ? 'node_modules.asar.unpacked' : 'node_modules');
const findResult = spawnSync('find', [nativeModulesPath, '-name', '*.node']);
if (findResult.status) {
console.error('Error finding files:');
diff --git a/build/linux/rpm/dep-lists.js b/build/linux/rpm/dep-lists.js
index 8be477290bb..fa393808c53 100644
--- a/build/linux/rpm/dep-lists.js
+++ b/build/linux/rpm/dep-lists.js
@@ -45,12 +45,14 @@ exports.referenceGeneratedDepsByArch = {
'libc.so.6(GLIBC_2.17)(64bit)',
'libc.so.6(GLIBC_2.18)(64bit)',
'libc.so.6(GLIBC_2.2.5)(64bit)',
+ 'libc.so.6(GLIBC_2.25)(64bit)',
'libc.so.6(GLIBC_2.28)(64bit)',
'libc.so.6(GLIBC_2.3)(64bit)',
'libc.so.6(GLIBC_2.3.2)(64bit)',
'libc.so.6(GLIBC_2.3.3)(64bit)',
'libc.so.6(GLIBC_2.3.4)(64bit)',
'libc.so.6(GLIBC_2.4)(64bit)',
+ 'libc.so.6(GLIBC_2.5)(64bit)',
'libc.so.6(GLIBC_2.6)(64bit)',
'libc.so.6(GLIBC_2.7)(64bit)',
'libc.so.6(GLIBC_2.8)(64bit)',
@@ -71,11 +73,7 @@ exports.referenceGeneratedDepsByArch = {
'libgio-2.0.so.0()(64bit)',
'libglib-2.0.so.0()(64bit)',
'libgobject-2.0.so.0()(64bit)',
- 'libgssapi_krb5.so.2()(64bit)',
- 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)',
'libgtk-3.so.0()(64bit)',
- 'libkrb5.so.3()(64bit)',
- 'libkrb5.so.3(krb5_3_MIT)(64bit)',
'libm.so.6()(64bit)',
'libm.so.6(GLIBC_2.2.5)(64bit)',
'libnspr4.so()(64bit)',
@@ -140,8 +138,10 @@ exports.referenceGeneratedDepsByArch = {
'libc.so.6(GLIBC_2.16)',
'libc.so.6(GLIBC_2.17)',
'libc.so.6(GLIBC_2.18)',
+ 'libc.so.6(GLIBC_2.25)',
'libc.so.6(GLIBC_2.28)',
'libc.so.6(GLIBC_2.4)',
+ 'libc.so.6(GLIBC_2.5)',
'libc.so.6(GLIBC_2.6)',
'libc.so.6(GLIBC_2.7)',
'libc.so.6(GLIBC_2.8)',
@@ -162,12 +162,8 @@ exports.referenceGeneratedDepsByArch = {
'libgio-2.0.so.0',
'libglib-2.0.so.0',
'libgobject-2.0.so.0',
- 'libgssapi_krb5.so.2',
- 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)',
'libgtk-3.so.0',
'libgtk-3.so.0()(64bit)',
- 'libkrb5.so.3',
- 'libkrb5.so.3(krb5_3_MIT)',
'libm.so.6',
'libm.so.6(GLIBC_2.4)',
'libnspr4.so',
@@ -241,6 +237,7 @@ exports.referenceGeneratedDepsByArch = {
'libc.so.6()(64bit)',
'libc.so.6(GLIBC_2.17)(64bit)',
'libc.so.6(GLIBC_2.18)(64bit)',
+ 'libc.so.6(GLIBC_2.25)(64bit)',
'libc.so.6(GLIBC_2.28)(64bit)',
'libcairo.so.2()(64bit)',
'libcurl.so.4()(64bit)',
@@ -259,11 +256,7 @@ exports.referenceGeneratedDepsByArch = {
'libgio-2.0.so.0()(64bit)',
'libglib-2.0.so.0()(64bit)',
'libgobject-2.0.so.0()(64bit)',
- 'libgssapi_krb5.so.2()(64bit)',
- 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)',
'libgtk-3.so.0()(64bit)',
- 'libkrb5.so.3()(64bit)',
- 'libkrb5.so.3(krb5_3_MIT)(64bit)',
'libm.so.6()(64bit)',
'libm.so.6(GLIBC_2.17)(64bit)',
'libnspr4.so()(64bit)',
diff --git a/build/linux/rpm/dep-lists.ts b/build/linux/rpm/dep-lists.ts
index 24b18d504c8..9eed3a79f7e 100644
--- a/build/linux/rpm/dep-lists.ts
+++ b/build/linux/rpm/dep-lists.ts
@@ -44,12 +44,14 @@ export const referenceGeneratedDepsByArch = {
'libc.so.6(GLIBC_2.17)(64bit)',
'libc.so.6(GLIBC_2.18)(64bit)',
'libc.so.6(GLIBC_2.2.5)(64bit)',
+ 'libc.so.6(GLIBC_2.25)(64bit)',
'libc.so.6(GLIBC_2.28)(64bit)',
'libc.so.6(GLIBC_2.3)(64bit)',
'libc.so.6(GLIBC_2.3.2)(64bit)',
'libc.so.6(GLIBC_2.3.3)(64bit)',
'libc.so.6(GLIBC_2.3.4)(64bit)',
'libc.so.6(GLIBC_2.4)(64bit)',
+ 'libc.so.6(GLIBC_2.5)(64bit)',
'libc.so.6(GLIBC_2.6)(64bit)',
'libc.so.6(GLIBC_2.7)(64bit)',
'libc.so.6(GLIBC_2.8)(64bit)',
@@ -70,11 +72,7 @@ export const referenceGeneratedDepsByArch = {
'libgio-2.0.so.0()(64bit)',
'libglib-2.0.so.0()(64bit)',
'libgobject-2.0.so.0()(64bit)',
- 'libgssapi_krb5.so.2()(64bit)',
- 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)',
'libgtk-3.so.0()(64bit)',
- 'libkrb5.so.3()(64bit)',
- 'libkrb5.so.3(krb5_3_MIT)(64bit)',
'libm.so.6()(64bit)',
'libm.so.6(GLIBC_2.2.5)(64bit)',
'libnspr4.so()(64bit)',
@@ -139,8 +137,10 @@ export const referenceGeneratedDepsByArch = {
'libc.so.6(GLIBC_2.16)',
'libc.so.6(GLIBC_2.17)',
'libc.so.6(GLIBC_2.18)',
+ 'libc.so.6(GLIBC_2.25)',
'libc.so.6(GLIBC_2.28)',
'libc.so.6(GLIBC_2.4)',
+ 'libc.so.6(GLIBC_2.5)',
'libc.so.6(GLIBC_2.6)',
'libc.so.6(GLIBC_2.7)',
'libc.so.6(GLIBC_2.8)',
@@ -161,12 +161,8 @@ export const referenceGeneratedDepsByArch = {
'libgio-2.0.so.0',
'libglib-2.0.so.0',
'libgobject-2.0.so.0',
- 'libgssapi_krb5.so.2',
- 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)',
'libgtk-3.so.0',
'libgtk-3.so.0()(64bit)',
- 'libkrb5.so.3',
- 'libkrb5.so.3(krb5_3_MIT)',
'libm.so.6',
'libm.so.6(GLIBC_2.4)',
'libnspr4.so',
@@ -240,6 +236,7 @@ export const referenceGeneratedDepsByArch = {
'libc.so.6()(64bit)',
'libc.so.6(GLIBC_2.17)(64bit)',
'libc.so.6(GLIBC_2.18)(64bit)',
+ 'libc.so.6(GLIBC_2.25)(64bit)',
'libc.so.6(GLIBC_2.28)(64bit)',
'libcairo.so.2()(64bit)',
'libcurl.so.4()(64bit)',
@@ -258,11 +255,7 @@ export const referenceGeneratedDepsByArch = {
'libgio-2.0.so.0()(64bit)',
'libglib-2.0.so.0()(64bit)',
'libgobject-2.0.so.0()(64bit)',
- 'libgssapi_krb5.so.2()(64bit)',
- 'libgssapi_krb5.so.2(gssapi_krb5_2_MIT)(64bit)',
'libgtk-3.so.0()(64bit)',
- 'libkrb5.so.3()(64bit)',
- 'libkrb5.so.3(krb5_3_MIT)(64bit)',
'libm.so.6()(64bit)',
'libm.so.6(GLIBC_2.17)(64bit)',
'libnspr4.so()(64bit)',
diff --git a/build/loader.min b/build/loader.min
new file mode 100644
index 00000000000..f9d21b58282
--- /dev/null
+++ b/build/loader.min
@@ -0,0 +1,10 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+"use strict";const _amdLoaderGlobal=this,_commonjsGlobal=typeof global=="object"?global:{};var AMDLoader;(function(d){d.global=_amdLoaderGlobal;class _{get isWindows(){return this._detect(),this._isWindows}get isNode(){return this._detect(),this._isNode}get isElectronRenderer(){return this._detect(),this._isElectronRenderer}get isWebWorker(){return this._detect(),this._isWebWorker}get isElectronNodeIntegrationWebWorker(){return this._detect(),this._isElectronNodeIntegrationWebWorker}constructor(){this._detected=!1,this._isWindows=!1,this._isNode=!1,this._isElectronRenderer=!1,this._isWebWorker=!1,this._isElectronNodeIntegrationWebWorker=!1}_detect(){this._detected||(this._detected=!0,this._isWindows=_._isWindows(),this._isNode=typeof module<"u"&&!!module.exports,this._isElectronRenderer=typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.electron<"u"&&process.type==="renderer",this._isWebWorker=typeof d.global.importScripts=="function",this._isElectronNodeIntegrationWebWorker=this._isWebWorker&&typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.electron<"u"&&process.type==="worker")}static _isWindows(){return typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.indexOf("Windows")>=0?!0:typeof process<"u"?process.platform==="win32":!1}}d.Environment=_})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(d){class _{constructor(n,c,a){this.type=n,this.detail=c,this.timestamp=a}}d.LoaderEvent=_;class v{constructor(n){this._events=[new _(1,"",n)]}record(n,c){this._events.push(new _(n,c,d.Utilities.getHighPerformanceTimestamp()))}getEvents(){return this._events}}d.LoaderEventRecorder=v;class f{record(n,c){}getEvents(){return[]}}f.INSTANCE=new f,d.NullLoaderEventRecorder=f})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(d){class _{static fileUriToFilePath(f,h){if(h=decodeURI(h).replace(/%23/g,"#"),f){if(/^file:\/\/\//.test(h))return h.substr(8);if(/^file:\/\//.test(h))return h.substr(5)}else if(/^file:\/\//.test(h))return h.substr(7);return h}static startsWith(f,h){return f.length>=h.length&&f.substr(0,h.length)===h}static endsWith(f,h){return f.length>=h.length&&f.substr(f.length-h.length)===h}static containsQueryString(f){return/^[^\#]*\?/gi.test(f)}static isAbsolutePath(f){return/^((http:\/\/)|(https:\/\/)|(file:\/\/)|(\/))/.test(f)}static forEachProperty(f,h){if(f){let n;for(n in f)f.hasOwnProperty(n)&&h(n,f[n])}}static isEmpty(f){let h=!0;return _.forEachProperty(f,()=>{h=!1}),h}static recursiveClone(f){if(!f||typeof f!="object"||f instanceof RegExp||!Array.isArray(f)&&Object.getPrototypeOf(f)!==Object.prototype)return f;let h=Array.isArray(f)?[]:{};return _.forEachProperty(f,(n,c)=>{c&&typeof c=="object"?h[n]=_.recursiveClone(c):h[n]=c}),h}static generateAnonymousModule(){return"===anonymous"+_.NEXT_ANONYMOUS_ID+++"==="}static isAnonymousModule(f){return _.startsWith(f,"===anonymous")}static getHighPerformanceTimestamp(){return this.PERFORMANCE_NOW_PROBED||(this.PERFORMANCE_NOW_PROBED=!0,this.HAS_PERFORMANCE_NOW=d.global.performance&&typeof d.global.performance.now=="function"),this.HAS_PERFORMANCE_NOW?d.global.performance.now():Date.now()}}_.NEXT_ANONYMOUS_ID=1,_.PERFORMANCE_NOW_PROBED=!1,_.HAS_PERFORMANCE_NOW=!1,d.Utilities=_})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(d){function _(h){if(h instanceof Error)return h;const n=new Error(h.message||String(h)||"Unknown Error");return h.stack&&(n.stack=h.stack),n}d.ensureError=_;class v{static validateConfigurationOptions(n){function c(a){if(a.phase==="loading"){console.error('Loading "'+a.moduleId+'" failed'),console.error(a),console.error("Here are the modules that depend on it:"),console.error(a.neededBy);return}if(a.phase==="factory"){console.error('The factory function of "'+a.moduleId+'" has thrown an exception'),console.error(a),console.error("Here are the modules that depend on it:"),console.error(a.neededBy);return}}if(n=n||{},typeof n.baseUrl!="string"&&(n.baseUrl=""),typeof n.isBuild!="boolean"&&(n.isBuild=!1),typeof n.paths!="object"&&(n.paths={}),typeof n.config!="object"&&(n.config={}),typeof n.catchError>"u"&&(n.catchError=!1),typeof n.recordStats>"u"&&(n.recordStats=!1),typeof n.urlArgs!="string"&&(n.urlArgs=""),typeof n.onError!="function"&&(n.onError=c),Array.isArray(n.ignoreDuplicateModules)||(n.ignoreDuplicateModules=[]),n.baseUrl.length>0&&(d.Utilities.endsWith(n.baseUrl,"/")||(n.baseUrl+="/")),typeof n.cspNonce!="string"&&(n.cspNonce=""),typeof n.preferScriptTags>"u"&&(n.preferScriptTags=!1),n.nodeCachedData&&typeof n.nodeCachedData=="object"&&(typeof n.nodeCachedData.seed!="string"&&(n.nodeCachedData.seed="seed"),(typeof n.nodeCachedData.writeDelay!="number"||n.nodeCachedData.writeDelay<0)&&(n.nodeCachedData.writeDelay=1e3*7),!n.nodeCachedData.path||typeof n.nodeCachedData.path!="string")){const a=_(new Error("INVALID cached data configuration, 'path' MUST be set"));a.phase="configuration",n.onError(a),n.nodeCachedData=void 0}return n}static mergeConfigurationOptions(n=null,c=null){let a=d.Utilities.recursiveClone(c||{});return d.Utilities.forEachProperty(n,(t,e)=>{t==="ignoreDuplicateModules"&&typeof a.ignoreDuplicateModules<"u"?a.ignoreDuplicateModules=a.ignoreDuplicateModules.concat(e):t==="paths"&&typeof a.paths<"u"?d.Utilities.forEachProperty(e,(i,s)=>a.paths[i]=s):t==="config"&&typeof a.config<"u"?d.Utilities.forEachProperty(e,(i,s)=>a.config[i]=s):a[t]=d.Utilities.recursiveClone(e)}),v.validateConfigurationOptions(a)}}d.ConfigurationOptionsUtil=v;class f{constructor(n,c){if(this._env=n,this.options=v.mergeConfigurationOptions(c),this._createIgnoreDuplicateModulesMap(),this._createSortedPathsRules(),this.options.baseUrl===""&&this.options.nodeRequire&&this.options.nodeRequire.main&&this.options.nodeRequire.main.filename&&this._env.isNode){let a=this.options.nodeRequire.main.filename,t=Math.max(a.lastIndexOf("/"),a.lastIndexOf("\\"));this.options.baseUrl=a.substring(0,t+1)}}_createIgnoreDuplicateModulesMap(){this.ignoreDuplicateModulesMap={};for(let n=0;n{Array.isArray(c)?this.sortedPathsRules.push({from:n,to:c}):this.sortedPathsRules.push({from:n,to:[c]})}),this.sortedPathsRules.sort((n,c)=>c.from.length-n.from.length)}cloneAndMerge(n){return new f(this._env,v.mergeConfigurationOptions(n,this.options))}getOptionsLiteral(){return this.options}_applyPaths(n){let c;for(let a=0,t=this.sortedPathsRules.length;athis.triggerCallback(i),u=>this.triggerErrorback(i,u))}triggerCallback(e){let i=this._callbackMap[e];delete this._callbackMap[e];for(let s=0;s{e.removeEventListener("load",o),e.removeEventListener("error",u)},o=l=>{r(),i()},u=l=>{r(),s(l)};e.addEventListener("load",o),e.addEventListener("error",u)}load(e,i,s,r){if(/^node\|/.test(i)){let o=e.getConfig().getOptionsLiteral(),u=c(e.getRecorder(),o.nodeRequire||d.global.nodeRequire),l=i.split("|"),g=null;try{g=u(l[1])}catch(p){r(p);return}e.enqueueDefineAnonymousModule([],()=>g),s()}else{let o=document.createElement("script");o.setAttribute("async","async"),o.setAttribute("type","text/javascript"),this.attachListeners(o,s,r);const{trustedTypesPolicy:u}=e.getConfig().getOptionsLiteral();u&&(i=u.createScriptURL(i)),o.setAttribute("src",i);const{cspNonce:l}=e.getConfig().getOptionsLiteral();l&&o.setAttribute("nonce",l),document.getElementsByTagName("head")[0].appendChild(o)}}}function f(t){const{trustedTypesPolicy:e}=t.getConfig().getOptionsLiteral();try{return(e?self.eval(e.createScript("","true")):new Function("true")).call(self),!0}catch{return!1}}class h{constructor(){this._cachedCanUseEval=null}_canUseEval(e){return this._cachedCanUseEval===null&&(this._cachedCanUseEval=f(e)),this._cachedCanUseEval}load(e,i,s,r){if(/^node\|/.test(i)){const o=e.getConfig().getOptionsLiteral(),u=c(e.getRecorder(),o.nodeRequire||d.global.nodeRequire),l=i.split("|");let g=null;try{g=u(l[1])}catch(p){r(p);return}e.enqueueDefineAnonymousModule([],function(){return g}),s()}else{const{trustedTypesPolicy:o}=e.getConfig().getOptionsLiteral();if(!(/^((http:)|(https:)|(file:))/.test(i)&&i.substring(0,self.origin.length)!==self.origin)&&this._canUseEval(e)){fetch(i).then(l=>{if(l.status!==200)throw new Error(l.statusText);return l.text()}).then(l=>{l=`${l}
+//# sourceURL=${i}`,(o?self.eval(o.createScript("",l)):new Function(l)).call(self),s()}).then(void 0,r);return}try{o&&(i=o.createScriptURL(i)),importScripts(i),s()}catch(l){r(l)}}}}class n{constructor(e){this._env=e,this._didInitialize=!1,this._didPatchNodeRequire=!1}_init(e){this._didInitialize||(this._didInitialize=!0,this._fs=e("fs"),this._vm=e("vm"),this._path=e("path"),this._crypto=e("crypto"))}_initNodeRequire(e,i){const{nodeCachedData:s}=i.getConfig().getOptionsLiteral();if(!s||this._didPatchNodeRequire)return;this._didPatchNodeRequire=!0;const r=this,o=e("module");function u(l){const g=l.constructor;let p=function(y){try{return l.require(y)}finally{}};return p.resolve=function(y,E){return g._resolveFilename(y,l,!1,E)},p.resolve.paths=function(y){return g._resolveLookupPaths(y,l)},p.main=process.mainModule,p.extensions=g._extensions,p.cache=g._cache,p}o.prototype._compile=function(l,g){const p=o.wrap(l.replace(/^#!.*/,"")),m=i.getRecorder(),y=r._getCachedDataPath(s,g),E={filename:g};let R;try{const x=r._fs.readFileSync(y);R=x.slice(0,16),E.cachedData=x.slice(16),m.record(60,y)}catch{m.record(61,y)}const C=new r._vm.Script(p,E),I=C.runInThisContext(E),w=r._path.dirname(g),b=u(this),U=[this.exports,b,this,g,w,process,_commonjsGlobal,Buffer],P=I.apply(this.exports,U);return r._handleCachedData(C,p,y,!E.cachedData,i),r._verifyCachedData(C,p,y,R,i),P}}load(e,i,s,r){const o=e.getConfig().getOptionsLiteral(),u=c(e.getRecorder(),o.nodeRequire||d.global.nodeRequire),l=o.nodeInstrumenter||function(p){return p};this._init(u),this._initNodeRequire(u,e);let g=e.getRecorder();if(/^node\|/.test(i)){let p=i.split("|"),m=null;try{m=u(p[1])}catch(y){r(y);return}e.enqueueDefineAnonymousModule([],()=>m),s()}else{i=d.Utilities.fileUriToFilePath(this._env.isWindows,i);const p=this._path.normalize(i),m=this._getElectronRendererScriptPathOrUri(p),y=!!o.nodeCachedData,E=y?this._getCachedDataPath(o.nodeCachedData,i):void 0;this._readSourceAndCachedData(p,E,g,(R,C,I,w)=>{if(R){r(R);return}let b;C.charCodeAt(0)===n._BOM?b=n._PREFIX+C.substring(1)+n._SUFFIX:b=n._PREFIX+C+n._SUFFIX,b=l(b,p);const U={filename:m,cachedData:I},P=this._createAndEvalScript(e,b,U,s,r);this._handleCachedData(P,b,E,y&&!I,e),this._verifyCachedData(P,b,E,w,e)})}}_createAndEvalScript(e,i,s,r,o){const u=e.getRecorder();u.record(31,s.filename);const l=new this._vm.Script(i,s),g=l.runInThisContext(s),p=e.getGlobalAMDDefineFunc();let m=!1;const y=function(){return m=!0,p.apply(null,arguments)};return y.amd=p.amd,g.call(d.global,e.getGlobalAMDRequireFunc(),y,s.filename,this._path.dirname(s.filename)),u.record(32,s.filename),m?r():o(new Error(`Didn't receive define call in ${s.filename}!`)),l}_getElectronRendererScriptPathOrUri(e){if(!this._env.isElectronRenderer)return e;let i=e.match(/^([a-z])\:(.*)/i);return i?`file:///${(i[1].toUpperCase()+":"+i[2]).replace(/\\/g,"/")}`:`file://${e}`}_getCachedDataPath(e,i){const s=this._crypto.createHash("md5").update(i,"utf8").update(e.seed,"utf8").update(process.arch,"").digest("hex"),r=this._path.basename(i).replace(/\.js$/,"");return this._path.join(e.path,`${r}-${s}.code`)}_handleCachedData(e,i,s,r,o){e.cachedDataRejected?this._fs.unlink(s,u=>{o.getRecorder().record(62,s),this._createAndWriteCachedData(e,i,s,o),u&&o.getConfig().onError(u)}):r&&this._createAndWriteCachedData(e,i,s,o)}_createAndWriteCachedData(e,i,s,r){let o=Math.ceil(r.getConfig().getOptionsLiteral().nodeCachedData.writeDelay*(1+Math.random())),u=-1,l=0,g;const p=()=>{setTimeout(()=>{g||(g=this._crypto.createHash("md5").update(i,"utf8").digest());const m=e.createCachedData();if(!(m.length===0||m.length===u||l>=5)){if(m.length{y&&r.getConfig().onError(y),r.getRecorder().record(63,s),p()})}},o*Math.pow(4,l++))};p()}_readSourceAndCachedData(e,i,s,r){if(!i)this._fs.readFile(e,{encoding:"utf8"},r);else{let o,u,l,g=2;const p=m=>{m?r(m):--g===0&&r(void 0,o,u,l)};this._fs.readFile(e,{encoding:"utf8"},(m,y)=>{o=y,p(m)}),this._fs.readFile(i,(m,y)=>{!m&&y&&y.length>0?(l=y.slice(0,16),u=y.slice(16),s.record(60,i)):s.record(61,i),p()})}}_verifyCachedData(e,i,s,r,o){r&&(e.cachedDataRejected||setTimeout(()=>{const u=this._crypto.createHash("md5").update(i,"utf8").digest();r.equals(u)||(o.getConfig().onError(new Error(`FAILED TO VERIFY CACHED DATA, deleting stale '${s}' now, but a RESTART IS REQUIRED`)),this._fs.unlink(s,l=>{l&&o.getConfig().onError(l)}))},Math.ceil(5e3*(1+Math.random()))))}}n._BOM=65279,n._PREFIX="(function (require, define, __filename, __dirname) { ",n._SUFFIX=`
+});`;function c(t,e){if(e.__$__isRecorded)return e;const i=function(r){t.record(33,r);try{return e(r)}finally{t.record(34,r)}};return i.__$__isRecorded=!0,i}d.ensureRecordedNodeRequire=c;function a(t){return new _(t)}d.createScriptLoader=a})(AMDLoader||(AMDLoader={}));var AMDLoader;(function(d){class _{constructor(t){let e=t.lastIndexOf("/");e!==-1?this.fromModulePath=t.substr(0,e+1):this.fromModulePath=""}static _normalizeModuleId(t){let e=t,i;for(i=/\/\.\//;i.test(e);)e=e.replace(i,"/");for(e=e.replace(/^\.\//g,""),i=/\/(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//;i.test(e);)e=e.replace(i,"/");return e=e.replace(/^(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//,""),e}resolveModule(t){let e=t;return d.Utilities.isAbsolutePath(e)||(d.Utilities.startsWith(e,"./")||d.Utilities.startsWith(e,"../"))&&(e=_._normalizeModuleId(this.fromModulePath+e)),e}}_.ROOT=new _(""),d.ModuleIdResolver=_;class v{constructor(t,e,i,s,r,o){this.id=t,this.strId=e,this.dependencies=i,this._callback=s,this._errorback=r,this.moduleIdResolver=o,this.exports={},this.error=null,this.exportsPassedIn=!1,this.unresolvedDependenciesCount=this.dependencies.length,this._isComplete=!1}static _safeInvokeFunction(t,e){try{return{returnedValue:t.apply(d.global,e),producedError:null}}catch(i){return{returnedValue:null,producedError:i}}}static _invokeFactory(t,e,i,s){return t.shouldInvokeFactory(e)?t.shouldCatchError()?this._safeInvokeFunction(i,s):{returnedValue:i.apply(d.global,s),producedError:null}:{returnedValue:null,producedError:null}}complete(t,e,i,s){this._isComplete=!0;let r=null;if(this._callback)if(typeof this._callback=="function"){t.record(21,this.strId);let o=v._invokeFactory(e,this.strId,this._callback,i);r=o.producedError,t.record(22,this.strId),!r&&typeof o.returnedValue<"u"&&(!this.exportsPassedIn||d.Utilities.isEmpty(this.exports))&&(this.exports=o.returnedValue)}else this.exports=this._callback;if(r){let o=d.ensureError(r);o.phase="factory",o.moduleId=this.strId,o.neededBy=s(this.id),this.error=o,e.onError(o)}this.dependencies=null,this._callback=null,this._errorback=null,this.moduleIdResolver=null}onDependencyError(t){return this._isComplete=!0,this.error=t,this._errorback?(this._errorback(t),!0):!1}isComplete(){return this._isComplete}}d.Module=v;class f{constructor(){this._nextId=0,this._strModuleIdToIntModuleId=new Map,this._intModuleIdToStrModuleId=[],this.getModuleId("exports"),this.getModuleId("module"),this.getModuleId("require")}getMaxModuleId(){return this._nextId}getModuleId(t){let e=this._strModuleIdToIntModuleId.get(t);return typeof e>"u"&&(e=this._nextId++,this._strModuleIdToIntModuleId.set(t,e),this._intModuleIdToStrModuleId[e]=t),e}getStrModuleId(t){return this._intModuleIdToStrModuleId[t]}}class h{constructor(t){this.id=t}}h.EXPORTS=new h(0),h.MODULE=new h(1),h.REQUIRE=new h(2),d.RegularDependency=h;class n{constructor(t,e,i){this.id=t,this.pluginId=e,this.pluginParam=i}}d.PluginDependency=n;class c{constructor(t,e,i,s,r=0){this._env=t,this._scriptLoader=e,this._loaderAvailableTimestamp=r,this._defineFunc=i,this._requireFunc=s,this._moduleIdProvider=new f,this._config=new d.Configuration(this._env),this._hasDependencyCycle=!1,this._modules2=[],this._knownModules2=[],this._inverseDependencies2=[],this._inversePluginDependencies2=new Map,this._currentAnonymousDefineCall=null,this._recorder=null,this._buildInfoPath=[],this._buildInfoDefineStack=[],this._buildInfoDependencies=[],this._requireFunc.moduleManager=this}reset(){return new c(this._env,this._scriptLoader,this._defineFunc,this._requireFunc,this._loaderAvailableTimestamp)}getGlobalAMDDefineFunc(){return this._defineFunc}getGlobalAMDRequireFunc(){return this._requireFunc}static _findRelevantLocationInStack(t,e){let i=o=>o.replace(/\\/g,"/"),s=i(t),r=e.split(/\n/);for(let o=0;othis._moduleIdProvider.getStrModuleId(g.id))),this._resolve(l)}_normalizeDependency(t,e){if(t==="exports")return h.EXPORTS;if(t==="module")return h.MODULE;if(t==="require")return h.REQUIRE;let i=t.indexOf("!");if(i>=0){let s=e.resolveModule(t.substr(0,i)),r=e.resolveModule(t.substr(i+1)),o=this._moduleIdProvider.getModuleId(s+"!"+r),u=this._moduleIdProvider.getModuleId(s);return new n(o,u,r)}return new h(this._moduleIdProvider.getModuleId(e.resolveModule(t)))}_normalizeDependencies(t,e){let i=[],s=0;for(let r=0,o=t.length;rthis._moduleIdProvider.getStrModuleId(o));const r=d.ensureError(e);return r.phase="loading",r.moduleId=i,r.neededBy=s,r}_onLoadError(t,e){const i=this._createLoadError(t,e);this._modules2[t]||(this._modules2[t]=new v(t,this._moduleIdProvider.getStrModuleId(t),[],()=>{},null,null));let s=[];for(let u=0,l=this._moduleIdProvider.getMaxModuleId();u0;){let u=o.shift(),l=this._modules2[u];l&&(r=l.onDependencyError(i)||r);let g=this._inverseDependencies2[u];if(g)for(let p=0,m=g.length;p0;){let u=r.shift().dependencies;if(u)for(let l=0,g=u.length;lthis._relativeRequire(t,i,s,r);return e.toUrl=i=>this._config.requireToUrl(t.resolveModule(i)),e.getStats=()=>this.getLoaderEvents(),e.hasDependencyCycle=()=>this._hasDependencyCycle,e.config=(i,s=!1)=>{this.configure(i,s)},e.__$__nodeRequire=d.global.nodeRequire,e}_loadModule(t){if(this._modules2[t]||this._knownModules2[t])return;this._knownModules2[t]=!0;let e=this._moduleIdProvider.getStrModuleId(t),i=this._config.moduleIdToPaths(e),s=/^@[^\/]+\/[^\/]+$/;this._env.isNode&&(e.indexOf("/")===-1||s.test(e))&&i.push("node|"+e);let r=-1,o=u=>{if(r++,r>=i.length)this._onLoadError(t,u);else{let l=i[r],g=this.getRecorder();if(this._config.isBuild()&&l==="empty:"){this._buildInfoPath[t]=l,this.defineModule(this._moduleIdProvider.getStrModuleId(t),[],null,null,null),this._onLoad(t);return}g.record(10,l),this._scriptLoader.load(this,l,()=>{this._config.isBuild()&&(this._buildInfoPath[t]=l),g.record(11,l),this._onLoad(t)},p=>{g.record(12,l),o(p)})}};o(null)}_loadPluginDependency(t,e){if(this._modules2[e.id]||this._knownModules2[e.id])return;this._knownModules2[e.id]=!0;let i=s=>{this.defineModule(this._moduleIdProvider.getStrModuleId(e.id),[],s,null,null)};i.error=s=>{this._config.onError(this._createLoadError(e.id,s))},t.load(e.pluginParam,this._createRequire(_.ROOT),i,this._config.getOptionsLiteral())}_resolve(t){let e=t.dependencies;if(e)for(let i=0,s=e.length;ithis._moduleIdProvider.getStrModuleId(l)).join(` =>
+`)),t.unresolvedDependenciesCount--;continue}if(this._inverseDependencies2[r.id]=this._inverseDependencies2[r.id]||[],this._inverseDependencies2[r.id].push(t.id),r instanceof n){let u=this._modules2[r.pluginId];if(u&&u.isComplete()){this._loadPluginDependency(u.exports,r);continue}let l=this._inversePluginDependencies2.get(r.pluginId);l||(l=[],this._inversePluginDependencies2.set(r.pluginId,l)),l.push(r),this._loadModule(r.pluginId);continue}this._loadModule(r.id)}t.unresolvedDependenciesCount===0&&this._onModuleComplete(t)}_onModuleComplete(t){let e=this.getRecorder();if(t.isComplete())return;let i=t.dependencies,s=[];if(i)for(let l=0,g=i.length;lthis._config.getConfigForModule(t.strId)};continue}if(p===h.REQUIRE){s[l]=this._createRequire(t.moduleIdResolver);continue}let m=this._modules2[p.id];if(m){s[l]=m.exports;continue}s[l]=null}const r=l=>(this._inverseDependencies2[l]||[]).map(g=>this._moduleIdProvider.getStrModuleId(g));t.complete(e,this._config,s,r);let o=this._inverseDependencies2[t.id];if(this._inverseDependencies2[t.id]=null,o)for(let l=0,g=o.length;l"u"&&c())})(AMDLoader||(AMDLoader={})),define("vs/css",["require","exports"],function(d,_){"use strict";Object.defineProperty(_,"__esModule",{value:!0}),_.load=v;function v(a,t,e,i){if(i=i||{},(i["vs/css"]||{}).disabled){e({});return}const r=t.toUrl(a+".css");f(a,r,()=>{e({})},o=>{typeof e.error=="function"&&e.error("Could not find "+r+".")})}function f(a,t,e,i){if(h(a,t)){e();return}n(a,t,e,i)}function h(a,t){const e=window.document.getElementsByTagName("link");for(let i=0,s=e.length;i{t.removeEventListener("load",r),t.removeEventListener("error",o)},r=u=>{s(),e()},o=u=>{s(),i(u)};t.addEventListener("load",r),t.addEventListener("error",o)}}),function(){const d=require.getConfig().baseUrl||"https://main.vscode-cdn.net/insider/336db9ece67f682159078ea1b54212de7636d88a/out";require.config({baseUrl:d,recordStats:!0,paths:{"@microsoft/1ds-core-js":"../node_modules/@microsoft/1ds-core-js/dist/ms.core.min.js","@microsoft/1ds-post-js":"../node_modules/@microsoft/1ds-post-js/dist/ms.post.min.js","@vscode/iconv-lite-umd":"../node_modules/@vscode/iconv-lite-umd/lib/iconv-lite-umd.js","@vscode/tree-sitter-wasm":"../node_modules/@vscode/tree-sitter-wasm/wasm/tree-sitter.js","@vscode/vscode-languagedetection":"../node_modules/@vscode/vscode-languagedetection/dist/lib/index.js","@xterm/addon-clipboard":"../node_modules/@xterm/addon-clipboard/lib/addon-clipboard.js","@xterm/addon-image":"../node_modules/@xterm/addon-image/lib/addon-image.js","@xterm/addon-search":"../node_modules/@xterm/addon-search/lib/addon-search.js","@xterm/addon-serialize":"../node_modules/@xterm/addon-serialize/lib/addon-serialize.js","@xterm/addon-unicode11":"../node_modules/@xterm/addon-unicode11/lib/addon-unicode11.js","@xterm/addon-webgl":"../node_modules/@xterm/addon-webgl/lib/addon-webgl.js","@xterm/xterm":"../node_modules/@xterm/xterm/lib/xterm.js",jschardet:"../node_modules/jschardet/dist/jschardet.min.js","tas-client-umd":"../node_modules/tas-client-umd/lib/tas-client-umd.js","vscode-oniguruma":"../node_modules/vscode-oniguruma/release/main.js","vscode-textmate":"../node_modules/vscode-textmate/release/main.js","vscode-regexp-languagedetection":"../node_modules/vscode-regexp-languagedetection/dist/index.js",vsda:"../node_modules/vsda/rust/web/vsda.js","@microsoft/dynamicproto-js":"../node_modules/@microsoft/dynamicproto-js/lib/dist/umd/dynamicproto-js.min.js","@microsoft/applicationinsights-shims":"../node_modules/@microsoft/applicationinsights-shims/dist/umd/applicationinsights-shims.min.js","@microsoft/applicationinsights-core-js":"../node_modules/@microsoft/applicationinsights-core-js/browser/applicationinsights-core-js.min.js"}})}();
+
+//# sourceMappingURL=https://main.vscode-cdn.net/sourcemaps/336db9ece67f682159078ea1b54212de7636d88a/core/vs/loader.js.map
diff --git a/build/monaco/monaco.d.ts.recipe b/build/monaco/monaco.d.ts.recipe
index a6eb3b7128f..ef5c2e39ae5 100644
--- a/build/monaco/monaco.d.ts.recipe
+++ b/build/monaco/monaco.d.ts.recipe
@@ -92,7 +92,7 @@ declare namespace monaco.editor {
#includeAll(vs/editor/standalone/browser/standaloneEditor;languages.Token=>Token):
#include(vs/editor/standalone/common/standaloneTheme): BuiltinTheme, IStandaloneThemeData, IColors
#include(vs/editor/common/languages/supports/tokenization): ITokenThemeRule
-#include(vs/editor/browser/services/webWorker): MonacoWebWorker, IWebWorkerOptions
+#include(vs/editor/standalone/browser/standaloneWebWorker): MonacoWebWorker, IWebWorkerOptions
#include(vs/editor/standalone/browser/standaloneCodeEditor): IActionDescriptor, IGlobalEditorOptions, IStandaloneEditorConstructionOptions, IStandaloneDiffEditorConstructionOptions, IStandaloneCodeEditor, IStandaloneDiffEditor
export interface ICommandHandler {
(...args: any[]): void;
diff --git a/build/npm/dirs.js b/build/npm/dirs.js
index 60a6609767a..379c81310b5 100644
--- a/build/npm/dirs.js
+++ b/build/npm/dirs.js
@@ -5,7 +5,7 @@
const fs = require('fs');
-// Complete list of directories where yarn should be executed to install node modules
+// Complete list of directories where npm should be executed to install node modules
const dirs = [
'',
'build',
@@ -30,7 +30,6 @@ const dirs = [
'extensions/jake',
'extensions/json-language-features',
'extensions/json-language-features/server',
- 'extensions/markdown-language-features/server',
'extensions/markdown-language-features',
'extensions/markdown-math',
'extensions/media-preview',
@@ -53,6 +52,7 @@ const dirs = [
'test/integration/browser',
'test/monaco',
'test/smoke',
+ '.vscode/extensions/vscode-selfhost-import-aid',
'.vscode/extensions/vscode-selfhost-test-provider',
];
diff --git a/build/npm/gyp/package-lock.json b/build/npm/gyp/package-lock.json
new file mode 100644
index 00000000000..a20d85c70dc
--- /dev/null
+++ b/build/npm/gyp/package-lock.json
@@ -0,0 +1,1321 @@
+{
+ "name": "code-oss-dev-build",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "code-oss-dev-build",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "node-gyp": "^10.1.0"
+ }
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@npmcli/agent": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz",
+ "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.1",
+ "lru-cache": "^10.0.1",
+ "socks-proxy-agent": "^8.0.3"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz",
+ "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/abbrev": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
+ "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "18.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz",
+ "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^10.0.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^2.0.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
+ "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/foreground-child": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
+ "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
+ "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.4.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
+ "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-lambda": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
+ "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
+ "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/make-fetch-happen": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz",
+ "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/agent": "^2.0.0",
+ "cacache": "^18.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "is-lambda": "^1.0.1",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "proc-log": "^4.2.0",
+ "promise-retry": "^2.0.1",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/make-fetch-happen/node_modules/proc-log": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
+ "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
+ "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minipass-fetch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
+ "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+ "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-gyp": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz",
+ "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^13.0.0",
+ "nopt": "^7.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^4.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
+ "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^2.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
+ "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/proc-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz",
+ "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/promise-retry": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+ "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
+ "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz",
+ "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.1",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ssri": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
+ "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/unique-filename": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
+ "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz",
+ "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
+ "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ }
+ }
+}
diff --git a/build/npm/gyp/package.json b/build/npm/gyp/package.json
index 3961e955a5f..a1564133a1e 100644
--- a/build/npm/gyp/package.json
+++ b/build/npm/gyp/package.json
@@ -4,7 +4,7 @@
"private": true,
"license": "MIT",
"devDependencies": {
- "node-gyp": "^9.4.0"
+ "node-gyp": "^10.1.0"
},
"scripts": {}
}
diff --git a/build/npm/gyp/yarn.lock b/build/npm/gyp/yarn.lock
deleted file mode 100644
index 96d132e7943..00000000000
--- a/build/npm/gyp/yarn.lock
+++ /dev/null
@@ -1,812 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@isaacs/cliui@^8.0.2":
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
- integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
- dependencies:
- string-width "^5.1.2"
- string-width-cjs "npm:string-width@^4.2.0"
- strip-ansi "^7.0.1"
- strip-ansi-cjs "npm:strip-ansi@^6.0.1"
- wrap-ansi "^8.1.0"
- wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
-
-"@npmcli/fs@^3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e"
- integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==
- dependencies:
- semver "^7.3.5"
-
-"@pkgjs/parseargs@^0.11.0":
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
- integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-
-"@tootallnate/once@2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
- integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
-
-abbrev@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-agent-base@6, agent-base@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
- integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
- dependencies:
- debug "4"
-
-agentkeepalive@^4.2.1:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255"
- integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==
- dependencies:
- debug "^4.1.0"
- depd "^2.0.0"
- humanize-ms "^1.2.1"
-
-aggregate-error@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
- integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
- dependencies:
- clean-stack "^2.0.0"
- indent-string "^4.0.0"
-
-ansi-regex@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
- integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-
-ansi-regex@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
- integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
-
-ansi-styles@^4.0.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-ansi-styles@^6.1.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
- integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
-
-"aproba@^1.0.3 || ^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
- integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
-
-are-we-there-yet@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd"
- integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^3.6.0"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
- dependencies:
- balanced-match "^1.0.0"
-
-cacache@^17.0.0:
- version "17.1.3"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044"
- integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==
- dependencies:
- "@npmcli/fs" "^3.1.0"
- fs-minipass "^3.0.0"
- glob "^10.2.2"
- lru-cache "^7.7.1"
- minipass "^5.0.0"
- minipass-collect "^1.0.2"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- p-map "^4.0.0"
- ssri "^10.0.0"
- tar "^6.1.11"
- unique-filename "^3.0.0"
-
-chownr@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
- integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-
-clean-stack@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
- integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-support@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
- integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
-console-control-strings@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
-
-cross-spawn@^7.0.0:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-debug@4, debug@^4.1.0, debug@^4.3.3:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
- dependencies:
- ms "2.1.2"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
-
-depd@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
- integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
-
-eastasianwidth@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
- integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-emoji-regex@^9.2.2:
- version "9.2.2"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
- integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-
-encoding@^0.1.13:
- version "0.1.13"
- resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
- integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
- dependencies:
- iconv-lite "^0.6.2"
-
-env-paths@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
- integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
-
-err-code@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
- integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
-
-exponential-backoff@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6"
- integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==
-
-foreground-child@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d"
- integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
- dependencies:
- cross-spawn "^7.0.0"
- signal-exit "^4.0.1"
-
-fs-minipass@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
- integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
- dependencies:
- minipass "^3.0.0"
-
-fs-minipass@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3"
- integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==
- dependencies:
- minipass "^5.0.0"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-
-gauge@^4.0.3:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce"
- integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==
- dependencies:
- aproba "^1.0.3 || ^2.0.0"
- color-support "^1.1.3"
- console-control-strings "^1.1.0"
- has-unicode "^2.0.1"
- signal-exit "^3.0.7"
- string-width "^4.2.3"
- strip-ansi "^6.0.1"
- wide-align "^1.1.5"
-
-glob@^10.2.2:
- version "10.3.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b"
- integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==
- dependencies:
- foreground-child "^3.1.0"
- jackspeak "^2.0.3"
- minimatch "^9.0.1"
- minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
- path-scurry "^1.10.1"
-
-glob@^7.1.3, glob@^7.1.4:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
- integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.1.1"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-graceful-fs@^4.2.6:
- version "4.2.10"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
- integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
-
-has-unicode@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
-
-http-cache-semantics@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
- integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
-
-http-proxy-agent@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
- integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
- dependencies:
- "@tootallnate/once" "2"
- agent-base "6"
- debug "4"
-
-https-proxy-agent@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
- integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
- dependencies:
- agent-base "6"
- debug "4"
-
-humanize-ms@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
- integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
- dependencies:
- ms "^2.0.0"
-
-iconv-lite@^0.6.2:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
- integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
- dependencies:
- safer-buffer ">= 2.1.2 < 3.0.0"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
-
-indent-string@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
- integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-ip@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105"
- integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-lambda@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
- integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-
-jackspeak@^2.0.3:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385"
- integrity sha512-mgNtVv4vUuaKA97yxUHoA3+FkuhtxkjdXEWOyB/N76fjy0FjezEt34oy3epBtvCvS+7DyKwqCFWx/oJLV5+kCg==
- dependencies:
- "@isaacs/cliui" "^8.0.2"
- optionalDependencies:
- "@pkgjs/parseargs" "^0.11.0"
-
-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"
-
-lru-cache@^7.7.1:
- version "7.18.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
- integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
-
-"lru-cache@^9.1.1 || ^10.0.0":
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61"
- integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==
-
-make-fetch-happen@^11.0.3:
- version "11.1.1"
- resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f"
- integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==
- dependencies:
- agentkeepalive "^4.2.1"
- cacache "^17.0.0"
- http-cache-semantics "^4.1.1"
- http-proxy-agent "^5.0.0"
- https-proxy-agent "^5.0.0"
- is-lambda "^1.0.1"
- lru-cache "^7.7.1"
- minipass "^5.0.0"
- minipass-fetch "^3.0.0"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- negotiator "^0.6.3"
- promise-retry "^2.0.1"
- socks-proxy-agent "^7.0.0"
- ssri "^10.0.0"
-
-minimatch@^3.1.1:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimatch@^9.0.1:
- version "9.0.3"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
- integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
- dependencies:
- brace-expansion "^2.0.1"
-
-minipass-collect@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
- integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
- dependencies:
- minipass "^3.0.0"
-
-minipass-fetch@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce"
- integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==
- dependencies:
- minipass "^5.0.0"
- minipass-sized "^1.0.3"
- minizlib "^2.1.2"
- optionalDependencies:
- encoding "^0.1.13"
-
-minipass-flush@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
- integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
- dependencies:
- minipass "^3.0.0"
-
-minipass-pipeline@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
- integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
- dependencies:
- minipass "^3.0.0"
-
-minipass-sized@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70"
- integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
- dependencies:
- minipass "^3.0.0"
-
-minipass@^3.0.0:
- version "3.3.6"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
- integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
- dependencies:
- yallist "^4.0.0"
-
-minipass@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
- integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e"
- integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==
-
-minizlib@^2.1.1, minizlib@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
- integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
- dependencies:
- minipass "^3.0.0"
- yallist "^4.0.0"
-
-mkdirp@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.0.0:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-negotiator@^0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
- integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
-
-node-gyp@^9.4.0:
- version "9.4.0"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369"
- integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==
- dependencies:
- env-paths "^2.2.0"
- exponential-backoff "^3.1.1"
- glob "^7.1.4"
- graceful-fs "^4.2.6"
- make-fetch-happen "^11.0.3"
- nopt "^6.0.0"
- npmlog "^6.0.0"
- rimraf "^3.0.2"
- semver "^7.3.5"
- tar "^6.1.2"
- which "^2.0.2"
-
-nopt@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
- integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
- dependencies:
- abbrev "^1.0.0"
-
-npmlog@^6.0.0:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830"
- integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==
- dependencies:
- are-we-there-yet "^3.0.0"
- console-control-strings "^1.1.0"
- gauge "^4.0.3"
- set-blocking "^2.0.0"
-
-once@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
- dependencies:
- wrappy "1"
-
-p-map@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
- integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
- dependencies:
- aggregate-error "^3.0.0"
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-
-path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-scurry@^1.10.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
- integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
- dependencies:
- lru-cache "^9.1.1 || ^10.0.0"
- minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-
-promise-retry@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
- integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
- dependencies:
- err-code "^2.0.2"
- retry "^0.12.0"
-
-readable-stream@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-retry@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
- integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
-
-rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
-safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-"safer-buffer@>= 2.1.2 < 3.0.0":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-semver@^7.3.5:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
- dependencies:
- lru-cache "^6.0.0"
-
-set-blocking@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-signal-exit@^3.0.7:
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
- integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-
-signal-exit@^4.0.1:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
- integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
-
-smart-buffer@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
- integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
-
-socks-proxy-agent@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6"
- integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==
- dependencies:
- agent-base "^6.0.2"
- debug "^4.3.3"
- socks "^2.6.2"
-
-socks@^2.6.2:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55"
- integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==
- dependencies:
- ip "^2.0.0"
- smart-buffer "^4.2.0"
-
-ssri@^10.0.0:
- version "10.0.4"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6"
- integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==
- dependencies:
- minipass "^5.0.0"
-
-"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string-width@^5.0.1, string-width@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
- integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
- dependencies:
- eastasianwidth "^0.2.0"
- emoji-regex "^9.2.2"
- strip-ansi "^7.0.1"
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-ansi@^7.0.1:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
- integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
- dependencies:
- ansi-regex "^6.0.1"
-
-tar@^6.1.11, tar@^6.1.2:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
- integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
- dependencies:
- chownr "^2.0.0"
- fs-minipass "^2.0.0"
- minipass "^5.0.0"
- minizlib "^2.1.1"
- mkdirp "^1.0.3"
- yallist "^4.0.0"
-
-unique-filename@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea"
- integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==
- dependencies:
- unique-slug "^4.0.0"
-
-unique-slug@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3"
- integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==
- dependencies:
- imurmurhash "^0.1.4"
-
-util-deprecate@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-which@^2.0.1, which@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-wide-align@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
- integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
- dependencies:
- string-width "^1.0.2 || 2 || 3 || 4"
-
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-wrap-ansi@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
- integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
- dependencies:
- ansi-styles "^6.1.0"
- string-width "^5.0.1"
- strip-ansi "^7.0.1"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-
-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/build/npm/postinstall.js b/build/npm/postinstall.js
index bcac781e265..e38c2cb003e 100644
--- a/build/npm/postinstall.js
+++ b/build/npm/postinstall.js
@@ -8,12 +8,19 @@ const path = require('path');
const os = require('os');
const cp = require('child_process');
const { dirs } = require('./dirs');
-const { setupBuildYarnrc } = require('./setupBuildYarnrc');
-const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
+const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
const root = path.dirname(path.dirname(__dirname));
+function log(dir, message) {
+ if (process.stdout.isTTY) {
+ console.log(`\x1b[34m[${dir}]\x1b[0m`, message);
+ } else {
+ console.log(`[${dir}]`, message);
+ }
+}
+
function run(command, args, opts) {
- console.log('$ ' + command + ' ' + args.join(' '));
+ log(opts.cwd || '.', '$ ' + command + ' ' + args.join(' '));
const result = cp.spawnSync(command, args, opts);
@@ -30,7 +37,7 @@ function run(command, args, opts) {
* @param {string} dir
* @param {*} [opts]
*/
-function yarnInstall(dir, opts) {
+function npmInstall(dir, opts) {
opts = {
env: { ...process.env },
...(opts ?? {}),
@@ -39,97 +46,95 @@ function yarnInstall(dir, opts) {
shell: true
};
- const raw = process.env['npm_config_argv'] || '{}';
- const argv = JSON.parse(raw);
- const original = argv.original || [];
- const args = original.filter(arg => arg === '--ignore-optional' || arg === '--frozen-lockfile' || arg === '--check-files');
-
- if (opts.ignoreEngines) {
- args.push('--ignore-engines');
- delete opts.ignoreEngines;
- }
+ const command = process.env['npm_command'] || 'install';
if (process.env['VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME'] && /^(.build\/distro\/npm\/)?remote$/.test(dir)) {
const userinfo = os.userInfo();
- console.log(`Installing dependencies in ${dir} inside container ${process.env['VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME']}...`);
+ log(dir, `Installing dependencies inside container ${process.env['VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME']}...`);
opts.cwd = root;
- if (process.env['npm_config_arch'] === 'arm64' || process.env['npm_config_arch'] === 'arm') {
+ if (process.env['npm_config_arch'] === 'arm64') {
run('sudo', ['docker', 'run', '--rm', '--privileged', 'multiarch/qemu-user-static', '--reset', '-p', 'yes'], opts);
}
- if (process.env['npm_config_arch'] === 'arm') {
- run('sudo', ['docker', 'run', '-e', 'GITHUB_TOKEN', '-e', 'npm_config_arch', '-v', `${process.env['VSCODE_HOST_MOUNT']}:/home/builduser`, '-v', `${process.env['VSCODE_HOST_MOUNT']}/.build/.netrc:/home/builduser/.netrc`, process.env['VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME'], 'yarn', '--cwd', dir, ...args], opts);
- } else {
- run('sudo', ['docker', 'run', '-e', 'GITHUB_TOKEN', '-e', 'npm_config_arch', '-v', `${process.env['VSCODE_HOST_MOUNT']}:/root/vscode`, '-v', `${process.env['VSCODE_HOST_MOUNT']}/.build/.netrc:/root/.netrc`, process.env['VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME'], 'yarn', '--cwd', dir, ...args], opts);
- }
- run('sudo', ['chown', '-R', `${userinfo.uid}:${userinfo.gid}`, `${dir}/node_modules`], opts);
+ run('sudo', ['docker', 'run', '-e', 'GITHUB_TOKEN', '-v', `${process.env['VSCODE_HOST_MOUNT']}:/root/vscode`, '-v', `${process.env['VSCODE_HOST_MOUNT']}/.build/.netrc:/root/.netrc`, '-w', path.resolve('/root/vscode', dir), process.env['VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME'], 'sh', '-c', `\"chown -R root:root ${path.resolve('/root/vscode', dir)} && npm i -g node-gyp-build && npm ci\"`], opts);
+ run('sudo', ['chown', '-R', `${userinfo.uid}:${userinfo.gid}`, `${path.resolve(root, dir)}`], opts);
} else {
- console.log(`Installing dependencies in ${dir}...`);
- run(yarn, args, opts);
+ log(dir, 'Installing dependencies...');
+ run(npm, [command], opts);
}
}
-for (let dir of dirs) {
+function setNpmrcConfig(dir, env) {
+ const npmrcPath = path.join(root, dir, '.npmrc');
+ const lines = fs.readFileSync(npmrcPath, 'utf8').split('\n');
- if (dir === '') {
- // `yarn` already executed in root
- continue;
+ for (const line of lines) {
+ const trimmedLine = line.trim();
+ if (trimmedLine && !trimmedLine.startsWith('#')) {
+ const [key, value] = trimmedLine.split('=');
+ env[`npm_config_${key}`] = value.replace(/^"(.*)"$/, '$1');
+ }
}
- if (/^.build\/distro\/npm(\/?)/.test(dir)) {
- const ossPath = path.relative('.build/distro/npm', dir);
- const ossYarnRc = path.join(ossPath, '.yarnrc');
-
- if (fs.existsSync(ossYarnRc)) {
- fs.cpSync(ossYarnRc, path.join(dir, '.yarnrc'));
- }
+ if (dir === 'build') {
+ env['npm_config_target'] = process.versions.node;
+ env['npm_config_arch'] = process.arch;
}
+}
- if (/^(.build\/distro\/npm\/)?remote/.test(dir) && process.platform === 'win32' && (process.arch === 'arm64' || process.env['npm_config_arch'] === 'arm64')) {
- // windows arm: do not execute `yarn` on remote folder
+for (let dir of dirs) {
+
+ if (dir === '') {
+ // already executed in root
continue;
}
let opts;
if (dir === 'build') {
- const env = { ...process.env };
- setupBuildYarnrc();
- opts = { env };
- if (process.env['CC']) { env['CC'] = 'gcc'; }
- if (process.env['CXX']) { env['CXX'] = 'g++'; }
- if (process.env['CXXFLAGS']) { env['CXXFLAGS'] = ''; }
- if (process.env['LDFLAGS']) { env['LDFLAGS'] = ''; }
- yarnInstall('build', opts);
+ opts = {
+ env: {
+ ...process.env
+ },
+ }
+ if (process.env['CC']) { opts.env['CC'] = 'gcc'; }
+ if (process.env['CXX']) { opts.env['CXX'] = 'g++'; }
+ if (process.env['CXXFLAGS']) { opts.env['CXXFLAGS'] = ''; }
+ if (process.env['LDFLAGS']) { opts.env['LDFLAGS'] = ''; }
+
+ setNpmrcConfig('build', opts.env);
+ npmInstall('build', opts);
continue;
}
if (/^(.build\/distro\/npm\/)?remote$/.test(dir)) {
// node modules used by vscode server
- const env = { ...process.env };
+ opts = {
+ env: {
+ ...process.env
+ },
+ }
if (process.env['VSCODE_REMOTE_CC']) {
- env['CC'] = process.env['VSCODE_REMOTE_CC'];
+ opts.env['CC'] = process.env['VSCODE_REMOTE_CC'];
} else {
- delete env['CC'];
+ delete opts.env['CC'];
}
if (process.env['VSCODE_REMOTE_CXX']) {
- env['CXX'] = process.env['VSCODE_REMOTE_CXX'];
+ opts.env['CXX'] = process.env['VSCODE_REMOTE_CXX'];
} else {
- delete env['CXX'];
+ delete opts.env['CXX'];
}
- if (process.env['CXXFLAGS']) { delete env['CXXFLAGS']; }
- if (process.env['CFLAGS']) { delete env['CFLAGS']; }
- if (process.env['LDFLAGS']) { delete env['LDFLAGS']; }
- if (process.env['VSCODE_REMOTE_CXXFLAGS']) { env['CXXFLAGS'] = process.env['VSCODE_REMOTE_CXXFLAGS']; }
- if (process.env['VSCODE_REMOTE_LDFLAGS']) { env['LDFLAGS'] = process.env['VSCODE_REMOTE_LDFLAGS']; }
- if (process.env['VSCODE_REMOTE_NODE_GYP']) { env['npm_config_node_gyp'] = process.env['VSCODE_REMOTE_NODE_GYP']; }
-
- opts = { env };
- } else if (/^extensions\//.test(dir)) {
- opts = { ignoreEngines: true };
+ if (process.env['CXXFLAGS']) { delete opts.env['CXXFLAGS']; }
+ if (process.env['CFLAGS']) { delete opts.env['CFLAGS']; }
+ if (process.env['LDFLAGS']) { delete opts.env['LDFLAGS']; }
+ if (process.env['VSCODE_REMOTE_CXXFLAGS']) { opts.env['CXXFLAGS'] = process.env['VSCODE_REMOTE_CXXFLAGS']; }
+ if (process.env['VSCODE_REMOTE_LDFLAGS']) { opts.env['LDFLAGS'] = process.env['VSCODE_REMOTE_LDFLAGS']; }
+ if (process.env['VSCODE_REMOTE_NODE_GYP']) { opts.env['npm_config_node_gyp'] = process.env['VSCODE_REMOTE_NODE_GYP']; }
+
+ setNpmrcConfig('remote', opts.env);
}
- yarnInstall(dir, opts);
+ npmInstall(dir, opts);
}
cp.execSync('git config pull.rebase merges');
diff --git a/build/npm/preinstall.js b/build/npm/preinstall.js
index fdb01f579d6..b98f22977bf 100644
--- a/build/npm/preinstall.js
+++ b/build/npm/preinstall.js
@@ -2,7 +2,6 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-let err = false;
const nodeVersion = /^(\d+)\.(\d+)\.(\d+)/.exec(process.versions.node);
const majorNodeVersion = parseInt(nodeVersion[1]);
@@ -12,48 +11,25 @@ const patchNodeVersion = parseInt(nodeVersion[3]);
if (!process.env['VSCODE_SKIP_NODE_VERSION_CHECK']) {
if (majorNodeVersion < 20) {
console.error('\x1b[1;31m*** Please use latest Node.js v20 LTS for development.\x1b[0;0m');
- err = true;
+ throw new Error();
}
}
+if (process.env['npm_execpath'].includes('yarn')) {
+ console.error('\x1b[1;31m*** Seems like you are using `yarn` which is not supported in this repo any more, please use `npm i` instead. ***\x1b[0;0m');
+ throw new Error();
+}
+
const path = require('path');
const fs = require('fs');
const cp = require('child_process');
-const yarnVersion = cp.execSync('yarn -v', { encoding: 'utf8' }).trim();
-const parsedYarnVersion = /^(\d+)\.(\d+)\.(\d+)/.exec(yarnVersion);
-const majorYarnVersion = parseInt(parsedYarnVersion[1]);
-const minorYarnVersion = parseInt(parsedYarnVersion[2]);
-const patchYarnVersion = parseInt(parsedYarnVersion[3]);
-
-if (
- majorYarnVersion < 1 ||
- majorYarnVersion === 1 && (
- minorYarnVersion < 10 || (minorYarnVersion === 10 && patchYarnVersion < 1)
- ) ||
- majorYarnVersion >= 2
-) {
- console.error('\x1b[1;31m*** Please use yarn >=1.10.1 and <2.\x1b[0;0m');
- err = true;
-}
-
-if (!/yarn[\w-.]*\.c?js$|yarnpkg$/.test(process.env['npm_execpath'])) {
- console.error('\x1b[1;31m*** Please use yarn to install dependencies.\x1b[0;0m');
- err = true;
-}
if (process.platform === 'win32') {
if (!hasSupportedVisualStudioVersion()) {
console.error('\x1b[1;31m*** Invalid C/C++ Compiler Toolchain. Please check https://github.com/microsoft/vscode/wiki/How-to-Contribute#prerequisites.\x1b[0;0m');
- err = true;
- }
- if (!err) {
- installHeaders();
+ throw new Error();
}
-}
-
-if (err) {
- console.error('');
- process.exit(1);
+ installHeaders();
}
function hasSupportedVisualStudioVersion() {
@@ -73,9 +49,9 @@ function hasSupportedVisualStudioVersion() {
const programFiles86Path = process.env['ProgramFiles(x86)'];
const programFiles64Path = process.env['ProgramFiles'];
+ const vsTypes = ['Enterprise', 'Professional', 'Community', 'Preview', 'BuildTools', 'IntPreview'];
if (programFiles64Path) {
vsPath = `${programFiles64Path}/Microsoft Visual Studio/${version}`;
- const vsTypes = ['Enterprise', 'Professional', 'Community', 'Preview', 'BuildTools'];
if (vsTypes.some(vsType => fs.existsSync(path.join(vsPath, vsType)))) {
availableVersions.push(version);
break;
@@ -84,7 +60,6 @@ function hasSupportedVisualStudioVersion() {
if (programFiles86Path) {
vsPath = `${programFiles86Path}/Microsoft Visual Studio/${version}`;
- const vsTypes = ['Enterprise', 'Professional', 'Community', 'Preview', 'BuildTools'];
if (vsTypes.some(vsType => fs.existsSync(path.join(vsPath, vsType)))) {
availableVersions.push(version);
break;
@@ -95,47 +70,28 @@ function hasSupportedVisualStudioVersion() {
}
function installHeaders() {
- const yarn = 'yarn.cmd';
- const yarnResult = cp.spawnSync(yarn, ['install'], {
+ cp.execSync(`npm.cmd ${process.env['npm_command'] || 'ci'}`, {
env: process.env,
cwd: path.join(__dirname, 'gyp'),
- stdio: 'inherit',
- shell: true
+ stdio: 'inherit'
});
- if (yarnResult.error || yarnResult.status !== 0) {
- console.error(`Installing node-gyp failed`);
- err = true;
- return;
- }
- // The node gyp package got installed using the above yarn command using the gyp/package.json
+ // The node gyp package got installed using the above npm command using the gyp/package.json
// file checked into our repository. So from that point it is save to construct the path
// to that executable
const node_gyp = path.join(__dirname, 'gyp', 'node_modules', '.bin', 'node-gyp.cmd');
const result = cp.execFileSync(node_gyp, ['list'], { encoding: 'utf8', shell: true });
const versions = new Set(result.split(/\n/g).filter(line => !line.startsWith('gyp info')).map(value => value));
- const local = getHeaderInfo(path.join(__dirname, '..', '..', '.yarnrc'));
- const remote = getHeaderInfo(path.join(__dirname, '..', '..', 'remote', '.yarnrc'));
+ const local = getHeaderInfo(path.join(__dirname, '..', '..', '.npmrc'));
+ const remote = getHeaderInfo(path.join(__dirname, '..', '..', 'remote', '.npmrc'));
if (local !== undefined && !versions.has(local.target)) {
// Both disturl and target come from a file checked into our repository
cp.execFileSync(node_gyp, ['install', '--dist-url', local.disturl, local.target], { shell: true });
}
- // Avoid downloading headers for Windows arm64 till we move to Nodejs v19 in remote
- // which is the first official release with support for the architecture. Downloading
- // the headers for older versions now redirect to https://origin.nodejs.org/404.html
- // which causes checksum validation error in node-gyp.
- //
- // gyp http 200 https://origin.nodejs.org/404.html
- // gyp WARN install got an error, rolling back install
- // gyp ERR! install error
- // gyp ERR! stack Error: win-arm64/node.lib local checksum 4c62bed7a032f7b36984321b7ffdd60b596fac870672037ff879ae9ac9548fb7 not match remote undefined
- //
- if (remote !== undefined && !versions.has(remote.target) &&
- process.env['npm_config_arch'] !== "arm64" &&
- process.arch !== "arm64") {
+ if (remote !== undefined && !versions.has(remote.target)) {
// Both disturl and target come from a file checked into our repository
cp.execFileSync(node_gyp, ['install', '--dist-url', remote.disturl, remote.target], { shell: true });
}
@@ -149,11 +105,11 @@ function getHeaderInfo(rcFile) {
const lines = fs.readFileSync(rcFile, 'utf8').split(/\r\n?/g);
let disturl, target;
for (const line of lines) {
- let match = line.match(/\s*disturl\s*\"(.*)\"\s*$/);
+ let match = line.match(/\s*disturl=*\"(.*)\"\s*$/);
if (match !== null && match.length >= 1) {
disturl = match[1];
}
- match = line.match(/\s*target\s*\"(.*)\"\s*$/);
+ match = line.match(/\s*target=*\"(.*)\"\s*$/);
if (match !== null && match.length >= 1) {
target = match[1];
}
diff --git a/build/npm/setupBuildYarnrc.js b/build/npm/setupBuildYarnrc.js
deleted file mode 100644
index f8027dcfcb0..00000000000
--- a/build/npm/setupBuildYarnrc.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const path = require('path');
-const fs = require('fs');
-
-// make sure we install the deps of build for the system installed
-// node, since that is the driver of gulp
-function setupBuildYarnrc() {
- const yarnrcPath = path.join(path.dirname(__dirname), '.yarnrc');
- const yarnrc = `disturl "https://nodejs.org/download/release"
-target "${process.versions.node}"
-runtime "node"
-arch "${process.arch}"`;
-
- fs.writeFileSync(yarnrcPath, yarnrc, 'utf8');
-}
-
-exports.setupBuildYarnrc = setupBuildYarnrc;
-
-if (require.main === module) {
- setupBuildYarnrc();
-}
diff --git a/build/npm/update-all-grammars.mjs b/build/npm/update-all-grammars.mjs
index e0d34e42beb..7e303a655f7 100644
--- a/build/npm/update-all-grammars.mjs
+++ b/build/npm/update-all-grammars.mjs
@@ -16,7 +16,7 @@ async function spawn(cmd, args, opts) {
}
async function main() {
- await spawn('yarn', [], { cwd: 'extensions' });
+ await spawn('npm', ['ci'], { cwd: 'extensions' });
for (const extension of readdirSync('extensions')) {
try {
diff --git a/build/package-lock.json b/build/package-lock.json
new file mode 100644
index 00000000000..4499f7cf541
--- /dev/null
+++ b/build/package-lock.json
@@ -0,0 +1,4630 @@
+{
+ "name": "code-oss-dev-build",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "code-oss-dev-build",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "@azure/cosmos": "^3",
+ "@azure/identity": "^4.2.1",
+ "@azure/storage-blob": "^12.17.0",
+ "@electron/get": "^2.0.0",
+ "@types/ansi-colors": "^3.2.0",
+ "@types/byline": "^4.2.32",
+ "@types/debounce": "^1.0.0",
+ "@types/debug": "^4.1.5",
+ "@types/fancy-log": "^1.3.0",
+ "@types/fs-extra": "^9.0.12",
+ "@types/glob": "^7.1.1",
+ "@types/gulp": "^4.0.17",
+ "@types/gulp-concat": "^0.0.32",
+ "@types/gulp-filter": "^3.0.32",
+ "@types/gulp-gzip": "^0.0.31",
+ "@types/gulp-json-editor": "^2.2.31",
+ "@types/gulp-rename": "^0.0.33",
+ "@types/gulp-sort": "^2.0.4",
+ "@types/gulp-sourcemaps": "^0.0.32",
+ "@types/mime": "0.0.29",
+ "@types/minimatch": "^3.0.3",
+ "@types/minimist": "^1.2.1",
+ "@types/mocha": "^9.1.1",
+ "@types/node": "20.x",
+ "@types/pump": "^1.0.1",
+ "@types/rimraf": "^2.0.4",
+ "@types/through": "^0.0.29",
+ "@types/through2": "^2.0.36",
+ "@types/tmp": "^0.2.1",
+ "@types/workerpool": "^6.4.0",
+ "@types/xml2js": "0.0.33",
+ "@vscode/iconv-lite-umd": "0.7.0",
+ "@vscode/vsce": "2.20.1",
+ "byline": "^5.0.0",
+ "colors": "^1.4.0",
+ "commander": "^7.0.0",
+ "debug": "^4.3.2",
+ "electron-osx-sign": "^0.4.16",
+ "esbuild": "0.23.0",
+ "extract-zip": "^2.0.1",
+ "gulp-merge-json": "^2.1.1",
+ "gulp-sort": "^2.0.0",
+ "jsonc-parser": "^2.3.0",
+ "mime": "^1.4.1",
+ "source-map": "0.6.1",
+ "ternary-stream": "^3.0.0",
+ "through2": "^4.0.2",
+ "tmp": "^0.2.1",
+ "vscode-universal-bundler": "^0.1.3",
+ "workerpool": "^6.4.0",
+ "yauzl": "^2.10.0"
+ },
+ "optionalDependencies": {
+ "tree-sitter": "^0.20.5",
+ "tree-sitter-typescript": "^0.20.5",
+ "vscode-gulp-watch": "^5.0.3"
+ }
+ },
+ "node_modules/@azure/abort-controller": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.2.tgz",
+ "integrity": "sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@azure/core-asynciterator-polyfill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz",
+ "integrity": "sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg==",
+ "dev": true
+ },
+ "node_modules/@azure/core-auth": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
+ "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-util": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/core-client": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.5.0.tgz",
+ "integrity": "sha512-YNk8i9LT6YcFdFO+RRU0E4Ef+A8Y5lhXo6lz61rwbG8Uo7kSqh0YqK04OexiilM43xd6n3Y9yBhLnb1NFNI9dA==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-asynciterator-polyfill": "^1.0.0",
+ "@azure/core-auth": "^1.3.0",
+ "@azure/core-rest-pipeline": "^1.5.0",
+ "@azure/core-tracing": "1.0.0-preview.13",
+ "@azure/logger": "^1.0.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-client/node_modules/@azure/core-tracing": {
+ "version": "1.0.0-preview.13",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+ "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "dev": true,
+ "dependencies": {
+ "@opentelemetry/api": "^1.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-http": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.4.tgz",
+ "integrity": "sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==",
+ "deprecated": "deprecating as we migrated to core v2",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.3.0",
+ "@azure/core-tracing": "1.0.0-preview.13",
+ "@azure/core-util": "^1.1.1",
+ "@azure/logger": "^1.0.0",
+ "@types/node-fetch": "^2.5.0",
+ "@types/tunnel": "^0.0.3",
+ "form-data": "^4.0.0",
+ "node-fetch": "^2.6.7",
+ "process": "^0.11.10",
+ "tslib": "^2.2.0",
+ "tunnel": "^0.0.6",
+ "uuid": "^8.3.0",
+ "xml2js": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/core-http/node_modules/@azure/core-tracing": {
+ "version": "1.0.0-preview.13",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+ "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "dev": true,
+ "dependencies": {
+ "@opentelemetry/api": "^1.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-lro": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.1.tgz",
+ "integrity": "sha512-HE6PBl+mlKa0eBsLwusHqAqjLc5n9ByxeDo3Hz4kF3B1hqHvRkBr4oMgoT6tX7Hc3q97KfDctDUon7EhvoeHPA==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-tracing": "1.0.0-preview.13",
+ "@azure/logger": "^1.0.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-lro/node_modules/@azure/core-tracing": {
+ "version": "1.0.0-preview.13",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+ "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "dev": true,
+ "dependencies": {
+ "@opentelemetry/api": "^1.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-paging": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz",
+ "integrity": "sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A==",
+ "dev": true,
+ "dependencies": {
+ "@azure/core-asynciterator-polyfill": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.7.0.tgz",
+ "integrity": "sha512-e2awPzwMKHrmvYgZ0qIKNkqnCM1QoDs7A0rOiS3OSAlOQOz/kL7PPKHXwFMuBeaRvS8i7fgobJn79q2Cji5f+Q==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.3.0",
+ "@azure/core-tracing": "1.0.0-preview.13",
+ "@azure/logger": "^1.0.0",
+ "form-data": "^4.0.0",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "tslib": "^2.2.0",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline/node_modules/@azure/core-tracing": {
+ "version": "1.0.0-preview.13",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+ "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "dev": true,
+ "dependencies": {
+ "@opentelemetry/api": "^1.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-tracing": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
+ "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure/core-util": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz",
+ "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-util/node_modules/@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/cosmos": {
+ "version": "3.17.3",
+ "resolved": "https://registry.npmjs.org/@azure/cosmos/-/cosmos-3.17.3.tgz",
+ "integrity": "sha512-wBglkQ6Irjv5Vo2iw8fd6eYj60WYRSSg4/0DBkeOP6BwQ4RA91znsOHd6s3qG6UAbNgYuzC9Nnq07vlFFZkHEw==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.3.0",
+ "@azure/core-rest-pipeline": "^1.2.0",
+ "@azure/core-tracing": "^1.0.0",
+ "debug": "^4.1.1",
+ "fast-json-stable-stringify": "^2.1.0",
+ "jsbi": "^3.1.3",
+ "node-abort-controller": "^3.0.0",
+ "priorityqueuejs": "^1.0.0",
+ "semaphore": "^1.0.5",
+ "tslib": "^2.2.0",
+ "universal-user-agent": "^6.0.0",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/identity": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.2.1.tgz",
+ "integrity": "sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-auth": "^1.5.0",
+ "@azure/core-client": "^1.4.0",
+ "@azure/core-rest-pipeline": "^1.1.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.3.0",
+ "@azure/logger": "^1.0.0",
+ "@azure/msal-browser": "^3.11.1",
+ "@azure/msal-node": "^2.9.2",
+ "events": "^3.0.0",
+ "jws": "^4.0.0",
+ "open": "^8.0.0",
+ "stoppable": "^1.1.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/logger": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.1.tgz",
+ "integrity": "sha512-QYQeaJ+A5x6aMNu8BG5qdsVBnYBop9UMwgUvGihSjf1PdZZXB+c/oMdM2ajKwzobLBh9e9QuMQkN9iL+IxLBLA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@azure/msal-browser": {
+ "version": "3.17.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.17.0.tgz",
+ "integrity": "sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A==",
+ "dev": true,
+ "dependencies": {
+ "@azure/msal-common": "14.12.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/msal-common": {
+ "version": "14.12.0",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz",
+ "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/msal-node": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.9.2.tgz",
+ "integrity": "sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==",
+ "dev": true,
+ "dependencies": {
+ "@azure/msal-common": "14.12.0",
+ "jsonwebtoken": "^9.0.0",
+ "uuid": "^8.3.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@azure/storage-blob": {
+ "version": "12.17.0",
+ "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.17.0.tgz",
+ "integrity": "sha512-sM4vpsCpcCApagRW5UIjQNlNylo02my2opgp0Emi8x888hZUvJ3dN69Oq20cEGXkMUWnoCrBaB0zyS3yeB87sQ==",
+ "dev": true,
+ "dependencies": {
+ "@azure/abort-controller": "^1.0.0",
+ "@azure/core-http": "^3.0.0",
+ "@azure/core-lro": "^2.2.0",
+ "@azure/core-paging": "^1.1.1",
+ "@azure/core-tracing": "1.0.0-preview.13",
+ "@azure/logger": "^1.0.0",
+ "events": "^3.0.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@azure/storage-blob/node_modules/@azure/core-tracing": {
+ "version": "1.0.0-preview.13",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+ "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+ "dev": true,
+ "dependencies": {
+ "@opentelemetry/api": "^1.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@electron/asar": {
+ "version": "3.2.10",
+ "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz",
+ "integrity": "sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^5.0.0",
+ "glob": "^7.1.6",
+ "minimatch": "^3.0.4"
+ },
+ "bin": {
+ "asar": "bin/asar.js"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/@electron/asar/node_modules/commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@electron/get": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
+ "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^11.8.5",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz",
+ "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz",
+ "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz",
+ "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz",
+ "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz",
+ "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz",
+ "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz",
+ "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz",
+ "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz",
+ "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz",
+ "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz",
+ "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz",
+ "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz",
+ "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz",
+ "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz",
+ "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz",
+ "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz",
+ "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz",
+ "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz",
+ "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz",
+ "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz",
+ "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz",
+ "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz",
+ "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz",
+ "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@malept/cross-spawn-promise": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
+ "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/malept"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund"
+ }
+ ],
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/@opentelemetry/api": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.3.tgz",
+ "integrity": "sha512-puWxACExDe9nxbBB3lOymQFrLYml2dVOrd7USiVRnSbgXE+KwBu+HxFvxrzfqsiSda9IWsXJG1ef7C1O2/GmKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "dev": true,
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/ansi-colors": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@types/ansi-colors/-/ansi-colors-3.2.0.tgz",
+ "integrity": "sha512-0caWAhXht9N2lOdMzJLXybsSkYCx1QOdxx6pae48tswI9QV3DFX26AoOpy0JxwhCb+zISTqmd6H8t9Zby9BoZg==",
+ "dev": true
+ },
+ "node_modules/@types/byline": {
+ "version": "4.2.32",
+ "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.32.tgz",
+ "integrity": "sha512-qtlm/J6XOO9p+Ep/ZB5+mCFEDhzWDDHWU4a1eReN7lkPZXW9rkloq2jcAhvKKmlO5tL2GSvKROb+PTsNVhBiyQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.0.0.tgz",
+ "integrity": "sha1-QXVgIAMx4buE1y2oU5EQLC/NYbc= sha512-B7FcD9ry40L831t7iuHQyDfYi+qVEV75qkEI2ROOyfjb2PfkAspL+NK6B2A0BceMuNhiYRmtKTNnNP7Ul4N2Pg==",
+ "dev": true
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz",
+ "integrity": "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==",
+ "dev": true,
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/events": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
+ "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
+ "dev": true
+ },
+ "node_modules/@types/expect": {
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz",
+ "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==",
+ "dev": true
+ },
+ "node_modules/@types/fancy-log": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@types/fancy-log/-/fancy-log-1.3.0.tgz",
+ "integrity": "sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw==",
+ "dev": true
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "9.0.12",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz",
+ "integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+ "dev": true,
+ "dependencies": {
+ "@types/events": "*",
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha512-RHv6ZQjcTncXo3thYZrsbAVwoy4vSKosSWhuhuQxLOTv74OJuFQxXkmUuZCr3q9uNBEVCvIzmZL/FeRNbHZGUg==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp": {
+ "version": "4.0.17",
+ "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.17.tgz",
+ "integrity": "sha512-+pKQynu2C/HS16kgmDlAicjtFYP8kaa86eE9P0Ae7GB5W29we/E2TIdbOWtEZD5XkpY+jr8fyqfwO6SWZecLpQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/undertaker": ">=1.2.6",
+ "@types/vinyl-fs": "*",
+ "chokidar": "^3.3.1"
+ }
+ },
+ "node_modules/@types/gulp-concat": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/gulp-concat/-/gulp-concat-0.0.32.tgz",
+ "integrity": "sha512-CUCFADlITzzBfBa2bdGzhKtvBr4eFh+evb+4igVbvPoO5RyPfHifmyQlZl6lM7q19+OKncRlFXDU7B4X9Ayo2g==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp-filter": {
+ "version": "3.0.32",
+ "resolved": "https://registry.npmjs.org/@types/gulp-filter/-/gulp-filter-3.0.32.tgz",
+ "integrity": "sha512-JvY4qTxXehoK2yCUxYVxTMvckVbDM5TWHWeUoYJyX31gwFqw4YDD6JNzhuTxI3yHPUTY4BBRTqgm6puQEZVCNg==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*",
+ "@types/vinyl": "*"
+ }
+ },
+ "node_modules/@types/gulp-gzip": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/@types/gulp-gzip/-/gulp-gzip-0.0.31.tgz",
+ "integrity": "sha512-KQjHz1FTqLse8/EiktfhN/vo33vamX4gVAQhMTp55STDBA7UToW5CJqYyP7iRorkHK9/aJ2nL2hLkNZkY4M8+w==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp-json-editor": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmjs.org/@types/gulp-json-editor/-/gulp-json-editor-2.2.31.tgz",
+ "integrity": "sha512-piis0ImYAy0dt18R4EtTbAY+RV8jwTq5VisnUV6OfP8kD4743aHGkAdAd08No4NY3rFa5mD6ytIu8L0YU7nL9w==",
+ "dev": true,
+ "dependencies": {
+ "@types/js-beautify": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp-rename": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/gulp-rename/-/gulp-rename-0.0.33.tgz",
+ "integrity": "sha512-FIZQvbZJj6V1gHPTzO+g/BCWpDur7fJrroae4gwV3LaoHBQ+MrR9sB+2HssK8fHv4WdY6hVNxkcft9bYatuPIA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp-sort": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/gulp-sort/-/gulp-sort-2.0.4.tgz",
+ "integrity": "sha512-HUHxH+oMox1ct0SnxPqCXBni0MSws1ygcSAoLO4ISRmR/UuvNIz40rgNveZxwxQk+p78kw09z/qKQkgKJmNUOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/gulp-util": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp-sourcemaps": {
+ "version": "0.0.32",
+ "resolved": "https://registry.npmjs.org/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.32.tgz",
+ "integrity": "sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/gulp-util": {
+ "version": "3.0.41",
+ "resolved": "https://registry.npmjs.org/@types/gulp-util/-/gulp-util-3.0.41.tgz",
+ "integrity": "sha512-BK0kJZ8euQNlISsmD6mBr/1RZkB0mljdtBsz2usv+QHPV10alH2AJw5p05S9LU6S+VdTjbFmGU0OxpH++2W9/Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/through2": "*",
+ "@types/vinyl": "*",
+ "chalk": "^2.2.0"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
+ "dev": true
+ },
+ "node_modules/@types/js-beautify": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@types/js-beautify/-/js-beautify-1.8.0.tgz",
+ "integrity": "sha512-/siF86XrwDKLuHe8l7h6NhrAWgLdgqbxmjZv9NvGWmgYRZoTipkjKiWb0SQHy/jcR+ee0GvbG6uGd+LEBMGNvA==",
+ "dev": true
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/mime": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-0.0.29.tgz",
+ "integrity": "sha1-+8/TMFc7kS71nu7hRgK/rOYwdUs= sha512-EqWQSlonwbNgLMq2dMkokuzv/pwevb4q0JrPjfc7zzieG/cpqt+HsCE9dYoQd1snp2zlksl6k3rQ4LLfyQbQdA==",
+ "dev": true
+ },
+ "node_modules/@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
+ "node_modules/@types/minimist": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz",
+ "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==",
+ "dev": true
+ },
+ "node_modules/@types/mocha": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
+ "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
+ "dev": true
+ },
+ "node_modules/@types/ms": {
+ "version": "0.7.32",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz",
+ "integrity": "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz",
+ "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^3.0.0"
+ }
+ },
+ "node_modules/@types/node-fetch/node_modules/form-data": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
+ "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/pump": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/pump/-/pump-1.0.1.tgz",
+ "integrity": "sha1-roFXzv7wTRpNJMHMkdQDwvXaXNA= sha512-WGcg4jdczx60mEh0pWLUhw/2215BFYfSob5fHp/fJFZ+UFOiOxIqCnqRGSLWRsJ6Hvh4u2SBokxHDQ0wF9ujqQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
+ "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/rimraf": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.4.tgz",
+ "integrity": "sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/through": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.29.tgz",
+ "integrity": "sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/through2": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.36.tgz",
+ "integrity": "sha512-vuifQksQHJXhV9McpVsXKuhnf3lsoX70PnhcqIAbs9dqLH2NgrGz0DzZPDY3+Yh6eaRqcE1gnCQ6QhBn1/PT5A==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-7cTXwKP/HLOPVgjg+YhBdQ7bMiobGMuoBmrGmqwIWJv8elC6t1DfVc/mn4fD9UE1IjhwmhaQ5pGVXkmXbH0rhg==",
+ "dev": true
+ },
+ "node_modules/@types/tunnel": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz",
+ "integrity": "sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/undertaker": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.11.tgz",
+ "integrity": "sha512-j1Z0V2ByRHr8ZK7eOeGq0LGkkdthNFW0uAZGY22iRkNQNL9/vAV0yFPr1QN3FM/peY5bxs9P+1f0PYJTQVa5iA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/undertaker-registry": "*",
+ "async-done": "~1.3.2"
+ }
+ },
+ "node_modules/@types/undertaker-registry": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
+ "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==",
+ "dev": true
+ },
+ "node_modules/@types/vinyl": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz",
+ "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==",
+ "dev": true,
+ "dependencies": {
+ "@types/expect": "^1.20.4",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/vinyl-fs": {
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.9.tgz",
+ "integrity": "sha512-Q0EXd6c1fORjiOuK4ZaKdfFcMyFzJlTi56dqktwaWVLIDAzE49wUs3bKnYbZwzyMWoH+NcMWnRuR73S9A0jnRA==",
+ "dev": true,
+ "dependencies": {
+ "@types/events": "*",
+ "@types/glob-stream": "*",
+ "@types/node": "*",
+ "@types/vinyl": "*"
+ }
+ },
+ "node_modules/@types/workerpool": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/@types/workerpool/-/workerpool-6.4.0.tgz",
+ "integrity": "sha512-SIF2/169pDsLKeM8GQGHkOFifGalDbZgiBSaLUnnlVSRsAOenkAvQ6h4uhV2W+PZZczS+8LQxACwNkSykdT91A==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/xml2js": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.0.33.tgz",
+ "integrity": "sha1-IMXdZGAkUoTWSlVpABW5XkCft94= sha512-6dx6V6EdddqLjhxGdQrNdSu+O+3F7tOlyj660SpkO4/5uDSZM+LXcGQKAFnIJbvTzkQ6d2g3rWxyEXVwYAUoJg==",
+ "dev": true
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
+ "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@vscode/iconv-lite-umd": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz",
+ "integrity": "sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==",
+ "dev": true
+ },
+ "node_modules/@vscode/vsce": {
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.20.1.tgz",
+ "integrity": "sha512-ilbvoqvR/1/zseRPBAzYR6aKqSJ+jvda4/BqIwOqTxajpvLtEpK3kMLs77+dJdrlygS+VrP7Yhad8j0ukyD96g==",
+ "dev": true,
+ "dependencies": {
+ "azure-devops-node-api": "^11.0.1",
+ "chalk": "^2.4.2",
+ "cheerio": "^1.0.0-rc.9",
+ "commander": "^6.1.0",
+ "glob": "^7.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^12.3.2",
+ "mime": "^1.3.4",
+ "minimatch": "^3.0.3",
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.1",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^2.3.1",
+ "yazl": "^2.2.2"
+ },
+ "bin": {
+ "vsce": "vsce"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "optionalDependencies": {
+ "keytar": "^7.7.0"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true
+ },
+ "node_modules/@vscode/vsce/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.8.10",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+ "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
+ "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+ "devOptional": true,
+ "dependencies": {
+ "ansi-wrap": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE= sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
+ "optional": true,
+ "dependencies": {
+ "ansi-wrap": "0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768= sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "devOptional": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/async-done": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
+ "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.2",
+ "process-nextick-args": "^2.0.0",
+ "stream-exhaust": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k= sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "node_modules/azure-devops-node-api": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz",
+ "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==",
+ "dev": true,
+ "dependencies": {
+ "tunnel": "0.0.6",
+ "typed-rest-client": "^1.8.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "devOptional": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "optional": true,
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/boolean": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.2.tgz",
+ "integrity": "sha512-YN6UmV0FfLlBVvRvNPx3pz5W/mUoYB24J4WSXOKP/OOJpi+Oq6WYqPaNTHzjI0QzwWtnvEd5CGYyQPgp1jFxnw==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "devOptional": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw= sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
+ "dev": true
+ },
+ "node_modules/byline": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
+ "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "dev": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.12",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+ "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "dev": true,
+ "dependencies": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "htmlparser2": "^8.0.1",
+ "parse5": "^7.0.0",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+ "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
+ "devOptional": true,
+ "dependencies": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.5.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.1"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "optional": true
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg= sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "node_modules/clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
+ "devOptional": true
+ },
+ "node_modules/cloneable-readable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
+ "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
+ "devOptional": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "process-nextick-args": "^2.0.0",
+ "readable-stream": "^2.3.5"
+ }
+ },
+ "node_modules/cloneable-readable/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "devOptional": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "optional": true,
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz",
+ "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/compare-version": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+ "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA= sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "devOptional": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "devOptional": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "optional": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "object-keys": "^1.0.12"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk= sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/dir-compare": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz",
+ "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "^3.0.5",
+ "p-limit": "^3.1.0 "
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
+ "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/duplexify": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
+ "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.4.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/electron-osx-sign": {
+ "version": "0.4.16",
+ "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.16.tgz",
+ "integrity": "sha512-ziMWfc3NmQlwnWLW6EaZq8nH2BWVng/atX5GWsGwhexJYpdW6hsg//MkAfRTRx1kR3Veiqkeiog1ibkbA4x0rg==",
+ "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "compare-version": "^0.1.2",
+ "debug": "^2.6.8",
+ "isbinaryfile": "^3.0.2",
+ "minimist": "^1.2.0",
+ "plist": "^3.0.1"
+ },
+ "bin": {
+ "electron-osx-flat": "bin/electron-osx-flat.js",
+ "electron-osx-sign": "bin/electron-osx-sign.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/electron-osx-sign/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/electron-osx-sign/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "devOptional": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
+ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/esbuild": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz",
+ "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.23.0",
+ "@esbuild/android-arm": "0.23.0",
+ "@esbuild/android-arm64": "0.23.0",
+ "@esbuild/android-x64": "0.23.0",
+ "@esbuild/darwin-arm64": "0.23.0",
+ "@esbuild/darwin-x64": "0.23.0",
+ "@esbuild/freebsd-arm64": "0.23.0",
+ "@esbuild/freebsd-x64": "0.23.0",
+ "@esbuild/linux-arm": "0.23.0",
+ "@esbuild/linux-arm64": "0.23.0",
+ "@esbuild/linux-ia32": "0.23.0",
+ "@esbuild/linux-loong64": "0.23.0",
+ "@esbuild/linux-mips64el": "0.23.0",
+ "@esbuild/linux-ppc64": "0.23.0",
+ "@esbuild/linux-riscv64": "0.23.0",
+ "@esbuild/linux-s390x": "0.23.0",
+ "@esbuild/linux-x64": "0.23.0",
+ "@esbuild/netbsd-x64": "0.23.0",
+ "@esbuild/openbsd-arm64": "0.23.0",
+ "@esbuild/openbsd-x64": "0.23.0",
+ "@esbuild/sunos-x64": "0.23.0",
+ "@esbuild/win32-arm64": "0.23.0",
+ "@esbuild/win32-ia32": "0.23.0",
+ "@esbuild/win32-x64": "0.23.0"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
+ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "devOptional": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
+ "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
+ "optional": true,
+ "dependencies": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "devOptional": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/first-chunk-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz",
+ "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==",
+ "optional": true,
+ "dependencies": {
+ "readable-stream": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/first-chunk-stream/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "optional": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/fork-stream": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz",
+ "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==",
+ "dev": true
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "optional": true
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "optional": true
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "devOptional": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global-agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/global-agent/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz",
+ "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
+ "devOptional": true
+ },
+ "node_modules/gulp-merge-json": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/gulp-merge-json/-/gulp-merge-json-2.1.1.tgz",
+ "integrity": "sha512-VhvAlcf+dcCb94j/2yDPWxJ3X7x4P/Xwcrv1dhjYuRgvADwFJmaQwl4zbuq+GDZvzMacbVncWtEdsETpUSkhYw==",
+ "dev": true,
+ "dependencies": {
+ "json5": "^2.1.3",
+ "lodash.mergewith": "^4.6.1",
+ "plugin-error": "^1.0.1",
+ "through": "^2.3.8",
+ "vinyl": "^2.1.0"
+ }
+ },
+ "node_modules/gulp-sort": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-sort/-/gulp-sort-2.0.0.tgz",
+ "integrity": "sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==",
+ "dev": true,
+ "dependencies": {
+ "through2": "^2.0.1"
+ }
+ },
+ "node_modules/gulp-sort/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/gulp-sort/node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0= sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
+ "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "entities": "^4.3.0"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "dev": true
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dev": true,
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "devOptional": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "optional": true
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "devOptional": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "devOptional": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "devOptional": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "devOptional": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
+ "optional": true
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "devOptional": true
+ },
+ "node_modules/isbinaryfile": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+ "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-alloc": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8= sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jsbi": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.1.4.tgz",
+ "integrity": "sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg==",
+ "dev": true
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
+ "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz",
+ "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz",
+ "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==",
+ "dev": true,
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash": "^4.17.21",
+ "ms": "^2.1.1",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dev": true,
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/keytar": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+ "dev": true,
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.mergewith": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
+ "dev": true
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "devOptional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it/node_modules/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/matcher": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/matcher/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+ "dev": true
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz",
+ "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.28",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz",
+ "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.45.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "devOptional": true
+ },
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "optional": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "node_modules/nan": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz",
+ "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==",
+ "optional": true
+ },
+ "node_modules/napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "optional": true
+ },
+ "node_modules/node-abi": {
+ "version": "3.30.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.30.0.tgz",
+ "integrity": "sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==",
+ "optional": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-abi/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "optional": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-abort-controller": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
+ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
+ "dev": true
+ },
+ "node_modules/node-addon-api": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "devOptional": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+ "dev": true,
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "optional": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse-semver": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^5.1.0"
+ }
+ },
+ "node_modules/parse-semver/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dev": true,
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+ "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "dev": true,
+ "dependencies": {
+ "domhandler": "^5.0.2",
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA= sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/plist": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
+ "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
+ "dev": true,
+ "dependencies": {
+ "@xmldom/xmldom": "^0.8.8",
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^15.1.1"
+ },
+ "engines": {
+ "node": ">=10.4.0"
+ }
+ },
+ "node_modules/plugin-error": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
+ "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
+ "devOptional": true,
+ "dependencies": {
+ "ansi-colors": "^1.0.1",
+ "arr-diff": "^4.0.0",
+ "arr-union": "^3.1.0",
+ "extend-shallow": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/prebuild-install": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+ "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/priorityqueuejs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/priorityqueuejs/-/priorityqueuejs-1.0.0.tgz",
+ "integrity": "sha1-LuTyPCVgkT4IwHzlzN1t498sWvg= sha512-lg++21mreCEOuGWTbO5DnJKAdxfjrdN0S9ysoW9SzdSJvbkWpkaDdpG/cdsPCsEnoLUwmd9m3WcZhngW7yKA2g==",
+ "dev": true
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI= sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "devOptional": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "devOptional": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "optional": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "dev": true,
+ "dependencies": {
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "devOptional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
+ "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
+ "devOptional": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8= sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "devOptional": true
+ },
+ "node_modules/replace-ext": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
+ "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/roarr": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "devOptional": true
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "node_modules/semaphore": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz",
+ "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w= sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/serialize-error": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true
+ },
+ "node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/stoppable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
+ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/stream-exhaust": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
+ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
+ "dev": true
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "devOptional": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+ "optional": true,
+ "dependencies": {
+ "is-utf8": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-bom-buf": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz",
+ "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==",
+ "optional": true,
+ "dependencies": {
+ "is-utf8": "^0.2.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-bom-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz",
+ "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco= sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==",
+ "optional": true,
+ "dependencies": {
+ "first-chunk-stream": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo= sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "optional": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "optional": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ternary-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz",
+ "integrity": "sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==",
+ "dev": true,
+ "dependencies": {
+ "duplexify": "^4.1.1",
+ "fork-stream": "^0.0.4",
+ "merge-stream": "^2.0.0",
+ "through2": "^3.0.1"
+ }
+ },
+ "node_modules/ternary-stream/node_modules/through2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+ "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "2 || 3"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/through2": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+ "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "3"
+ }
+ },
+ "node_modules/time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tmp": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "devOptional": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/tree-sitter": {
+ "version": "0.20.6",
+ "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.6.tgz",
+ "integrity": "sha512-GxJodajVpfgb3UREzzIbtA1hyRnTxVbWVXrbC6sk4xTMH5ERMBJk9HJNq4c8jOJeUaIOmLcwg+t6mez/PDvGqg==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "nan": "^2.18.0",
+ "prebuild-install": "^7.1.1"
+ }
+ },
+ "node_modules/tree-sitter-typescript": {
+ "version": "0.20.5",
+ "resolved": "https://registry.npmjs.org/tree-sitter-typescript/-/tree-sitter-typescript-0.20.5.tgz",
+ "integrity": "sha512-RzK/Pc6k4GiXvInIBlo8ZggekP6rODfW2P6KHFCTSUHENsw6ynh+iacFhfkJRa4MT8EIN2WHygFJ7076/+eHKg==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "nan": "^2.18.0",
+ "tree-sitter": "^0.20.6"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "optional": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-rest-client": {
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
+ "dev": true,
+ "dependencies": {
+ "qs": "^6.9.1",
+ "tunnel": "0.0.6",
+ "underscore": "^1.12.1"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
+ },
+ "node_modules/underscore": {
+ "version": "1.13.7",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
+ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==",
+ "dev": true
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/universal-user-agent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
+ "dev": true
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/url-join": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
+ "dev": true
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "devOptional": true
+ },
+ "node_modules/uuid": {
+ "version": "8.3.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
+ "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/vinyl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
+ "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
+ "devOptional": true,
+ "dependencies": {
+ "clone": "^2.1.1",
+ "clone-buffer": "^1.0.0",
+ "clone-stats": "^1.0.0",
+ "cloneable-readable": "^1.0.0",
+ "remove-trailing-separator": "^1.0.1",
+ "replace-ext": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vinyl-file": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-3.0.0.tgz",
+ "integrity": "sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U= sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==",
+ "optional": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.3.0",
+ "strip-bom-buf": "^1.0.0",
+ "strip-bom-stream": "^2.0.0",
+ "vinyl": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/vscode-gulp-watch": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vscode-gulp-watch/-/vscode-gulp-watch-5.0.3.tgz",
+ "integrity": "sha512-MTUp2yLE9CshhkNSNV58EQNxQSeF8lIj3mkXZX9a1vAk+EQNM2PAYdPUDSd/P/08W3PMHGznEiZyfK7JAjLosg==",
+ "optional": true,
+ "dependencies": {
+ "ansi-colors": "4.1.1",
+ "anymatch": "^3.1.1",
+ "chokidar": "3.5.1",
+ "fancy-log": "^1.3.3",
+ "glob-parent": "^5.1.1",
+ "normalize-path": "^3.0.0",
+ "object-assign": "^4.1.1",
+ "plugin-error": "1.0.1",
+ "readable-stream": "^3.6.0",
+ "vinyl": "^2.2.0",
+ "vinyl-file": "^3.0.0"
+ }
+ },
+ "node_modules/vscode-gulp-watch/node_modules/ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/vscode-universal-bundler": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/vscode-universal-bundler/-/vscode-universal-bundler-0.1.3.tgz",
+ "integrity": "sha512-USXJqgD+ySROqgjl+KrGjlF7MvNnqsI6my1kUOsAXARmNqBjXk38w8g2BF6PEXVOYOQ+npRcTA7athXNU4Jjog==",
+ "dev": true,
+ "dependencies": {
+ "@electron/asar": "^3.2.7",
+ "@malept/cross-spawn-promise": "^2.0.0",
+ "debug": "^4.3.1",
+ "dir-compare": "^4.2.0",
+ "fs-extra": "^11.1.1",
+ "minimatch": "^9.0.3",
+ "plist": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=16.4"
+ }
+ },
+ "node_modules/vscode-universal-bundler/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/vscode-universal-bundler/node_modules/fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/vscode-universal-bundler/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/vscode-universal-bundler/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/vscode-universal-bundler/node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0= sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/workerpool": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.0.tgz",
+ "integrity": "sha512-r64Ea3glXY2RVzMeNxB+4J+0YHAVzUdV4cM5nHi4BBC2LvnO1pWFAIYKYuGcPElbg1/7eEiaPtZ/jzCjIUuGBg==",
+ "dev": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "devOptional": true
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dev": true,
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xml2js/node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "devOptional": true
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yazl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
+ "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/build/package.json b/build/package.json
index 0bbeed3f136..7017b9144e0 100644
--- a/build/package.json
+++ b/build/package.json
@@ -20,11 +20,11 @@
"@types/gulp-gzip": "^0.0.31",
"@types/gulp-json-editor": "^2.2.31",
"@types/gulp-rename": "^0.0.33",
+ "@types/gulp-sort": "^2.0.4",
"@types/gulp-sourcemaps": "^0.0.32",
"@types/mime": "0.0.29",
"@types/minimatch": "^3.0.3",
"@types/minimist": "^1.2.1",
- "@types/mkdirp": "^1.0.1",
"@types/mocha": "^9.1.1",
"@types/node": "20.x",
"@types/pump": "^1.0.1",
@@ -35,26 +35,27 @@
"@types/workerpool": "^6.4.0",
"@types/xml2js": "0.0.33",
"@vscode/iconv-lite-umd": "0.7.0",
- "@vscode/vsce": "^2.16.0",
+ "@vscode/vsce": "2.20.1",
"byline": "^5.0.0",
"colors": "^1.4.0",
"commander": "^7.0.0",
"debug": "^4.3.2",
"electron-osx-sign": "^0.4.16",
- "esbuild": "0.20.0",
+ "esbuild": "0.23.0",
"extract-zip": "^2.0.1",
"gulp-merge-json": "^2.1.1",
+ "gulp-sort": "^2.0.0",
"jsonc-parser": "^2.3.0",
"mime": "^1.4.1",
- "mkdirp": "^1.0.4",
"source-map": "0.6.1",
"ternary-stream": "^3.0.0",
"through2": "^4.0.2",
"tmp": "^0.2.1",
- "vscode-universal-bundler": "^0.0.2",
+ "vscode-universal-bundler": "^0.1.3",
"workerpool": "^6.4.0",
"yauzl": "^2.10.0"
},
+ "type": "commonjs",
"scripts": {
"compile": "../node_modules/.bin/tsc -p tsconfig.build.json",
"watch": "../node_modules/.bin/tsc -p tsconfig.build.json --watch",
diff --git a/build/setup-npm-registry.js b/build/setup-npm-registry.js
index 98bc836b072..24c850dbb84 100644
--- a/build/setup-npm-registry.js
+++ b/build/setup-npm-registry.js
@@ -8,7 +8,7 @@
const fs = require('fs').promises;
const path = require('path');
-async function* getYarnLockFiles(dir) {
+async function* getPackageLockFiles(dir) {
const files = await fs.readdir(dir);
for (const file of files) {
@@ -16,8 +16,8 @@ async function* getYarnLockFiles(dir) {
const stat = await fs.stat(fullPath);
if (stat.isDirectory()) {
- yield* getYarnLockFiles(fullPath);
- } else if (file === 'yarn.lock') {
+ yield* getPackageLockFiles(fullPath);
+ } else if (file === 'package-lock.json') {
yield fullPath;
}
}
@@ -32,7 +32,7 @@ async function setup(url, file) {
async function main(url, dir) {
const root = dir ?? process.cwd();
- for await (const file of getYarnLockFiles(root)) {
+ for await (const file of getPackageLockFiles(root)) {
console.log(`Enabling custom NPM registry: ${path.relative(root, file)}`);
await setup(url, file);
}
diff --git a/build/yarn.lock b/build/yarn.lock
deleted file mode 100644
index d0c7960a11e..00000000000
--- a/build/yarn.lock
+++ /dev/null
@@ -1,2758 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@azure/abort-controller@^1.0.0":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.2.tgz#822405c966b2aec16fb62c1b19d37eaccf231995"
- integrity sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g==
- dependencies:
- tslib "^2.0.0"
-
-"@azure/abort-controller@^2.0.0":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d"
- integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==
- dependencies:
- tslib "^2.6.2"
-
-"@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", "@azure/core-auth@^1.5.0":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.5.0.tgz#a41848c5c31cb3b7c84c409885267d55a2c92e44"
- integrity sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-util" "^1.1.0"
- tslib "^2.2.0"
-
-"@azure/core-client@^1.4.0":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.5.0.tgz#7aabb87d20e08db3683a117191c844bc19adb74e"
- integrity sha512-YNk8i9LT6YcFdFO+RRU0E4Ef+A8Y5lhXo6lz61rwbG8Uo7kSqh0YqK04OexiilM43xd6n3Y9yBhLnb1NFNI9dA==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-asynciterator-polyfill" "^1.0.0"
- "@azure/core-auth" "^1.3.0"
- "@azure/core-rest-pipeline" "^1.5.0"
- "@azure/core-tracing" "1.0.0-preview.13"
- "@azure/logger" "^1.0.0"
- tslib "^2.2.0"
-
-"@azure/core-http@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-3.0.0.tgz#345845f9ba479a5ee41efc3fd7a13e82d2a0ec47"
- integrity sha512-BxI2SlGFPPz6J1XyZNIVUf0QZLBKFX+ViFjKOkzqD18J1zOINIQ8JSBKKr+i+v8+MB6LacL6Nn/sP/TE13+s2Q==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-auth" "^1.3.0"
- "@azure/core-tracing" "1.0.0-preview.13"
- "@azure/core-util" "^1.1.1"
- "@azure/logger" "^1.0.0"
- "@types/node-fetch" "^2.5.0"
- "@types/tunnel" "^0.0.3"
- form-data "^4.0.0"
- node-fetch "^2.6.7"
- process "^0.11.10"
- tslib "^2.2.0"
- tunnel "^0.0.6"
- uuid "^8.3.0"
- xml2js "^0.4.19"
-
-"@azure/core-lro@^2.2.0":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.2.1.tgz#5527b41037c658d3aefc19d68633e51e53d6e6a3"
- integrity sha512-HE6PBl+mlKa0eBsLwusHqAqjLc5n9ByxeDo3Hz4kF3B1hqHvRkBr4oMgoT6tX7Hc3q97KfDctDUon7EhvoeHPA==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-tracing" "1.0.0-preview.13"
- "@azure/logger" "^1.0.0"
- tslib "^2.2.0"
-
-"@azure/core-paging@^1.1.1":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc"
- integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A==
- dependencies:
- "@azure/core-asynciterator-polyfill" "^1.0.0"
-
-"@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.2.0", "@azure/core-rest-pipeline@^1.5.0":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.7.0.tgz#71f42c19af160422cc84513809ff9668d8047087"
- integrity sha512-e2awPzwMKHrmvYgZ0qIKNkqnCM1QoDs7A0rOiS3OSAlOQOz/kL7PPKHXwFMuBeaRvS8i7fgobJn79q2Cji5f+Q==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-auth" "^1.3.0"
- "@azure/core-tracing" "1.0.0-preview.13"
- "@azure/logger" "^1.0.0"
- form-data "^4.0.0"
- http-proxy-agent "^4.0.1"
- https-proxy-agent "^5.0.0"
- tslib "^2.2.0"
- uuid "^8.3.0"
-
-"@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/core-tracing@^1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.1.tgz#352a38cbea438c4a83c86b314f48017d70ba9503"
- integrity sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==
- dependencies:
- tslib "^2.2.0"
-
-"@azure/core-util@^1.1.0", "@azure/core-util@^1.1.1", "@azure/core-util@^1.3.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.0.tgz#469afd7e6452d5388b189f90d33f7756b0b210d1"
- integrity sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==
- dependencies:
- "@azure/abort-controller" "^2.0.0"
- tslib "^2.6.2"
-
-"@azure/cosmos@^3":
- version "3.17.3"
- resolved "https://registry.yarnpkg.com/@azure/cosmos/-/cosmos-3.17.3.tgz#380398496af8ef3473ae0a9ad8cdbab32d91eb08"
- integrity sha512-wBglkQ6Irjv5Vo2iw8fd6eYj60WYRSSg4/0DBkeOP6BwQ4RA91znsOHd6s3qG6UAbNgYuzC9Nnq07vlFFZkHEw==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-auth" "^1.3.0"
- "@azure/core-rest-pipeline" "^1.2.0"
- "@azure/core-tracing" "^1.0.0"
- debug "^4.1.1"
- fast-json-stable-stringify "^2.1.0"
- jsbi "^3.1.3"
- node-abort-controller "^3.0.0"
- priorityqueuejs "^1.0.0"
- semaphore "^1.0.5"
- tslib "^2.2.0"
- universal-user-agent "^6.0.0"
- uuid "^8.3.0"
-
-"@azure/identity@^4.2.1":
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.1.tgz#22b366201e989b7b41c0e1690e103bd579c31e4c"
- integrity sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-auth" "^1.5.0"
- "@azure/core-client" "^1.4.0"
- "@azure/core-rest-pipeline" "^1.1.0"
- "@azure/core-tracing" "^1.0.0"
- "@azure/core-util" "^1.3.0"
- "@azure/logger" "^1.0.0"
- "@azure/msal-browser" "^3.11.1"
- "@azure/msal-node" "^2.9.2"
- events "^3.0.0"
- jws "^4.0.0"
- open "^8.0.0"
- stoppable "^1.1.0"
- tslib "^2.2.0"
-
-"@azure/logger@^1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.1.tgz#19b333203d1b2931353d8879e814b64a7274837a"
- integrity sha512-QYQeaJ+A5x6aMNu8BG5qdsVBnYBop9UMwgUvGihSjf1PdZZXB+c/oMdM2ajKwzobLBh9e9QuMQkN9iL+IxLBLA==
- dependencies:
- tslib "^2.0.0"
-
-"@azure/msal-browser@^3.11.1":
- version "3.17.0"
- resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.17.0.tgz#dee9ccae586239e7e0708b261f7ffa5bc7e00fb7"
- integrity sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A==
- dependencies:
- "@azure/msal-common" "14.12.0"
-
-"@azure/msal-common@14.12.0":
- version "14.12.0"
- resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.12.0.tgz#844abe269b071f8fa8949dadc2a7b65bbb147588"
- integrity sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==
-
-"@azure/msal-node@^2.9.2":
- version "2.9.2"
- resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.9.2.tgz#e6d3c1661012c1bd0ef68e328f73a2fdede52931"
- integrity sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==
- dependencies:
- "@azure/msal-common" "14.12.0"
- jsonwebtoken "^9.0.0"
- uuid "^8.3.0"
-
-"@azure/storage-blob@^12.17.0":
- version "12.17.0"
- resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.17.0.tgz#04aad7f59cb08dbbe5b1b672a9f5b6256c8c9006"
- integrity sha512-sM4vpsCpcCApagRW5UIjQNlNylo02my2opgp0Emi8x888hZUvJ3dN69Oq20cEGXkMUWnoCrBaB0zyS3yeB87sQ==
- dependencies:
- "@azure/abort-controller" "^1.0.0"
- "@azure/core-http" "^3.0.0"
- "@azure/core-lro" "^2.2.0"
- "@azure/core-paging" "^1.1.1"
- "@azure/core-tracing" "1.0.0-preview.13"
- "@azure/logger" "^1.0.0"
- events "^3.0.0"
- tslib "^2.2.0"
-
-"@electron/get@^2.0.0":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960"
- integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==
- dependencies:
- debug "^4.1.1"
- env-paths "^2.2.0"
- fs-extra "^8.1.0"
- got "^11.8.5"
- progress "^2.0.3"
- semver "^6.2.0"
- sumchecker "^3.0.1"
- optionalDependencies:
- global-agent "^3.0.0"
-
-"@esbuild/aix-ppc64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz#509621cca4e67caf0d18561a0c56f8b70237472f"
- integrity sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==
-
-"@esbuild/android-arm64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz#109a6fdc4a2783fc26193d2687827045d8fef5ab"
- integrity sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==
-
-"@esbuild/android-arm@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.0.tgz#1397a2c54c476c4799f9b9073550ede496c94ba5"
- integrity sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==
-
-"@esbuild/android-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.0.tgz#2b615abefb50dc0a70ac313971102f4ce2fdb3ca"
- integrity sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==
-
-"@esbuild/darwin-arm64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz#5c122ed799eb0c35b9d571097f77254964c276a2"
- integrity sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==
-
-"@esbuild/darwin-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz#9561d277002ba8caf1524f209de2b22e93d170c1"
- integrity sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==
-
-"@esbuild/freebsd-arm64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz#84178986a3138e8500d17cc380044868176dd821"
- integrity sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==
-
-"@esbuild/freebsd-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz#3f9ce53344af2f08d178551cd475629147324a83"
- integrity sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==
-
-"@esbuild/linux-arm64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz#24efa685515689df4ecbc13031fa0a9dda910a11"
- integrity sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==
-
-"@esbuild/linux-arm@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz#6b586a488e02e9b073a75a957f2952b3b6e87b4c"
- integrity sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==
-
-"@esbuild/linux-ia32@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz#84ce7864f762708dcebc1b123898a397dea13624"
- integrity sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==
-
-"@esbuild/linux-loong64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz#1922f571f4cae1958e3ad29439c563f7d4fd9037"
- integrity sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==
-
-"@esbuild/linux-mips64el@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz#7ca1bd9df3f874d18dbf46af009aebdb881188fe"
- integrity sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==
-
-"@esbuild/linux-ppc64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz#8f95baf05f9486343bceeb683703875d698708a4"
- integrity sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==
-
-"@esbuild/linux-riscv64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz#ca63b921d5fe315e28610deb0c195e79b1a262ca"
- integrity sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==
-
-"@esbuild/linux-s390x@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz#cb3d069f47dc202f785c997175f2307531371ef8"
- integrity sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==
-
-"@esbuild/linux-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz#ac617e0dc14e9758d3d7efd70288c14122557dc7"
- integrity sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==
-
-"@esbuild/netbsd-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz#6cc778567f1513da6e08060e0aeb41f82eb0f53c"
- integrity sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==
-
-"@esbuild/openbsd-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz#76848bcf76b4372574fb4d06cd0ed1fb29ec0fbe"
- integrity sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==
-
-"@esbuild/sunos-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz#ea4cd0639bf294ad51bc08ffbb2dac297e9b4706"
- integrity sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==
-
-"@esbuild/win32-arm64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz#a5c171e4a7f7e4e8be0e9947a65812c1535a7cf0"
- integrity sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==
-
-"@esbuild/win32-ia32@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz#f8ac5650c412d33ea62d7551e0caf82da52b7f85"
- integrity sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==
-
-"@esbuild/win32-x64@0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz#2efddf82828aac85e64cef62482af61c29561bee"
- integrity sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==
-
-"@malept/cross-spawn-promise@^1.1.0":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d"
- integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==
- dependencies:
- cross-spawn "^7.0.1"
-
-"@opentelemetry/api@^1.0.1":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.3.tgz#13a12ae9e05c2a782f7b5e84c3cbfda4225eaf80"
- integrity sha512-puWxACExDe9nxbBB3lOymQFrLYml2dVOrd7USiVRnSbgXE+KwBu+HxFvxrzfqsiSda9IWsXJG1ef7C1O2/GmKQ==
-
-"@sindresorhus/is@^4.0.0":
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
- integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
-
-"@szmarczak/http-timer@^4.0.5":
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
- integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
- dependencies:
- defer-to-connect "^2.0.0"
-
-"@tootallnate/once@1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
- integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
-
-"@types/ansi-colors@^3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@types/ansi-colors/-/ansi-colors-3.2.0.tgz#3e4fe85d9131ce1c6994f3040bd0b25306c16a6e"
- integrity sha512-0caWAhXht9N2lOdMzJLXybsSkYCx1QOdxx6pae48tswI9QV3DFX26AoOpy0JxwhCb+zISTqmd6H8t9Zby9BoZg==
-
-"@types/byline@^4.2.32":
- version "4.2.32"
- resolved "https://registry.yarnpkg.com/@types/byline/-/byline-4.2.32.tgz#9d35ec15968056118548412ee24c2c3026c997dc"
- integrity sha512-qtlm/J6XOO9p+Ep/ZB5+mCFEDhzWDDHWU4a1eReN7lkPZXW9rkloq2jcAhvKKmlO5tL2GSvKROb+PTsNVhBiyQ==
- dependencies:
- "@types/node" "*"
-
-"@types/cacheable-request@^6.0.1":
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
- integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
- dependencies:
- "@types/http-cache-semantics" "*"
- "@types/keyv" "^3.1.4"
- "@types/node" "*"
- "@types/responselike" "^1.0.0"
-
-"@types/debounce@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@types/debounce/-/debounce-1.0.0.tgz#417560200331e1bb84d72da85391102c2fcd61b7"
- integrity sha1-QXVgIAMx4buE1y2oU5EQLC/NYbc=
-
-"@types/debug@^4.1.5":
- version "4.1.9"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.9.tgz#906996938bc672aaf2fb8c0d3733ae1dda05b005"
- integrity sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==
- dependencies:
- "@types/ms" "*"
-
-"@types/events@*":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86"
- integrity sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==
-
-"@types/expect@^1.20.4":
- version "1.20.4"
- resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5"
- integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==
-
-"@types/fancy-log@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@types/fancy-log/-/fancy-log-1.3.0.tgz#a61ab476e5e628cd07a846330df53b85e05c8ce0"
- integrity sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw==
-
-"@types/fs-extra@^9.0.12":
- version "9.0.12"
- resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.12.tgz#9b8f27973df8a7a3920e8461517ebf8a7d4fdfaf"
- integrity sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==
- dependencies:
- "@types/node" "*"
-
-"@types/glob-stream@*":
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/@types/glob-stream/-/glob-stream-6.1.0.tgz#7ede8a33e59140534f8d8adfb8ac9edfb31897bc"
- integrity sha512-RHv6ZQjcTncXo3thYZrsbAVwoy4vSKosSWhuhuQxLOTv74OJuFQxXkmUuZCr3q9uNBEVCvIzmZL/FeRNbHZGUg==
- dependencies:
- "@types/glob" "*"
- "@types/node" "*"
-
-"@types/glob@*", "@types/glob@^7.1.1":
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
- integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
- dependencies:
- "@types/events" "*"
- "@types/minimatch" "*"
- "@types/node" "*"
-
-"@types/gulp-concat@^0.0.32":
- version "0.0.32"
- resolved "https://registry.yarnpkg.com/@types/gulp-concat/-/gulp-concat-0.0.32.tgz#72486028b1cf5faa94c8c1cf34c626531cecacd6"
- integrity sha512-CUCFADlITzzBfBa2bdGzhKtvBr4eFh+evb+4igVbvPoO5RyPfHifmyQlZl6lM7q19+OKncRlFXDU7B4X9Ayo2g==
- dependencies:
- "@types/node" "*"
-
-"@types/gulp-filter@^3.0.32":
- version "3.0.32"
- resolved "https://registry.yarnpkg.com/@types/gulp-filter/-/gulp-filter-3.0.32.tgz#eeff3e9dbc092268fed01f2421ab00f6c8cb4848"
- integrity sha512-JvY4qTxXehoK2yCUxYVxTMvckVbDM5TWHWeUoYJyX31gwFqw4YDD6JNzhuTxI3yHPUTY4BBRTqgm6puQEZVCNg==
- dependencies:
- "@types/minimatch" "*"
- "@types/node" "*"
- "@types/vinyl" "*"
-
-"@types/gulp-gzip@^0.0.31":
- version "0.0.31"
- resolved "https://registry.yarnpkg.com/@types/gulp-gzip/-/gulp-gzip-0.0.31.tgz#9358def25540442138fd61a7227f40d4c1e26760"
- integrity sha512-KQjHz1FTqLse8/EiktfhN/vo33vamX4gVAQhMTp55STDBA7UToW5CJqYyP7iRorkHK9/aJ2nL2hLkNZkY4M8+w==
- dependencies:
- "@types/node" "*"
-
-"@types/gulp-json-editor@^2.2.31":
- version "2.2.31"
- resolved "https://registry.yarnpkg.com/@types/gulp-json-editor/-/gulp-json-editor-2.2.31.tgz#3c1a8950556c109a0e2d0ab11d5f2a2443665ed2"
- integrity sha512-piis0ImYAy0dt18R4EtTbAY+RV8jwTq5VisnUV6OfP8kD4743aHGkAdAd08No4NY3rFa5mD6ytIu8L0YU7nL9w==
- dependencies:
- "@types/js-beautify" "*"
- "@types/node" "*"
-
-"@types/gulp-rename@^0.0.33":
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/@types/gulp-rename/-/gulp-rename-0.0.33.tgz#38d146e97786569f74f5391a1b1f9b5198674b6c"
- integrity sha512-FIZQvbZJj6V1gHPTzO+g/BCWpDur7fJrroae4gwV3LaoHBQ+MrR9sB+2HssK8fHv4WdY6hVNxkcft9bYatuPIA==
- dependencies:
- "@types/node" "*"
-
-"@types/gulp-sourcemaps@^0.0.32":
- version "0.0.32"
- resolved "https://registry.yarnpkg.com/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.32.tgz#e79ee617e0cb15729874be4533fe59c07793a175"
- integrity sha512-+7BAmptW2bxyJnJcCEuie7vLoop3FwWgCdBMzyv7MYXED/HeNMeQuX7uPCkp4vfU1TTu4CYFH0IckNPvo0VePA==
- dependencies:
- "@types/node" "*"
-
-"@types/gulp@^4.0.17":
- version "4.0.17"
- resolved "https://registry.yarnpkg.com/@types/gulp/-/gulp-4.0.17.tgz#b314c3762d08d8d69b7c0b86f78d069bafd65009"
- integrity sha512-+pKQynu2C/HS16kgmDlAicjtFYP8kaa86eE9P0Ae7GB5W29we/E2TIdbOWtEZD5XkpY+jr8fyqfwO6SWZecLpQ==
- dependencies:
- "@types/node" "*"
- "@types/undertaker" ">=1.2.6"
- "@types/vinyl-fs" "*"
- chokidar "^3.3.1"
-
-"@types/http-cache-semantics@*":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
- integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
-
-"@types/js-beautify@*":
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/@types/js-beautify/-/js-beautify-1.8.0.tgz#0369d3d0e1f35a6aec07cb4da2ee2bcda111367c"
- integrity sha512-/siF86XrwDKLuHe8l7h6NhrAWgLdgqbxmjZv9NvGWmgYRZoTipkjKiWb0SQHy/jcR+ee0GvbG6uGd+LEBMGNvA==
-
-"@types/keyv@^3.1.4":
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
- integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
- dependencies:
- "@types/node" "*"
-
-"@types/mime@0.0.29":
- version "0.0.29"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-0.0.29.tgz#fbcfd330573b912ef59eeee14602bface630754b"
- integrity sha1-+8/TMFc7kS71nu7hRgK/rOYwdUs=
-
-"@types/minimatch@*", "@types/minimatch@^3.0.3":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
- integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
-
-"@types/minimist@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
- integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==
-
-"@types/mkdirp@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.1.tgz#0930b948914a78587de35458b86c907b6e98bbf6"
- integrity sha512-HkGSK7CGAXncr8Qn/0VqNtExEE+PHMWb+qlR1faHMao7ng6P3tAaoWWBMdva0gL5h4zprjIO89GJOLXsMcDm1Q==
- dependencies:
- "@types/node" "*"
-
-"@types/mocha@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
- integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
-
-"@types/ms@*":
- version "0.7.32"
- resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.32.tgz#f6cd08939ae3ad886fcc92ef7f0109dacddf61ab"
- integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==
-
-"@types/node-fetch@^2.5.0":
- version "2.5.8"
- resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.8.tgz#e199c835d234c7eb0846f6618012e558544ee2fb"
- integrity sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==
- 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"
- integrity sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/pump@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@types/pump/-/pump-1.0.1.tgz#ae8157cefef04d1a4d24c1cc91d403c2f5da5cd0"
- integrity sha1-roFXzv7wTRpNJMHMkdQDwvXaXNA=
- dependencies:
- "@types/node" "*"
-
-"@types/responselike@^1.0.0":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50"
- integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==
- dependencies:
- "@types/node" "*"
-
-"@types/rimraf@^2.0.4":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46"
- integrity sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q==
- dependencies:
- "@types/glob" "*"
- "@types/node" "*"
-
-"@types/through2@^2.0.36":
- version "2.0.36"
- resolved "https://registry.yarnpkg.com/@types/through2/-/through2-2.0.36.tgz#35fda0db635827d44c0e08e2c94653e647574a00"
- integrity sha512-vuifQksQHJXhV9McpVsXKuhnf3lsoX70PnhcqIAbs9dqLH2NgrGz0DzZPDY3+Yh6eaRqcE1gnCQ6QhBn1/PT5A==
- dependencies:
- "@types/node" "*"
-
-"@types/through@^0.0.29":
- version "0.0.29"
- resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93"
- integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w==
- dependencies:
- "@types/node" "*"
-
-"@types/tmp@^0.2.1":
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.1.tgz#83ecf4ec22a8c218c71db25f316619fe5b986011"
- integrity sha512-7cTXwKP/HLOPVgjg+YhBdQ7bMiobGMuoBmrGmqwIWJv8elC6t1DfVc/mn4fD9UE1IjhwmhaQ5pGVXkmXbH0rhg==
-
-"@types/tunnel@^0.0.3":
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9"
- integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==
- dependencies:
- "@types/node" "*"
-
-"@types/undertaker-registry@*":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz#4306d4a03d7acedb974b66530832b90729e1d1da"
- integrity sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==
-
-"@types/undertaker@>=1.2.6":
- version "1.2.11"
- resolved "https://registry.yarnpkg.com/@types/undertaker/-/undertaker-1.2.11.tgz#d9e08b72c4bea5fc40e5bad63ad5a1a2b675e3ca"
- integrity sha512-j1Z0V2ByRHr8ZK7eOeGq0LGkkdthNFW0uAZGY22iRkNQNL9/vAV0yFPr1QN3FM/peY5bxs9P+1f0PYJTQVa5iA==
- dependencies:
- "@types/node" "*"
- "@types/undertaker-registry" "*"
- async-done "~1.3.2"
-
-"@types/vinyl-fs@*":
- version "2.4.9"
- resolved "https://registry.yarnpkg.com/@types/vinyl-fs/-/vinyl-fs-2.4.9.tgz#d312c24b5ba8d2db456d23ee4a66f9d016af82ea"
- integrity sha512-Q0EXd6c1fORjiOuK4ZaKdfFcMyFzJlTi56dqktwaWVLIDAzE49wUs3bKnYbZwzyMWoH+NcMWnRuR73S9A0jnRA==
- dependencies:
- "@types/events" "*"
- "@types/glob-stream" "*"
- "@types/node" "*"
- "@types/vinyl" "*"
-
-"@types/vinyl@*":
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.12.tgz#17642ca9a8ae10f3db018e9f885da4188db4c6e6"
- integrity sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==
- dependencies:
- "@types/expect" "^1.20.4"
- "@types/node" "*"
-
-"@types/workerpool@^6.4.0":
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/@types/workerpool/-/workerpool-6.4.0.tgz#c79292915dd08350d10e78e74687b6f401f270b8"
- integrity sha512-SIF2/169pDsLKeM8GQGHkOFifGalDbZgiBSaLUnnlVSRsAOenkAvQ6h4uhV2W+PZZczS+8LQxACwNkSykdT91A==
- dependencies:
- "@types/node" "*"
-
-"@types/xml2js@0.0.33":
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/@types/xml2js/-/xml2js-0.0.33.tgz#20c5dd6460245284d64a55690015b95e409fb7de"
- integrity sha1-IMXdZGAkUoTWSlVpABW5XkCft94=
-
-"@types/yauzl@^2.9.1":
- version "2.9.2"
- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
- integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
- dependencies:
- "@types/node" "*"
-
-"@vscode/iconv-lite-umd@0.7.0":
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz#d2f1e0664ee6036408f9743fee264ea0699b0e48"
- integrity sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==
-
-"@vscode/vsce@^2.16.0":
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.16.0.tgz#a3ddcf7e84914576f35d891e236bc496c568776f"
- integrity sha512-BhJ0zO7UxShLFBZM6jwOLt1ZVoqQ4r5Lj/kHNeYp0ICPXhz/erqBSMQnHkRgkjn2L/bh+TYFGkZyguhu/SKsjw==
- dependencies:
- azure-devops-node-api "^11.0.1"
- chalk "^2.4.2"
- cheerio "^1.0.0-rc.9"
- commander "^6.1.0"
- glob "^7.0.6"
- hosted-git-info "^4.0.2"
- leven "^3.1.0"
- markdown-it "^12.3.2"
- mime "^1.3.4"
- minimatch "^3.0.3"
- parse-semver "^1.1.1"
- read "^1.0.7"
- semver "^5.1.0"
- tmp "^0.2.1"
- typed-rest-client "^1.8.4"
- url-join "^4.0.1"
- xml2js "^0.4.23"
- yauzl "^2.3.1"
- yazl "^2.2.2"
- optionalDependencies:
- keytar "^7.7.0"
-
-agent-base@6:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
- integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
- dependencies:
- debug "4"
-
-ansi-colors@4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
- integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
-ansi-colors@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
- integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
- dependencies:
- ansi-wrap "^0.1.0"
-
-ansi-gray@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
- integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
- dependencies:
- ansi-wrap "0.1.0"
-
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
- integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
-
-anymatch@^3.1.1, anymatch@~3.1.1:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
-anymatch@~3.1.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
- integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
-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==
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-asar@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/asar/-/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b"
- integrity sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==
- dependencies:
- chromium-pickle-js "^0.2.0"
- commander "^5.0.0"
- glob "^7.1.6"
- minimatch "^3.0.4"
- optionalDependencies:
- "@types/glob" "^7.1.1"
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-async-done@~1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2"
- integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.2"
- process-nextick-args "^2.0.0"
- stream-exhaust "^1.0.1"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-
-at-least-node@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
- integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
-azure-devops-node-api@^11.0.1:
- version "11.2.0"
- resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz#bf04edbef60313117a0507415eed4790a420ad6b"
- integrity sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==
- dependencies:
- tunnel "0.0.6"
- typed-rest-client "^1.8.4"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-base64-js@^1.3.1, base64-js@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
-binary-extensions@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-
-bl@^4.0.3:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
- integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
- dependencies:
- buffer "^5.5.0"
- inherits "^2.0.4"
- readable-stream "^3.4.0"
-
-bluebird@^3.5.0:
- version "3.7.2"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
- integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-
-boolbase@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
-
-boolean@^3.0.1:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.1.2.tgz#e30f210a26b02458482a8cc353ab06f262a780c2"
- integrity sha512-YN6UmV0FfLlBVvRvNPx3pz5W/mUoYB24J4WSXOKP/OOJpi+Oq6WYqPaNTHzjI0QzwWtnvEd5CGYyQPgp1jFxnw==
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-buffer-alloc-unsafe@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
- integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
-
-buffer-alloc@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
- integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
- dependencies:
- buffer-alloc-unsafe "^1.1.0"
- buffer-fill "^1.0.0"
-
-buffer-crc32@~0.2.3:
- version "0.2.13"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
- integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
-
-buffer-equal-constant-time@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
- integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
-
-buffer-equal@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
- integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74=
-
-buffer-fill@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
- integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
-
-buffer@^5.5.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
- integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.1.13"
-
-byline@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
- integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
-
-cacheable-lookup@^5.0.3:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
- integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
-
-cacheable-request@^7.0.2:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817"
- integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==
- dependencies:
- clone-response "^1.0.2"
- get-stream "^5.1.0"
- http-cache-semantics "^4.0.0"
- keyv "^4.0.0"
- lowercase-keys "^2.0.0"
- normalize-url "^6.0.1"
- responselike "^2.0.0"
-
-call-bind@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
- dependencies:
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
-
-chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-cheerio-select@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
- integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
- dependencies:
- boolbase "^1.0.0"
- css-select "^5.1.0"
- css-what "^6.1.0"
- domelementtype "^2.3.0"
- domhandler "^5.0.3"
- domutils "^3.0.1"
-
-cheerio@^1.0.0-rc.9:
- version "1.0.0-rc.12"
- resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683"
- integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==
- dependencies:
- cheerio-select "^2.1.0"
- dom-serializer "^2.0.0"
- domhandler "^5.0.3"
- domutils "^3.0.1"
- htmlparser2 "^8.0.1"
- parse5 "^7.0.0"
- parse5-htmlparser2-tree-adapter "^7.0.0"
-
-chokidar@3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
- integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
- dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.5.0"
- optionalDependencies:
- fsevents "~2.3.1"
-
-chokidar@^3.3.1:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
- integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
-
-chownr@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
- integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
-
-chromium-pickle-js@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
- integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
-
-clone-buffer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
- integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
-
-clone-response@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
- integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
- dependencies:
- mimic-response "^1.0.0"
-
-clone-stats@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
- integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
-
-clone@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
- integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-
-cloneable-readable@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
- integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
- dependencies:
- inherits "^2.0.1"
- process-nextick-args "^2.0.0"
- readable-stream "^2.3.5"
-
-color-convert@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-support@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
- integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
-
-colors@1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
- integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
-
-colors@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
- integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
-
-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"
-
-commander@2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
- integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
- dependencies:
- graceful-readlink ">= 1.0.0"
-
-commander@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
- integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
-
-commander@^6.1.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
- integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
-
-commander@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2"
- integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==
-
-compare-version@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
- integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=
-
-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=
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cross-spawn@^7.0.1:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-css-select@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
- integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
- dependencies:
- boolbase "^1.0.0"
- css-what "^6.1.0"
- domhandler "^5.0.2"
- domutils "^3.0.1"
- nth-check "^2.0.1"
-
-css-what@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
- integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
-
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
- dependencies:
- ms "2.1.2"
-
-debug@^2.6.8:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-decompress-response@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
- integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
- dependencies:
- mimic-response "^3.1.0"
-
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
-defer-to-connect@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
- integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
-
-define-lazy-prop@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
- integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
-
-define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
-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=
-
-detect-libc@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
- integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
-
-detect-node@^2.0.4:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
- integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
-
-dir-compare@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631"
- integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==
- dependencies:
- buffer-equal "1.0.0"
- colors "1.0.3"
- commander "2.9.0"
- minimatch "3.0.4"
-
-dom-serializer@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
- integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
- dependencies:
- domelementtype "^2.3.0"
- domhandler "^5.0.2"
- entities "^4.2.0"
-
-domelementtype@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
- integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
-
-domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
- integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
- dependencies:
- domelementtype "^2.3.0"
-
-domutils@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c"
- integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==
- dependencies:
- dom-serializer "^2.0.0"
- domelementtype "^2.3.0"
- domhandler "^5.0.1"
-
-duplexify@^4.1.1:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0"
- integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==
- dependencies:
- end-of-stream "^1.4.1"
- inherits "^2.0.3"
- readable-stream "^3.1.1"
- stream-shift "^1.0.0"
-
-ecdsa-sig-formatter@1.0.11:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
- integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
- dependencies:
- safe-buffer "^5.0.1"
-
-electron-osx-sign@^0.4.16:
- version "0.4.16"
- resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.16.tgz#0be8e579b2d9fa4c12d2a21f063898294b3434aa"
- integrity sha512-ziMWfc3NmQlwnWLW6EaZq8nH2BWVng/atX5GWsGwhexJYpdW6hsg//MkAfRTRx1kR3Veiqkeiog1ibkbA4x0rg==
- dependencies:
- bluebird "^3.5.0"
- compare-version "^0.1.2"
- debug "^2.6.8"
- isbinaryfile "^3.0.2"
- minimist "^1.2.0"
- plist "^3.0.1"
-
-end-of-stream@^1.1.0, end-of-stream@^1.4.1:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
-
-entities@^4.2.0, entities@^4.3.0, entities@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
- integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
-
-entities@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
- integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
-
-env-paths@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
- integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
-
-es6-error@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
- integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
-
-esbuild@0.20.0:
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.0.tgz#a7170b63447286cd2ff1f01579f09970e6965da4"
- integrity sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.20.0"
- "@esbuild/android-arm" "0.20.0"
- "@esbuild/android-arm64" "0.20.0"
- "@esbuild/android-x64" "0.20.0"
- "@esbuild/darwin-arm64" "0.20.0"
- "@esbuild/darwin-x64" "0.20.0"
- "@esbuild/freebsd-arm64" "0.20.0"
- "@esbuild/freebsd-x64" "0.20.0"
- "@esbuild/linux-arm" "0.20.0"
- "@esbuild/linux-arm64" "0.20.0"
- "@esbuild/linux-ia32" "0.20.0"
- "@esbuild/linux-loong64" "0.20.0"
- "@esbuild/linux-mips64el" "0.20.0"
- "@esbuild/linux-ppc64" "0.20.0"
- "@esbuild/linux-riscv64" "0.20.0"
- "@esbuild/linux-s390x" "0.20.0"
- "@esbuild/linux-x64" "0.20.0"
- "@esbuild/netbsd-x64" "0.20.0"
- "@esbuild/openbsd-x64" "0.20.0"
- "@esbuild/sunos-x64" "0.20.0"
- "@esbuild/win32-arm64" "0.20.0"
- "@esbuild/win32-ia32" "0.20.0"
- "@esbuild/win32-x64" "0.20.0"
-
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-escape-string-regexp@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
- integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-
-events@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
- integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
-
-expand-template@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
- integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
-
-extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extract-zip@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
- integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
- dependencies:
- debug "^4.1.1"
- get-stream "^5.1.0"
- yauzl "^2.10.0"
- optionalDependencies:
- "@types/yauzl" "^2.9.1"
-
-fancy-log@^1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
- integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
- dependencies:
- ansi-gray "^0.1.1"
- color-support "^1.1.3"
- parse-node-version "^1.0.0"
- time-stamp "^1.0.0"
-
-fast-json-stable-stringify@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
- integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
-fd-slicer@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
- integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
- dependencies:
- pend "~1.2.0"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-first-chunk-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
- integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=
- dependencies:
- readable-stream "^2.0.2"
-
-fork-stream@^0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70"
- integrity sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==
-
-form-data@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
- integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-form-data@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
- integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-fs-constants@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
- integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-
-fs-extra@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
- integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-extra@^9.0.1:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
- integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
- dependencies:
- at-least-node "^1.0.0"
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^2.0.0"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@~2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
-fsevents@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-get-intrinsic@^1.0.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
- integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.3"
-
-get-stream@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
- integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
- dependencies:
- pump "^3.0.0"
-
-github-from-package@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
- integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
-
-glob-parent@^5.1.1, glob-parent@~5.1.0, glob-parent@~5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
- dependencies:
- is-glob "^4.0.1"
-
-glob@^7.0.6:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
- integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.1.1"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.1.3, glob@^7.1.6:
- version "7.1.7"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
- integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-global-agent@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
- integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==
- dependencies:
- boolean "^3.0.1"
- es6-error "^4.1.1"
- matcher "^3.0.0"
- roarr "^2.15.3"
- semver "^7.3.2"
- serialize-error "^7.0.1"
-
-globalthis@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b"
- integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==
- dependencies:
- define-properties "^1.1.3"
-
-got@^11.8.5:
- version "11.8.6"
- resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
- integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
- dependencies:
- "@sindresorhus/is" "^4.0.0"
- "@szmarczak/http-timer" "^4.0.5"
- "@types/cacheable-request" "^6.0.1"
- "@types/responselike" "^1.0.0"
- cacheable-lookup "^5.0.3"
- cacheable-request "^7.0.2"
- decompress-response "^6.0.0"
- http2-wrapper "^1.0.0-beta.5.2"
- lowercase-keys "^2.0.0"
- p-cancelable "^2.0.0"
- responselike "^2.0.0"
-
-graceful-fs@^4.1.2:
- version "4.2.10"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
- integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
-
-graceful-fs@^4.1.6, graceful-fs@^4.2.0:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
- integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
-
-"graceful-readlink@>= 1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
- integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
-
-gulp-merge-json@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/gulp-merge-json/-/gulp-merge-json-2.1.1.tgz#cfb1d066467577545b8c1c289a278e6ef4b4e0de"
- integrity sha512-VhvAlcf+dcCb94j/2yDPWxJ3X7x4P/Xwcrv1dhjYuRgvADwFJmaQwl4zbuq+GDZvzMacbVncWtEdsETpUSkhYw==
- dependencies:
- json5 "^2.1.3"
- lodash.mergewith "^4.6.1"
- plugin-error "^1.0.1"
- through "^2.3.8"
- vinyl "^2.1.0"
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-symbols@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-hosted-git-info@^4.0.2:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
- integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
- dependencies:
- lru-cache "^6.0.0"
-
-htmlparser2@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010"
- integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==
- dependencies:
- domelementtype "^2.3.0"
- domhandler "^5.0.2"
- domutils "^3.0.1"
- entities "^4.3.0"
-
-http-cache-semantics@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
- integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
-
-http-proxy-agent@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
- integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
- dependencies:
- "@tootallnate/once" "1"
- agent-base "6"
- debug "4"
-
-http2-wrapper@^1.0.0-beta.5.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
- integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
- dependencies:
- quick-lru "^5.1.1"
- resolve-alpn "^1.0.0"
-
-https-proxy-agent@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
- integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
- dependencies:
- agent-base "6"
- debug "4"
-
-ieee754@^1.1.13:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-ini@~1.3.0:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
-is-docker@^2.0.0, is-docker@^2.1.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
- integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
-
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-glob@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-glob@~4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
-is-utf8@^0.2.0, is-utf8@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
-is-wsl@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
- integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
- dependencies:
- is-docker "^2.0.0"
-
-isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isbinaryfile@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
- integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
- dependencies:
- buffer-alloc "^1.2.0"
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-jsbi@^3.1.3:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.1.4.tgz#9654dd02207a66a4911b4e4bb74265bc2cbc9dd0"
- integrity sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg==
-
-json-buffer@3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
- integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-
-json-stringify-safe@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
- integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
-json5@^2.1.3:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab"
- integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==
-
-jsonc-parser@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee"
- integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonfile@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
- integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
- dependencies:
- universalify "^2.0.0"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonwebtoken@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
- integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==
- dependencies:
- jws "^3.2.2"
- lodash "^4.17.21"
- ms "^2.1.1"
- semver "^7.3.8"
-
-jwa@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
- integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
- dependencies:
- buffer-equal-constant-time "1.0.1"
- ecdsa-sig-formatter "1.0.11"
- safe-buffer "^5.0.1"
-
-jwa@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc"
- integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==
- dependencies:
- buffer-equal-constant-time "1.0.1"
- ecdsa-sig-formatter "1.0.11"
- safe-buffer "^5.0.1"
-
-jws@^3.2.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
- integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
- dependencies:
- jwa "^1.4.1"
- safe-buffer "^5.0.1"
-
-jws@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4"
- integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==
- dependencies:
- jwa "^2.0.0"
- safe-buffer "^5.0.1"
-
-keytar@^7.7.0:
- version "7.9.0"
- resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb"
- integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==
- dependencies:
- node-addon-api "^4.3.0"
- prebuild-install "^7.0.1"
-
-keyv@^4.0.0:
- version "4.5.4"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
- integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
- dependencies:
- json-buffer "3.0.1"
-
-leven@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
- integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
-
-linkify-it@^3.0.1:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e"
- integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==
- dependencies:
- uc.micro "^1.0.1"
-
-lodash.mergewith@^4.6.1:
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
- integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
-
-lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-
-lowercase-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
- integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-
-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@^12.3.2:
- version "12.3.2"
- resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90"
- integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==
- dependencies:
- argparse "^2.0.1"
- entities "~2.1.0"
- linkify-it "^3.0.1"
- mdurl "^1.0.1"
- uc.micro "^1.0.5"
-
-matcher@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
- integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==
- dependencies:
- escape-string-regexp "^4.0.0"
-
-mdurl@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
- integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
-
-merge-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
- integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-mime-db@1.45.0:
- version "1.45.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
- integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
-
-mime-types@^2.1.12:
- version "2.1.28"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
- integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
- dependencies:
- mime-db "1.45.0"
-
-mime@^1.3.4, mime@^1.4.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
- integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-
-mimic-response@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
- integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
-
-mimic-response@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
- integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-
-minimatch@3.0.4, minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimatch@^3.0.3, minimatch@^3.1.1:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@^1.2.0, minimist@^1.2.3:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
- integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
-
-mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
- integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-
-mkdirp@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-mute-stream@~0.0.4:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
- integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
-
-nan@^2.18.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0"
- integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==
-
-napi-build-utils@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
- integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
-
-node-abi@^3.3.0:
- version "3.30.0"
- resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.30.0.tgz#d84687ad5d24ca81cdfa912a36f2c5c19b137359"
- integrity sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==
- dependencies:
- semver "^7.3.5"
-
-node-abort-controller@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
- integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==
-
-node-addon-api@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
- integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
-
-node-fetch@^2.6.7:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6"
- integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==
- dependencies:
- whatwg-url "^5.0.0"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-normalize-url@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
- integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
-
-nth-check@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
- integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
- dependencies:
- boolbase "^1.0.0"
-
-object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-inspect@^1.9.0:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
- integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
-
-object-keys@^1.0.12:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-open@^8.0.0:
- version "8.4.0"
- resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
- integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
- dependencies:
- define-lazy-prop "^2.0.0"
- is-docker "^2.1.1"
- is-wsl "^2.2.0"
-
-p-cancelable@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
- integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
-
-parse-node-version@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
- integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
-
-parse-semver@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8"
- integrity sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==
- dependencies:
- semver "^5.1.0"
-
-parse5-htmlparser2-tree-adapter@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1"
- integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==
- dependencies:
- domhandler "^5.0.2"
- parse5 "^7.0.0"
-
-parse5@^7.0.0:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
- integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
- dependencies:
- entities "^4.4.0"
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-pend@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
- integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
-
-picomatch@^2.0.4:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
- integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
-
-picomatch@^2.2.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
-
-plist@^3.0.1:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987"
- integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==
- dependencies:
- base64-js "^1.5.1"
- xmlbuilder "^9.0.7"
-
-plugin-error@1.0.1, plugin-error@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
- integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
- dependencies:
- ansi-colors "^1.0.1"
- arr-diff "^4.0.0"
- arr-union "^3.1.0"
- extend-shallow "^3.0.2"
-
-prebuild-install@^7.0.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
- integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
- dependencies:
- detect-libc "^2.0.0"
- expand-template "^2.0.3"
- github-from-package "0.0.0"
- minimist "^1.2.3"
- mkdirp-classic "^0.5.3"
- napi-build-utils "^1.0.1"
- node-abi "^3.3.0"
- pump "^3.0.0"
- rc "^1.2.7"
- simple-get "^4.0.0"
- tar-fs "^2.0.0"
- tunnel-agent "^0.6.0"
-
-prebuild-install@^7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056"
- integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==
- dependencies:
- detect-libc "^2.0.0"
- expand-template "^2.0.3"
- github-from-package "0.0.0"
- minimist "^1.2.3"
- mkdirp-classic "^0.5.3"
- napi-build-utils "^1.0.1"
- node-abi "^3.3.0"
- pump "^3.0.0"
- rc "^1.2.7"
- simple-get "^4.0.0"
- tar-fs "^2.0.0"
- tunnel-agent "^0.6.0"
-
-priorityqueuejs@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/priorityqueuejs/-/priorityqueuejs-1.0.0.tgz#2ee4f23c2560913e08c07ce5ccdd6de3df2c5af8"
- integrity sha1-LuTyPCVgkT4IwHzlzN1t498sWvg=
-
-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==
-
-process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-
-progress@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
- integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
-pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-qs@^6.9.1:
- version "6.11.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
- dependencies:
- side-channel "^1.0.4"
-
-quick-lru@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
- integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-
-rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-read@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
- integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==
- dependencies:
- mute-stream "~0.0.4"
-
-"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readable-stream@^2.0.2, readable-stream@^2.3.5:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
-readdirp@~3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
- integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
- dependencies:
- picomatch "^2.2.1"
-
-readdirp@~3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
- integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
- dependencies:
- picomatch "^2.2.1"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-replace-ext@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
- integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==
-
-resolve-alpn@^1.0.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
- integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
-
-responselike@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc"
- integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
- dependencies:
- lowercase-keys "^2.0.0"
-
-rimraf@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
-roarr@^2.15.3:
- version "2.15.4"
- resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
- integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==
- dependencies:
- boolean "^3.0.1"
- detect-node "^2.0.4"
- globalthis "^1.0.1"
- json-stringify-safe "^5.0.1"
- semver-compare "^1.0.0"
- sprintf-js "^1.1.2"
-
-safe-buffer@^5.0.1, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-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==
-
-semaphore@^1.0.5:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa"
- integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==
-
-semver-compare@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
- integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
-
-semver@^5.1.0:
- version "5.7.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
- integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
-
-semver@^6.2.0:
- version "6.3.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
- integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-
-semver@^7.3.2, semver@^7.3.5, semver@^7.3.8:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
- dependencies:
- lru-cache "^6.0.0"
-
-serialize-error@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18"
- integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==
- dependencies:
- type-fest "^0.13.1"
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
-simple-concat@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
- integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
-
-simple-get@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
- integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
- dependencies:
- decompress-response "^6.0.0"
- once "^1.3.1"
- simple-concat "^1.0.0"
-
-source-map@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-sprintf-js@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
- integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
-
-stoppable@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b"
- integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==
-
-stream-exhaust@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d"
- integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==
-
-stream-shift@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
- integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-bom-buf@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
- integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=
- dependencies:
- is-utf8 "^0.2.1"
-
-strip-bom-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
- integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco=
- dependencies:
- first-chunk-stream "^2.0.0"
- strip-bom "^2.0.0"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-
-sumchecker@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
- integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==
- dependencies:
- debug "^4.1.0"
-
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-tar-fs@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
- integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
- dependencies:
- chownr "^1.1.1"
- mkdirp-classic "^0.5.2"
- pump "^3.0.0"
- tar-stream "^2.1.4"
-
-tar-stream@^2.1.4:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
- integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
- dependencies:
- bl "^4.0.3"
- end-of-stream "^1.4.1"
- fs-constants "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^3.1.1"
-
-ternary-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-3.0.0.tgz#7951930ea9e823924d956f03d516151a2d516253"
- integrity sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==
- dependencies:
- duplexify "^4.1.1"
- fork-stream "^0.0.4"
- merge-stream "^2.0.0"
- through2 "^3.0.1"
-
-through2@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4"
- integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==
- dependencies:
- inherits "^2.0.4"
- readable-stream "2 || 3"
-
-through2@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
- integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==
- dependencies:
- readable-stream "3"
-
-through@^2.3.8:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-
-time-stamp@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
- integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
-
-tmp@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
- integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
- dependencies:
- rimraf "^3.0.0"
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-
-tree-sitter-typescript@^0.20.5:
- version "0.20.5"
- resolved "https://registry.yarnpkg.com/tree-sitter-typescript/-/tree-sitter-typescript-0.20.5.tgz#29e30c052bcb06cb992ffd2d392e010b0e1768b3"
- integrity sha512-RzK/Pc6k4GiXvInIBlo8ZggekP6rODfW2P6KHFCTSUHENsw6ynh+iacFhfkJRa4MT8EIN2WHygFJ7076/+eHKg==
- dependencies:
- nan "^2.18.0"
- tree-sitter "^0.20.6"
-
-tree-sitter@^0.20.5, tree-sitter@^0.20.6:
- version "0.20.6"
- resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.20.6.tgz#fec52e5d7cc6c583135756479f2440dd89b25cbe"
- integrity sha512-GxJodajVpfgb3UREzzIbtA1hyRnTxVbWVXrbC6sk4xTMH5ERMBJk9HJNq4c8jOJeUaIOmLcwg+t6mez/PDvGqg==
- dependencies:
- nan "^2.18.0"
- prebuild-install "^7.1.1"
-
-tslib@^2.0.0, tslib@^2.2.0, tslib@^2.6.2:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
- integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
- dependencies:
- safe-buffer "^5.0.1"
-
-tunnel@0.0.6, tunnel@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
- integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
-
-type-fest@^0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
- integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
-
-typed-rest-client@^1.8.4:
- version "1.8.9"
- resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.9.tgz#e560226bcadfe71b0fb5c416b587f8da3b8f92d8"
- integrity sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==
- dependencies:
- qs "^6.9.1"
- tunnel "0.0.6"
- underscore "^1.12.1"
-
-uc.micro@^1.0.1, uc.micro@^1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
- integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-
-underscore@^1.12.1:
- version "1.13.6"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"
- integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-universal-user-agent@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
- integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
-
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-universalify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
- integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
-
-url-join@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
- integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-uuid@^8.3.0:
- version "8.3.1"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
- integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==
-
-vinyl-file@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
- integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.3.0"
- strip-bom-buf "^1.0.0"
- strip-bom-stream "^2.0.0"
- vinyl "^2.0.1"
-
-vinyl@^2.0.1, vinyl@^2.1.0, vinyl@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
- integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
- dependencies:
- clone "^2.1.1"
- clone-buffer "^1.0.0"
- clone-stats "^1.0.0"
- cloneable-readable "^1.0.0"
- remove-trailing-separator "^1.0.1"
- replace-ext "^1.0.0"
-
-vscode-gulp-watch@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/vscode-gulp-watch/-/vscode-gulp-watch-5.0.3.tgz#1ca1c03581d43692ecb1fe0b9afd4256faeb701b"
- integrity sha512-MTUp2yLE9CshhkNSNV58EQNxQSeF8lIj3mkXZX9a1vAk+EQNM2PAYdPUDSd/P/08W3PMHGznEiZyfK7JAjLosg==
- dependencies:
- ansi-colors "4.1.1"
- anymatch "^3.1.1"
- chokidar "3.5.1"
- fancy-log "^1.3.3"
- glob-parent "^5.1.1"
- normalize-path "^3.0.0"
- object-assign "^4.1.1"
- plugin-error "1.0.1"
- readable-stream "^3.6.0"
- vinyl "^2.2.0"
- vinyl-file "^3.0.0"
-
-vscode-universal-bundler@^0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/vscode-universal-bundler/-/vscode-universal-bundler-0.0.2.tgz#2c988dac681d3ffe6baec6defac0995cb833c55a"
- integrity sha512-FPJcvKnQGBqFzy6M6Nm2yvAczNLUeXsfYM6GwCex/pUOkvIM2icIHmiSvtMJINlLW1iG+oEwE3/LVbABmcjEmQ==
- dependencies:
- "@malept/cross-spawn-promise" "^1.1.0"
- asar "^3.0.3"
- debug "^4.3.1"
- dir-compare "^2.4.0"
- fs-extra "^9.0.1"
-
-webidl-conversions@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-
-whatwg-url@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
- dependencies:
- tr46 "~0.0.3"
- webidl-conversions "^3.0.0"
-
-which@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-workerpool@^6.4.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.0.tgz#f8474762c5e2f81646994aa113685f6c424a2416"
- integrity sha512-r64Ea3glXY2RVzMeNxB+4J+0YHAVzUdV4cM5nHi4BBC2LvnO1pWFAIYKYuGcPElbg1/7eEiaPtZ/jzCjIUuGBg==
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-xml2js@^0.4.19, xml2js@^0.4.23:
- 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@^9.0.7:
- version "9.0.7"
- resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
- integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
-
-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==
-
-yauzl@^2.10.0, yauzl@^2.3.1:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
- integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
- dependencies:
- buffer-crc32 "~0.2.3"
- fd-slicer "~1.1.0"
-
-yazl@^2.2.2:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35"
- integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==
- dependencies:
- buffer-crc32 "~0.2.3"
diff --git a/cglicenses.json b/cglicenses.json
index d90d55d7315..0b4e03e502b 100644
--- a/cglicenses.json
+++ b/cglicenses.json
@@ -1,7 +1,7 @@
// -----------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------
// This file overrides licenses only for OSS components which do not appear in `cgmanifest.json`.
-// i.e. for OSS components that are detected from `yarn.lock` or `Cargo.lock` files.
+// i.e. for OSS components that are detected from `package-lock.json` or `Cargo.lock` files.
//
// DO NOT EDIT THIS FILE UNLESS THE OSS TOOL INDICATES THAT YOU SHOULD.
//
@@ -40,12 +40,6 @@
"Copyright (c) Microsoft Corporation. All rights reserved."
]
},
- {
- "name": "big-integer",
- "prependLicenseText": [
- "Copyright released to public domain"
- ]
- },
{
// Reason: The license cannot be found by the tool due to access controls on the repository
"name": "vscode-tas-client",
@@ -247,33 +241,6 @@
"CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
]
},
- {
- // Reason: The substack org has been deleted on GH
- "name": "mkdirp",
- "fullLicenseText": [
- "Copyright 2010 James Halliday (mail@substack.net)",
- "",
- "This project is free software released under the MIT/X11 license:",
- "",
- "Permission is hereby granted, free of charge, to any person obtaining a copy",
- "of this software and associated documentation files (the \"Software\"), to deal",
- "in the Software without restriction, including without limitation the rights",
- "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
- "copies of the Software, and to permit persons to whom the Software is",
- "furnished to do so, subject to the following conditions:",
- "",
- "The above copyright notice and this permission notice shall be included in",
- "all copies or substantial portions of the Software.",
- "",
- "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
- "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
- "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
- "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
- "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
- "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
- "THE SOFTWARE."
- ]
- },
{
// Reason: repo URI is wrong on crate, pending https://github.com/warp-tech/russh/pull/53
"name": "russh-cryptovec",
@@ -567,6 +534,32 @@
"SOFTWARE"
]
},
+ {
+ "name":"vscode-markdown-languageserver",
+ "fullLicenseText": [
+ "MIT License",
+ "",
+ "Copyright (c) Microsoft Corporation.",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy",
+ "of this software and associated documentation files (the \"Software\"), to deal",
+ "in the Software without restriction, including without limitation the rights",
+ "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
+ "copies of the Software, and to permit persons to whom the Software is",
+ "furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in all",
+ "copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
+ "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+ "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
+ "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+ "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
+ "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE",
+ "SOFTWARE"
+ ]
+ },
{
// Reason: mono-repo where the individual packages are also dual-licensed under MIT and Apache-2.0
"name": "system-configuration",
diff --git a/cgmanifest.json b/cgmanifest.json
index 61747342eef..0f786874887 100644
--- a/cgmanifest.json
+++ b/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "chromium",
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
- "commitHash": "f1a45d7ded05d64ca8136cc142ddc0c271b1dd43"
+ "commitHash": "7fa4f6e14e0707c0e604cf7c1da33566e78169ce"
}
},
"licenseDetail": [
@@ -40,7 +40,7 @@
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
],
"isOnlyProductionDependency": true,
- "version": "122.0.6261.156"
+ "version": "124.0.6367.243"
},
{
"component": {
@@ -48,7 +48,7 @@
"git": {
"name": "ffmpeg",
"repositoryUrl": "https://chromium.googlesource.com/chromium/third_party/ffmpeg",
- "commitHash": "17525de887d54b970ffdd421a0879c1db1952307"
+ "commitHash": "52d8ef3799b2f16b66351dd0972bb0bcee1648ac"
}
},
"isOnlyProductionDependency": true,
@@ -516,11 +516,11 @@
"git": {
"name": "nodejs",
"repositoryUrl": "https://github.com/nodejs/node",
- "commitHash": "9b1bf44ea9e7785e38c93b7d22d32dbca262df6c"
+ "commitHash": "1968ef32415607643770efb320d7d4e941baaa25"
}
},
"isOnlyProductionDependency": true,
- "version": "20.11.1"
+ "version": "20.16.0"
},
{
"component": {
@@ -528,12 +528,12 @@
"git": {
"name": "electron",
"repositoryUrl": "https://github.com/electron/electron",
- "commitHash": "f9ed0eaee4b172733872c2f84e5061882dd08e5c"
+ "commitHash": "5955d53c480a627b016c592931d9d0345ee2564f"
}
},
"isOnlyProductionDependency": true,
"license": "MIT",
- "version": "29.4.0"
+ "version": "30.5.0"
},
{
"component": {
@@ -732,6 +732,39 @@
"SOFTWARE."
],
"license": "MIT"
+ },
+ {
+ "component": {
+ "type": "npm",
+ "npm": {
+ "name": "cacheable-request",
+ "version": "7.0.4"
+ }
+ },
+ "licenseDetail": [
+ "Copyright (c) cacheable-request authors",
+ "",
+ "MIT License",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy",
+ "of this software and associated documentation files (the \"Software\"), to",
+ "deal in the Software without restriction, including without limitation the",
+ "rights to use, copy, modify, merge, publish, distribute, sublicense, and/or",
+ "sell copies of the Software, and to permit persons to whom the Software is",
+ "furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in",
+ "all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
+ "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+ "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
+ "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+ "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
+ "FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER",
+ "DEALINGS IN THE SOFTWARE."
+ ],
+ "license": "MIT"
}
],
"version": 1
diff --git a/cli/Cargo.lock b/cli/Cargo.lock
index 3be3815a748..27fe79896a2 100644
--- a/cli/Cargo.lock
+++ b/cli/Cargo.lock
@@ -1571,9 +1571,9 @@ dependencies = [
[[package]]
name = "openssl"
-version = "0.10.64"
+version = "0.10.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
+checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
dependencies = [
"bitflags 2.5.0",
"cfg-if",
@@ -1603,9 +1603,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
-version = "0.9.102"
+version = "0.9.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
dependencies = [
"cc",
"libc",
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index b820ffcc50f..2907ff3d7e7 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -81,4 +81,5 @@ codegen-units = 1
[features]
default = []
+vsda = []
vscode-encrypt = []
diff --git a/cli/ThirdPartyNotices.txt b/cli/ThirdPartyNotices.txt
index 7a74fb503c5..4a58801fa12 100644
--- a/cli/ThirdPartyNotices.txt
+++ b/cli/ThirdPartyNotices.txt
@@ -22,31 +22,16 @@ required to debug changes to any libraries licensed under the GNU Lesser General
addr2line 0.21.0 - Apache-2.0 OR MIT
https://github.com/gimli-rs/addr2line
-Copyright (c) 2016-2018 The gimli Developers
+Licensed under either of
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+ * Apache License, Version 2.0 ([`LICENSE-APACHE`](./LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([`LICENSE-MIT`](./LICENSE-MIT) or https://opensource.org/licenses/MIT)
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+at your option.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
---------------------------------------------------------
---------------------------------------------------------
@@ -292,27 +277,18 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
async-broadcast 0.5.1 - MIT OR Apache-2.0
https://github.com/smol-rs/async-broadcast
-The MIT License (MIT)
-
-Copyright (c) 2020 Yoshua Wuyts
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+
+Licensed under either of Apache License, Version
+2.0 (LICENSE-APACHE) or MIT license (LICENSE-MIT) at your option.
+
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
+
---------------------------------------------------------
---------------------------------------------------------
@@ -320,29 +296,18 @@ SOFTWARE.
async-channel 2.3.1 - Apache-2.0 OR MIT
https://github.com/smol-rs/async-channel
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Licensed under either of
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+ * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+at your option.
+
+#### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
---------------------------------------------------------
---------------------------------------------------------
@@ -382,29 +347,18 @@ async-lock 2.8.0 - Apache-2.0 OR MIT
async-lock 3.3.0 - Apache-2.0 OR MIT
https://github.com/smol-rs/async-lock
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Licensed under either of
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+ * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+at your option.
+
+#### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
---------------------------------------------------------
---------------------------------------------------------
@@ -412,29 +366,18 @@ DEALINGS IN THE SOFTWARE.
async-process 1.8.1 - Apache-2.0 OR MIT
https://github.com/smol-rs/async-process
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Licensed under either of
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+ * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+at your option.
+
+#### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
---------------------------------------------------------
---------------------------------------------------------
@@ -442,29 +385,13 @@ DEALINGS IN THE SOFTWARE.
async-recursion 1.1.1 - MIT OR Apache-2.0
https://github.com/dcchut/async-recursion
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+Licensed under either of
+ * Apache License, Version 2.0
+ ([LICENSE-APACHE](LICENSE-APACHE) or )
+ * MIT license
+ ([LICENSE-MIT](LICENSE-MIT) or )
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+at your option.
---------------------------------------------------------
---------------------------------------------------------
@@ -502,29 +429,18 @@ DEALINGS IN THE SOFTWARE.
async-task 4.7.1 - Apache-2.0 OR MIT
https://github.com/smol-rs/async-task
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Licensed under either of
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+ * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+at your option.
+
+#### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
---------------------------------------------------------
---------------------------------------------------------
@@ -1341,7 +1257,7 @@ SOFTWARE.
---------------------------------------------------------
clap_derive 4.5.4 - MIT OR Apache-2.0
-https://github.com/clap-rs/clap/tree/master/clap_derive
+https://github.com/clap-rs/clap
Copyright (c) Individual contributors
@@ -1367,7 +1283,7 @@ SOFTWARE.
---------------------------------------------------------
clap_lex 0.7.0 - MIT OR Apache-2.0
-https://github.com/clap-rs/clap/tree/master/clap_lex
+https://github.com/clap-rs/clap
Copyright (c) Individual contributors
@@ -3396,7 +3312,7 @@ https://github.com/hyperium/http-body
The MIT License (MIT)
-Copyright (c) 2019 Hyper Contributors
+Copyright (c) 2019-2024 Sean McArthur & Hyper Contributors
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
@@ -3428,7 +3344,7 @@ DEALINGS IN THE SOFTWARE.
httparse 1.8.0 - MIT/Apache-2.0
https://github.com/seanmonstar/httparse
-Copyright (c) 2015-2021 Sean McArthur
+Copyright (c) 2015-2024 Sean McArthur
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -4896,7 +4812,7 @@ OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
-openssl 0.10.64 - Apache-2.0
+openssl 0.10.66 - Apache-2.0
https://github.com/sfackler/rust-openssl
Copyright 2011-2017 Google Inc.
@@ -4975,7 +4891,7 @@ DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
-openssl-sys 0.9.102 - MIT
+openssl-sys 0.9.103 - MIT
https://github.com/sfackler/rust-openssl
The MIT License (MIT)
@@ -8507,6 +8423,7 @@ subtle 2.5.0 - BSD-3-Clause
https://github.com/dalek-cryptography/subtle
Copyright (c) 2016-2017 Isis Agora Lovecruft, Henry de Valence. All rights reserved.
+Copyright (c) 2016-2024 Isis Agora Lovecruft. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -10790,33 +10707,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
zbus 3.15.2 - MIT
https://github.com/dbus2/zbus/
-The MIT License (MIT)
-
-Copyright (c) 2024 Zeeshan Ali Khan & zbus contributors
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+LICENSE-MIT
---------------------------------------------------------
---------------------------------------------------------
@@ -10824,33 +10715,7 @@ DEALINGS IN THE SOFTWARE.
zbus_macros 3.15.2 - MIT
https://github.com/dbus2/zbus/
-The MIT License (MIT)
-
-Copyright (c) 2024 Zeeshan Ali Khan & zbus contributors
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+LICENSE-MIT
---------------------------------------------------------
---------------------------------------------------------
@@ -10858,33 +10723,7 @@ DEALINGS IN THE SOFTWARE.
zbus_names 2.6.1 - MIT
https://github.com/dbus2/zbus/
-The MIT License (MIT)
-
-Copyright (c) 2024 Zeeshan Ali Khan & zbus contributors
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+LICENSE-MIT
---------------------------------------------------------
---------------------------------------------------------
@@ -10977,33 +10816,7 @@ licences; see files named LICENSE.*.txt for details.
zvariant 3.15.2 - MIT
https://github.com/dbus2/zbus/
-The MIT License (MIT)
-
-Copyright (c) 2024 Zeeshan Ali Khan & zbus contributors
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+LICENSE-MIT
---------------------------------------------------------
---------------------------------------------------------
@@ -11011,33 +10824,7 @@ DEALINGS IN THE SOFTWARE.
zvariant_derive 3.15.2 - MIT
https://github.com/dbus2/zbus/
-The MIT License (MIT)
-
-Copyright (c) 2024 Zeeshan Ali Khan & zbus contributors
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+LICENSE-MIT
---------------------------------------------------------
---------------------------------------------------------
@@ -11045,31 +10832,5 @@ DEALINGS IN THE SOFTWARE.
zvariant_utils 1.0.1 - MIT
https://github.com/dbus2/zbus/
-The MIT License (MIT)
-
-Copyright (c) 2024 Zeeshan Ali Khan & zbus contributors
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+LICENSE-MIT
---------------------------------------------------------
\ No newline at end of file
diff --git a/cli/src/async_pipe.rs b/cli/src/async_pipe.rs
index e9b710c1d68..78aed6fe3e7 100644
--- a/cli/src/async_pipe.rs
+++ b/cli/src/async_pipe.rs
@@ -227,7 +227,7 @@ impl hyper::server::accept::Accept for PollableAsyncListener {
}
}
-/// Gets a random name for a pipe/socket on the paltform
+/// Gets a random name for a pipe/socket on the platform
pub fn get_socket_name() -> PathBuf {
cfg_if::cfg_if! {
if #[cfg(unix)] {
diff --git a/cli/src/auth.rs b/cli/src/auth.rs
index 67f1bfa6bc7..51942c96c75 100644
--- a/cli/src/auth.rs
+++ b/cli/src/auth.rs
@@ -287,7 +287,7 @@ impl StorageImplementation for ThreadKeyringStorage {
#[derive(Default)]
struct KeyringStorage {
- // keywring storage can be split into multiple entries due to entry length limits
+ // keyring storage can be split into multiple entries due to entry length limits
// on Windows https://github.com/microsoft/vscode-cli/issues/358
entries: Vec,
}
@@ -723,7 +723,7 @@ impl Auth {
match &init_code_json.message {
Some(m) => self.log.result(m),
- None => self.log.result(&format!(
+ None => self.log.result(format!(
"To grant access to the server, please log into {} and use code {}",
init_code_json.verification_uri, init_code_json.user_code
)),
diff --git a/cli/src/commands/args.rs b/cli/src/commands/args.rs
index 79c4d3767a1..7a8cf1f4f62 100644
--- a/cli/src/commands/args.rs
+++ b/cli/src/commands/args.rs
@@ -64,7 +64,7 @@ pub struct IntegratedCli {
pub core: CliCore,
}
-/// Common CLI shared between intergated and standalone interfaces.
+/// Common CLI shared between integrated and standalone interfaces.
#[derive(Args, Debug, Default, Clone)]
pub struct CliCore {
/// One or more files, folders, or URIs to open.
@@ -226,12 +226,15 @@ pub struct ServeWebArgs {
#[derive(Args, Debug, Clone)]
pub struct CommandShellArgs {
+ #[clap(flatten)]
+ pub server_args: BaseServerArgs,
+
/// Listen on a socket instead of stdin/stdout.
#[clap(long)]
pub on_socket: bool,
/// Listen on a host/port instead of stdin/stdout.
- #[clap(long, num_args = 0..=1, default_missing_value = "0")]
- pub on_port: Option,
+ #[clap(long, num_args = 0..=2, default_missing_value = "0")]
+ pub on_port: Vec,
/// Listen on a host/port instead of stdin/stdout.
#[clap[long]]
pub on_host: Option,
@@ -619,7 +622,7 @@ pub enum OutputFormat {
#[derive(Args, Clone, Debug, Default)]
pub struct ExistingTunnelArgs {
/// Name you'd like to assign preexisting tunnel to use to connect the tunnel
- /// Old option, new code sohuld just use `--name`.
+ /// Old option, new code should just use `--name`.
#[clap(long, hide = true)]
pub tunnel_name: Option,
@@ -638,6 +641,9 @@ pub struct ExistingTunnelArgs {
#[derive(Args, Debug, Clone, Default)]
pub struct TunnelServeArgs {
+ #[clap(flatten)]
+ pub server_args: BaseServerArgs,
+
/// Optional details to connect to an existing tunnel
#[clap(flatten, next_help_heading = Some("ADVANCED OPTIONS"))]
pub tunnel: ExistingTunnelArgs,
@@ -661,7 +667,10 @@ pub struct TunnelServeArgs {
/// If set, the user accepts the server license terms and the server will be started without a user prompt.
#[clap(long)]
pub accept_server_license_terms: bool,
+}
+#[derive(Args, Debug, Clone, Default)]
+pub struct BaseServerArgs {
/// Requests that extensions be preloaded and installed on connecting servers.
#[clap(long)]
pub install_extension: Vec,
@@ -675,8 +684,8 @@ pub struct TunnelServeArgs {
pub extensions_dir: Option,
}
-impl TunnelServeArgs {
- pub fn apply_to_server_args(&self, csa: &mut CodeServerArgs) {
+impl BaseServerArgs {
+ pub fn apply_to(&self, csa: &mut CodeServerArgs) {
csa.install_extensions
.extend_from_slice(&self.install_extension);
diff --git a/cli/src/commands/serve_web.rs b/cli/src/commands/serve_web.rs
index 12c0cdafec9..4acb9a18c73 100644
--- a/cli/src/commands/serve_web.rs
+++ b/cli/src/commands/serve_web.rs
@@ -15,7 +15,7 @@ use std::time::{Duration, Instant};
use hyper::service::{make_service_fn, service_fn};
use hyper::{Body, Request, Response, Server};
use tokio::io::{AsyncBufReadExt, BufReader};
-use tokio::pin;
+use tokio::{pin, time};
use crate::async_pipe::{
get_socket_name, get_socket_rw_stream, listen_socket_rw_stream, AsyncPipe,
@@ -50,7 +50,7 @@ const SERVER_IDLE_TIMEOUT_SECS: u64 = 60 * 60;
/// (should be large enough to basically never happen)
const SERVER_ACTIVE_TIMEOUT_SECS: u64 = SERVER_IDLE_TIMEOUT_SECS * 24 * 30 * 12;
/// How long to cache the "latest" version we get from the update service.
-const RELEASE_CACHE_SECS: u64 = 60 * 60;
+const RELEASE_CHECK_INTERVAL: u64 = 60 * 60;
/// Number of bytes for the secret keys. See workbench.ts for their usage.
const SECRET_KEY_BYTES: usize = 32;
@@ -71,16 +71,26 @@ pub async fn serve_web(ctx: CommandContext, mut args: ServeWebArgs) -> Result = ConnectionManager::new(&ctx, platform, args.clone());
+ let update_check_interval = 3600;
+ cm.clone()
+ .start_update_checker(Duration::from_secs(update_check_interval));
+
let key = get_server_key_half(&ctx.paths);
let make_svc = move || {
let ctx = HandleContext {
@@ -169,7 +179,7 @@ async fn handle_proxied(ctx: &HandleContext, req: Request) -> Response r,
Err(e) => {
error!(ctx.log, "error getting latest version: {}", e);
@@ -532,21 +542,67 @@ impl ConnectionManager {
pub fn new(ctx: &CommandContext, platform: Platform, args: ServeWebArgs) -> Arc {
let base_path = normalize_base_path(args.server_base_path.as_deref().unwrap_or_default());
+ let cache = DownloadCache::new(ctx.paths.web_server_storage());
+ let target_kind = TargetKind::Web;
+
+ let quality = VSCODE_CLI_QUALITY.map_or(Quality::Stable, |q| match Quality::try_from(q) {
+ Ok(q) => q,
+ Err(_) => Quality::Stable,
+ });
+
+ let latest_version = tokio::sync::Mutex::new(cache.get().first().map(|latest_commit| {
+ (
+ Instant::now() - Duration::from_secs(RELEASE_CHECK_INTERVAL),
+ Release {
+ name: String::from("0.0.0"), // Version information not stored on cache
+ commit: latest_commit.clone(),
+ platform,
+ target: target_kind,
+ quality,
+ },
+ )
+ }));
+
Arc::new(Self {
platform,
args,
base_path,
log: ctx.log.clone(),
- cache: DownloadCache::new(ctx.paths.web_server_storage()),
+ cache,
update_service: UpdateService::new(
ctx.log.clone(),
Arc::new(ReqwestSimpleHttp::with_client(ctx.http.clone())),
),
state: ConnectionStateMap::default(),
- latest_version: tokio::sync::Mutex::default(),
+ latest_version,
})
}
+ // spawns a task that checks for updates every n seconds duration
+ pub fn start_update_checker(self: Arc, duration: Duration) {
+ tokio::spawn(async move {
+ let mut interval = time::interval(duration);
+ loop {
+ interval.tick().await;
+
+ if let Err(e) = self.get_latest_release().await {
+ warning!(self.log, "error getting latest version: {}", e);
+ }
+ }
+ });
+ }
+
+ // Returns the latest release from the cache, if one exists.
+ pub async fn get_release_from_cache(&self) -> Result {
+ let latest = self.latest_version.lock().await;
+ if let Some((_, release)) = &*latest {
+ return Ok(release.clone());
+ }
+
+ drop(latest);
+ self.get_latest_release().await
+ }
+
/// Gets a connection to a server version
pub async fn get_connection(
&self,
@@ -565,11 +621,7 @@ impl ConnectionManager {
pub async fn get_latest_release(&self) -> Result {
let mut latest = self.latest_version.lock().await;
let now = Instant::now();
- if let Some((checked_at, release)) = &*latest {
- if checked_at.elapsed() < Duration::from_secs(RELEASE_CACHE_SECS) {
- return Ok(release.clone());
- }
- }
+ let target_kind = TargetKind::Web;
let quality = VSCODE_CLI_QUALITY
.ok_or_else(|| CodeError::UpdatesNotConfigured("no configured quality"))
@@ -579,13 +631,14 @@ impl ConnectionManager {
let release = self
.update_service
- .get_latest_commit(self.platform, TargetKind::Web, quality)
+ .get_latest_commit(self.platform, target_kind, quality)
.await
.map_err(|e| CodeError::UpdateCheckFailed(e.to_string()));
// If the update service is unavailable and we have stale data, use that
- if let (Err(e), Some((_, previous))) = (&release, &*latest) {
+ if let (Err(e), Some((_, previous))) = (&release, latest.clone()) {
warning!(self.log, "error getting latest release, using stale: {}", e);
+ *latest = Some((now, previous.clone()));
return Ok(previous.clone());
}
diff --git a/cli/src/commands/tunnels.rs b/cli/src/commands/tunnels.rs
index 688f603f593..dc4206e8316 100644
--- a/cli/src/commands/tunnels.rs
+++ b/cli/src/commands/tunnels.rs
@@ -155,43 +155,54 @@ pub async fn command_shell(ctx: CommandContext, args: CommandShellArgs) -> Resul
code_server_args: (&ctx.args).into(),
};
- let mut listener: Box = match (args.on_port, &args.on_host, args.on_socket)
- {
- (_, _, true) => {
- let socket = get_socket_name();
- let listener = listen_socket_rw_stream(&socket)
- .await
- .map_err(|e| wrap(e, "error listening on socket"))?;
+ args.server_args.apply_to(&mut params.code_server_args);
- params
- .log
- .result(format!("Listening on {}", socket.display()));
+ let mut listener: Box =
+ match (args.on_port.first(), &args.on_host, args.on_socket) {
+ (_, _, true) => {
+ let socket = get_socket_name();
+ let listener = listen_socket_rw_stream(&socket)
+ .await
+ .map_err(|e| wrap(e, "error listening on socket"))?;
- Box::new(listener)
- }
- (Some(_), _, _) | (_, Some(_), _) => {
- let addr = SocketAddr::new(
- args.on_host
+ params
+ .log
+ .result(format!("Listening on {}", socket.display()));
+
+ Box::new(listener)
+ }
+ (Some(_), _, _) | (_, Some(_), _) => {
+ let host = args
+ .on_host
.as_ref()
.map(|h| h.parse().map_err(CodeError::InvalidHostAddress))
- .unwrap_or(Ok(IpAddr::V4(Ipv4Addr::LOCALHOST)))?,
- args.on_port.unwrap_or_default(),
- );
- let listener = tokio::net::TcpListener::bind(addr)
- .await
- .map_err(|e| wrap(e, "error listening on port"))?;
-
- params
- .log
- .result(format!("Listening on {}", listener.local_addr().unwrap()));
-
- Box::new(listener)
- }
- _ => {
- serve_stream(tokio::io::stdin(), tokio::io::stderr(), params).await;
- return Ok(0);
- }
- };
+ .unwrap_or(Ok(IpAddr::V4(Ipv4Addr::LOCALHOST)))?;
+
+ let lower_port = args.on_port.first().copied().unwrap_or_default();
+ let port_no = if let Some(upper) = args.on_port.get(1) {
+ find_unused_port(&host, lower_port, *upper)
+ .await
+ .unwrap_or_default()
+ } else {
+ lower_port
+ };
+
+ let addr = SocketAddr::new(host, port_no);
+ let listener = tokio::net::TcpListener::bind(addr)
+ .await
+ .map_err(|e| wrap(e, "error listening on port"))?;
+
+ params
+ .log
+ .result(format!("Listening on {}", listener.local_addr().unwrap()));
+
+ Box::new(listener)
+ }
+ _ => {
+ serve_stream(tokio::io::stdin(), tokio::io::stderr(), params).await;
+ return Ok(0);
+ }
+ };
let mut servers = FuturesUnordered::new();
@@ -216,6 +227,21 @@ pub async fn command_shell(ctx: CommandContext, args: CommandShellArgs) -> Resul
}
}
+async fn find_unused_port(host: &IpAddr, start_port: u16, end_port: u16) -> Option {
+ for port in start_port..=end_port {
+ if is_port_available(*host, port).await {
+ return Some(port);
+ }
+ }
+ None
+}
+
+async fn is_port_available(host: IpAddr, port: u16) -> bool {
+ tokio::net::TcpListener::bind(SocketAddr::new(host, port))
+ .await
+ .is_ok()
+}
+
pub async fn service(
ctx: CommandContext,
service_args: TunnelServiceSubCommands,
@@ -416,7 +442,7 @@ pub async fn serve(ctx: CommandContext, gateway_args: TunnelServeArgs) -> Result
legal::require_consent(&paths, gateway_args.accept_server_license_terms)?;
let mut csa = (&args).into();
- gateway_args.apply_to_server_args(&mut csa);
+ gateway_args.server_args.apply_to(&mut csa);
let result = serve_with_csa(paths, log, gateway_args, csa, TUNNEL_CLI_LOCK_NAME).await;
drop(no_sleep);
@@ -563,7 +589,7 @@ async fn serve_with_csa(
Ok(SingletonConnection::Client(stream)) => {
debug!(log, "starting as client to singleton");
if gateway_args.name.is_some()
- || !gateway_args.install_extension.is_empty()
+ || !gateway_args.server_args.install_extension.is_empty()
|| gateway_args.tunnel.tunnel_id.is_some()
{
warning!(
diff --git a/cli/src/constants.rs b/cli/src/constants.rs
index 6f604e8876e..1e277a89d6a 100644
--- a/cli/src/constants.rs
+++ b/cli/src/constants.rs
@@ -13,7 +13,7 @@ use crate::options::Quality;
pub const CONTROL_PORT: u16 = 31545;
-/// Protocol version sent to clients. This can be used to indiciate new or
+/// Protocol version sent to clients. This can be used to indicate new or
/// changed capabilities that clients may wish to leverage.
/// 1 - Initial protocol version
/// 2 - Addition of `serve.compressed` property to control whether servermsg's
diff --git a/cli/src/download_cache.rs b/cli/src/download_cache.rs
index d3f05d2237f..cd02b02d75a 100644
--- a/cli/src/download_cache.rs
+++ b/cli/src/download_cache.rs
@@ -20,6 +20,7 @@ const KEEP_LRU: usize = 5;
const STAGING_SUFFIX: &str = ".staging";
const RENAME_ATTEMPTS: u32 = 20;
const RENAME_DELAY: std::time::Duration = std::time::Duration::from_millis(200);
+const PERSISTED_STATE_FILE_NAME: &str = "lru.json";
#[derive(Clone)]
pub struct DownloadCache {
@@ -30,11 +31,16 @@ pub struct DownloadCache {
impl DownloadCache {
pub fn new(path: PathBuf) -> DownloadCache {
DownloadCache {
- state: PersistedState::new(path.join("lru.json")),
+ state: PersistedState::new(path.join(PERSISTED_STATE_FILE_NAME)),
path,
}
}
+ /// Gets the value stored on the state
+ pub fn get(&self) -> Vec {
+ self.state.load()
+ }
+
/// Gets the download cache path. Names of cache entries can be formed by
/// joining them to the path.
pub fn path(&self) -> &Path {
diff --git a/cli/src/tunnels/code_server.rs b/cli/src/tunnels/code_server.rs
index 0579f8ef0dc..465f6e24230 100644
--- a/cli/src/tunnels/code_server.rs
+++ b/cli/src/tunnels/code_server.rs
@@ -674,7 +674,7 @@ where
let write_line = |line: &str| -> std::io::Result<()> {
if let Some(mut f) = log_file.as_ref() {
f.write_all(line.as_bytes())?;
- f.write_all(&[b'\n'])?;
+ f.write_all(b"\n")?;
}
if write_directly {
println!("{}", line);
diff --git a/cli/src/update_service.rs b/cli/src/update_service.rs
index 4bec13d6e86..90339148188 100644
--- a/cli/src/update_service.rs
+++ b/cli/src/update_service.rs
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-use std::{ffi::OsStr, fmt, path::Path};
+use std::{fmt, path::Path};
use serde::{Deserialize, Serialize};
@@ -11,10 +11,11 @@ use crate::{
constants::VSCODE_CLI_UPDATE_ENDPOINT,
debug, log, options, spanf,
util::{
- errors::{AnyError, CodeError, WrappedError},
+ errors::{wrap, AnyError, CodeError, WrappedError},
http::{BoxedHttp, SimpleResponse},
io::ReportCopyProgress,
- tar, zipper,
+ tar::{self, has_gzip_header},
+ zipper,
},
};
@@ -178,10 +179,10 @@ pub fn unzip_downloaded_release(
where
T: ReportCopyProgress,
{
- if compressed_file.extension() == Some(OsStr::new("zip")) {
- zipper::unzip_file(compressed_file, target_dir, reporter)
- } else {
- tar::decompress_tarball(compressed_file, target_dir, reporter)
+ match has_gzip_header(compressed_file) {
+ Ok((f, true)) => tar::decompress_tarball(f, target_dir, reporter),
+ Ok((f, false)) => zipper::unzip_file(f, target_dir, reporter),
+ Err(e) => Err(wrap(e, "error checking for gzip header")),
}
}
@@ -249,7 +250,7 @@ impl Platform {
Platform::DarwinARM64 => "server-darwin-arm64",
Platform::WindowsX64 => "server-win32-x64",
Platform::WindowsX86 => "server-win32",
- Platform::WindowsARM64 => "server-win32-x64", // we don't publish an arm64 server build yet
+ Platform::WindowsARM64 => "server-win32-arm64",
}
.to_owned()
}
diff --git a/cli/src/util/errors.rs b/cli/src/util/errors.rs
index 7d28ce9f741..67519d5437e 100644
--- a/cli/src/util/errors.rs
+++ b/cli/src/util/errors.rs
@@ -512,6 +512,8 @@ pub enum CodeError {
// todo: can be specialized when update service is moved to CodeErrors
#[error("Could not check for update: {0}")]
UpdateCheckFailed(String),
+ #[error("Could not read connection token file: {0}")]
+ CouldNotReadConnectionTokenFile(std::io::Error),
#[error("Could not write connection token file: {0}")]
CouldNotCreateConnectionTokenFile(std::io::Error),
#[error("A tunnel with the name {0} exists and is in-use. Please pick a different name or stop the existing tunnel.")]
diff --git a/cli/src/util/prereqs.rs b/cli/src/util/prereqs.rs
index 5d4953acbb2..0f49ab20887 100644
--- a/cli/src/util/prereqs.rs
+++ b/cli/src/util/prereqs.rs
@@ -19,12 +19,22 @@ lazy_static! {
static ref GENERIC_VERSION_RE: Regex = Regex::new(r"^([0-9]+)\.([0-9]+)$").unwrap();
static ref LIBSTD_CXX_VERSION_RE: BinRegex =
BinRegex::new(r"GLIBCXX_([0-9]+)\.([0-9]+)(?:\.([0-9]+))?").unwrap();
- static ref MIN_CXX_VERSION: SimpleSemver = SimpleSemver::new(3, 4, 25);
- static ref MIN_LEGACY_CXX_VERSION: SimpleSemver = SimpleSemver::new(3, 4, 19);
static ref MIN_LDD_VERSION: SimpleSemver = SimpleSemver::new(2, 28, 0);
static ref MIN_LEGACY_LDD_VERSION: SimpleSemver = SimpleSemver::new(2, 17, 0);
}
+#[cfg(target_arch = "arm")]
+lazy_static! {
+ static ref MIN_CXX_VERSION: SimpleSemver = SimpleSemver::new(3, 4, 26);
+ static ref MIN_LEGACY_CXX_VERSION: SimpleSemver = SimpleSemver::new(3, 4, 22);
+}
+
+#[cfg(not(target_arch = "arm"))]
+lazy_static! {
+ static ref MIN_CXX_VERSION: SimpleSemver = SimpleSemver::new(3, 4, 25);
+ static ref MIN_LEGACY_CXX_VERSION: SimpleSemver = SimpleSemver::new(3, 4, 19);
+}
+
const NIXOS_TEST_PATH: &str = "/etc/NIXOS";
pub struct PreReqChecker {}
diff --git a/cli/src/util/tar.rs b/cli/src/util/tar.rs
index fe4d4269700..10577140325 100644
--- a/cli/src/util/tar.rs
+++ b/cli/src/util/tar.rs
@@ -5,8 +5,8 @@
use crate::util::errors::{wrap, WrappedError};
use flate2::read::GzDecoder;
-use std::fs;
-use std::io::Seek;
+use std::fs::{self, File};
+use std::io::{Read, Seek};
use std::path::{Path, PathBuf};
use tar::Archive;
@@ -57,16 +57,13 @@ fn should_skip_first_segment(file: &fs::File) -> Result<(bool, u64), WrappedErro
}
pub fn decompress_tarball(
- path: &Path,
+ mut tar_gz: File,
parent_path: &Path,
mut reporter: T,
) -> Result<(), WrappedError>
where
T: ReportCopyProgress,
{
- let mut tar_gz = fs::File::open(path)
- .map_err(|e| wrap(e, format!("error opening file {}", path.display())))?;
-
let (skip_first, num_entries) = should_skip_first_segment(&tar_gz)?;
let report_progress_every = num_entries / 20;
let mut entries_so_far = 0;
@@ -81,7 +78,7 @@ where
let mut archive = Archive::new(tar);
archive
.entries()
- .map_err(|e| wrap(e, format!("error opening archive {}", path.display())))?
+ .map_err(|e| wrap(e, "error opening archive"))?
.filter_map(|e| e.ok())
.try_for_each::<_, Result<_, WrappedError>>(|mut entry| {
// approximate progress based on where we are in the archive:
@@ -118,3 +115,13 @@ where
Ok(())
}
+
+pub fn has_gzip_header(path: &Path) -> std::io::Result<(File, bool)> {
+ let mut file = fs::File::open(path)?;
+ let mut header = [0; 2];
+ let _ = file.read_exact(&mut header);
+
+ file.rewind()?;
+
+ Ok((file, header[0] == 0x1f && header[1] == 0x8b))
+}
diff --git a/cli/src/util/zipper.rs b/cli/src/util/zipper.rs
index 69bcf2d23f6..5521fa42c54 100644
--- a/cli/src/util/zipper.rs
+++ b/cli/src/util/zipper.rs
@@ -44,15 +44,12 @@ fn should_skip_first_segment(archive: &mut ZipArchive) -> bool {
archive.len() > 1 // prefix removal is invalid if there's only a single file
}
-pub fn unzip_file(path: &Path, parent_path: &Path, mut reporter: T) -> Result<(), WrappedError>
+pub fn unzip_file(file: File, parent_path: &Path, mut reporter: T) -> Result<(), WrappedError>
where
T: ReportCopyProgress,
{
- let file = fs::File::open(path)
- .map_err(|e| wrap(e, format!("unable to open file {}", path.display())))?;
-
- let mut archive = zip::ZipArchive::new(file)
- .map_err(|e| wrap(e, format!("failed to open zip archive {}", path.display())))?;
+ let mut archive =
+ zip::ZipArchive::new(file).map_err(|e| wrap(e, "failed to open zip archive"))?;
let skip_segments_no = usize::from(should_skip_first_segment(&mut archive));
let report_progress_every = archive.len() / 20;
diff --git a/extensions/bat/yarn.lock b/extensions/bat/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/bat/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/clojure/yarn.lock b/extensions/clojure/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/clojure/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/codestory/package-lock.json b/extensions/codestory/package-lock.json
new file mode 100644
index 00000000000..aaba6f28bf2
--- /dev/null
+++ b/extensions/codestory/package-lock.json
@@ -0,0 +1,1730 @@
+{
+ "name": "codestoryai",
+ "version": "0.6.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "codestoryai",
+ "version": "0.6.1",
+ "license": "UNLICENSED",
+ "dependencies": {
+ "@google-cloud/storage": "^7.0.1",
+ "diff": "^5.1.0",
+ "js-levenshtein": "^1.1.6",
+ "lodash": "^4.17.21",
+ "lru-cache": "^10.2.0",
+ "node-fetch": "^3.3.2",
+ "openai": "^4.0.1",
+ "posthog-node": "^3.1.1",
+ "ts-morph": "^19.0.0",
+ "web-tree-sitter": "^0.20.8",
+ "winston": "^3.10.0",
+ "winston-vscode": "^1.0.0"
+ },
+ "devDependencies": {
+ "@types/diff": "^5.0.3",
+ "@types/js-levenshtein": "^1.1.3",
+ "@types/lodash": "^4.14.202",
+ "@types/node": "18.x",
+ "@types/uuid": "^9.0.2"
+ },
+ "engines": {
+ "vscode": "^1.75.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+ "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@dabh/diagnostics": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
+ "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
+ "dependencies": {
+ "colorspace": "1.1.x",
+ "enabled": "2.0.x",
+ "kuler": "^2.0.0"
+ }
+ },
+ "node_modules/@google-cloud/paginator": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz",
+ "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==",
+ "dependencies": {
+ "arrify": "^2.0.0",
+ "extend": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@google-cloud/projectify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz",
+ "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@google-cloud/promisify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz",
+ "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@google-cloud/storage": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.12.1.tgz",
+ "integrity": "sha512-Z3ZzOnF3YKLuvpkvF+TjQ6lztxcAyTILp+FjKonmVpEwPa9vFvxpZjubLR4sB6bf19i/8HL2AXRjA0YFgHFRmQ==",
+ "dependencies": {
+ "@google-cloud/paginator": "^5.0.0",
+ "@google-cloud/projectify": "^4.0.0",
+ "@google-cloud/promisify": "^4.0.0",
+ "abort-controller": "^3.0.0",
+ "async-retry": "^1.3.3",
+ "duplexify": "^4.1.3",
+ "fast-xml-parser": "^4.4.1",
+ "gaxios": "^6.0.2",
+ "google-auth-library": "^9.6.3",
+ "html-entities": "^2.5.2",
+ "mime": "^3.0.0",
+ "p-limit": "^3.0.1",
+ "retry-request": "^7.0.0",
+ "teeny-request": "^9.0.0",
+ "uuid": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@ts-morph/common": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.20.0.tgz",
+ "integrity": "sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==",
+ "dependencies": {
+ "fast-glob": "^3.2.12",
+ "minimatch": "^7.4.3",
+ "mkdirp": "^2.1.6",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@types/caseless": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz",
+ "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg=="
+ },
+ "node_modules/@types/diff": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.2.tgz",
+ "integrity": "sha512-qVqLpd49rmJA2nZzLVsmfS/aiiBpfVE95dHhPVwG0NmSBAt+riPxnj53wq2oBq5m4Q2RF1IWFEUpnZTgrQZfEQ==",
+ "dev": true
+ },
+ "node_modules/@types/js-levenshtein": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz",
+ "integrity": "sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.17.7",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
+ "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "18.19.50",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.50.tgz",
+ "integrity": "sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
+ "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.16",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz",
+ "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A=="
+ },
+ "node_modules/@types/request": {
+ "version": "2.48.12",
+ "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz",
+ "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==",
+ "dependencies": {
+ "@types/caseless": "*",
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "form-data": "^2.5.0"
+ }
+ },
+ "node_modules/@types/request/node_modules/form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/@types/tough-cookie": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
+ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA=="
+ },
+ "node_modules/@types/triple-beam": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
+ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="
+ },
+ "node_modules/@types/uuid": {
+ "version": "9.0.8",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
+ "dev": true
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/agentkeepalive": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
+ "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "dependencies": {
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
+ },
+ "node_modules/async-retry": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
+ "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
+ "dependencies": {
+ "retry": "0.13.1"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/bignumber.js": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/code-block-writer": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz",
+ "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w=="
+ },
+ "node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/colorspace": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
+ "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
+ "dependencies": {
+ "color": "^3.1.3",
+ "text-hex": "1.0.x"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/duplexify": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
+ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
+ "dependencies": {
+ "end-of-stream": "^1.4.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1",
+ "stream-shift": "^1.0.2"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/enabled": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
+ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz",
+ "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ ],
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fecha": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="
+ },
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fn.name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
+ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/form-data-encoder": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
+ "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="
+ },
+ "node_modules/formdata-node": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
+ "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
+ "dependencies": {
+ "node-domexception": "1.0.0",
+ "web-streams-polyfill": "4.0.0-beta.3"
+ },
+ "engines": {
+ "node": ">= 12.20"
+ }
+ },
+ "node_modules/formdata-node/node_modules/web-streams-polyfill": {
+ "version": "4.0.0-beta.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
+ "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gaxios": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
+ "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
+ "dependencies": {
+ "extend": "^3.0.2",
+ "https-proxy-agent": "^7.0.1",
+ "is-stream": "^2.0.0",
+ "node-fetch": "^2.6.9",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gaxios/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/gaxios/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/gcp-metadata": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz",
+ "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==",
+ "dependencies": {
+ "gaxios": "^6.0.0",
+ "json-bigint": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/google-auth-library": {
+ "version": "9.14.1",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.14.1.tgz",
+ "integrity": "sha512-Rj+PMjoNFGFTmtItH7gHfbHpGVSb3vmnGK3nwNBqxQF9NoBpttSZI/rc0WiM63ma2uGDQtYEkMHkK9U6937NiA==",
+ "dependencies": {
+ "base64-js": "^1.3.0",
+ "ecdsa-sig-formatter": "^1.0.11",
+ "gaxios": "^6.1.1",
+ "gcp-metadata": "^6.1.0",
+ "gtoken": "^7.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gtoken": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
+ "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
+ "dependencies": {
+ "gaxios": "^6.0.0",
+ "jws": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/html-entities": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ]
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http-proxy-agent/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/js-levenshtein": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/json-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
+ "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+ "dependencies": {
+ "bignumber.js": "^9.0.0"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
+ "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
+ "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+ "dependencies": {
+ "jwa": "^2.0.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/kuler": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
+ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/logform": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz",
+ "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==",
+ "dependencies": {
+ "@colors/colors": "1.6.0",
+ "@types/triple-beam": "^1.3.2",
+ "fecha": "^4.2.0",
+ "ms": "^2.1.1",
+ "safe-stable-stringify": "^2.3.1",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "7.4.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
+ "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz",
+ "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/one-time": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
+ "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
+ "dependencies": {
+ "fn.name": "1.x.x"
+ }
+ },
+ "node_modules/openai": {
+ "version": "4.61.1",
+ "resolved": "https://registry.npmjs.org/openai/-/openai-4.61.1.tgz",
+ "integrity": "sha512-jZ2WRn+f4QWZkYnrUS+xzEUIBllsGN75dUCaXmMIHcv2W9yn7O8amaReTbGHCNEYkL43vuDOcxPUWfNPUmoD3Q==",
+ "dependencies": {
+ "@types/node": "^18.11.18",
+ "@types/node-fetch": "^2.6.4",
+ "@types/qs": "^6.9.15",
+ "abort-controller": "^3.0.0",
+ "agentkeepalive": "^4.2.1",
+ "form-data-encoder": "1.7.2",
+ "formdata-node": "^4.3.2",
+ "node-fetch": "^2.6.7",
+ "qs": "^6.10.3"
+ },
+ "bin": {
+ "openai": "bin/cli"
+ },
+ "peerDependencies": {
+ "zod": "^3.23.8"
+ },
+ "peerDependenciesMeta": {
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/openai/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/posthog-node": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-3.6.3.tgz",
+ "integrity": "sha512-JB+ei0LkwE+rKHyW5z79Nd1jUaGxU6TvkfjFqY9vQaHxU5aU8dRl0UUaEmZdZbHwjp3WmXCBQQRNyimwbNQfCw==",
+ "dependencies": {
+ "axios": "^1.6.2",
+ "rusha": "^0.8.14"
+ },
+ "engines": {
+ "node": ">=15.0.0"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/retry-request": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz",
+ "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==",
+ "dependencies": {
+ "@types/request": "^2.48.8",
+ "extend": "^3.0.2",
+ "teeny-request": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rusha": {
+ "version": "0.8.14",
+ "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz",
+ "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safe-stable-stringify": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
+ "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/stream-events": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
+ "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
+ "dependencies": {
+ "stubs": "^3.0.0"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ=="
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
+ "node_modules/stubs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
+ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw=="
+ },
+ "node_modules/teeny-request": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz",
+ "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==",
+ "dependencies": {
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "node-fetch": "^2.6.9",
+ "stream-events": "^1.0.5",
+ "uuid": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/teeny-request/node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/teeny-request/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/teeny-request/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/teeny-request/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/text-hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/triple-beam": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz",
+ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==",
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/ts-morph": {
+ "version": "19.0.0",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-19.0.0.tgz",
+ "integrity": "sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==",
+ "dependencies": {
+ "@ts-morph/common": "~0.20.0",
+ "code-block-writer": "^12.0.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/web-streams-polyfill": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/web-tree-sitter": {
+ "version": "0.20.8",
+ "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz",
+ "integrity": "sha512-weOVgZ3aAARgdnb220GqYuh7+rZU0Ka9k9yfKtGAzEYMa6GgiCzW9JjQRJyCJakvibQW+dfjJdihjInKuuCAUQ=="
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/winston": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.2.tgz",
+ "integrity": "sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==",
+ "dependencies": {
+ "@colors/colors": "^1.6.0",
+ "@dabh/diagnostics": "^2.0.2",
+ "async": "^3.2.3",
+ "is-stream": "^2.0.0",
+ "logform": "^2.6.0",
+ "one-time": "^1.0.0",
+ "readable-stream": "^3.4.0",
+ "safe-stable-stringify": "^2.3.1",
+ "stack-trace": "0.0.x",
+ "triple-beam": "^1.3.0",
+ "winston-transport": "^4.7.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston-transport": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz",
+ "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==",
+ "dependencies": {
+ "logform": "^2.6.1",
+ "readable-stream": "^3.6.2",
+ "triple-beam": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ }
+ },
+ "node_modules/winston-vscode": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/winston-vscode/-/winston-vscode-1.0.0.tgz",
+ "integrity": "sha512-pC9WBAJd+1RzsKlorv1YBRSO0kmQlA4VG5+twxggpr3z7wCTj4lXFe0uLNwZ+GXCJ4BlYCX5kf3iEKRPFpZ0Hw==",
+ "dependencies": {
+ "winston-transport": "^4.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/extensions/codestory/package.json b/extensions/codestory/package.json
index 75599440072..22d1aa50b6b 100644
--- a/extensions/codestory/package.json
+++ b/extensions/codestory/package.json
@@ -12,22 +12,20 @@
"*"
],
"enabledApiProposals": [
- "inlineCompletionsAdditions",
- "interactive",
- "chatProvider",
- "aideGetInlayHintsProvider",
"aideGetCodeLensProvider",
+ "aideGetInlayHintsProvider",
+ "aideProbe",
"chatParticipantAdditions",
"chatParticipantPrivate",
- "aideChatParticipant",
- "aideChatVariableResolver",
- "aideProbe",
+ "chatProvider",
+ "chatVariableResolver",
+ "csAuthentication",
"csevents",
"defaultChatParticipant",
- "chatVariableResolver",
+ "inlineCompletionsAdditions",
+ "interactive",
"modelSelection",
- "terminalSelection",
- "csAuthentication"
+ "terminalSelection"
],
"files": [
"src/llm/embeddings/models/**/*",
diff --git a/extensions/codestory/src/completions/providers/chatprovider.ts b/extensions/codestory/src/completions/providers/chatprovider.ts
index a2ea0a9e69f..ab4ce2cc281 100644
--- a/extensions/codestory/src/completions/providers/chatprovider.ts
+++ b/extensions/codestory/src/completions/providers/chatprovider.ts
@@ -95,7 +95,7 @@ export class CSChatAgentProvider implements vscode.Disposable {
this._projectContext = projectContext;
this.chatAgent = vscode.aideChat.createChatParticipant('aide', this.defaultAgentRequestHandler);
- this.chatAgent.isDefault = true;
+ // this.chatAgent.isDefault = true;
this.chatAgent.iconPath = vscode.Uri.joinPath(
vscode.extensions.getExtension('codestory-ghost.codestoryai')?.extensionUri ?? vscode.Uri.parse(''),
'assets',
diff --git a/extensions/codestory/src/server/types.ts b/extensions/codestory/src/server/types.ts
index c9d38bfec2a..d769bddbe99 100644
--- a/extensions/codestory/src/server/types.ts
+++ b/extensions/codestory/src/server/types.ts
@@ -115,8 +115,8 @@ interface SearchQuery {
}
type SearchResultSnippet =
- | { type: 'FileContent', content: Uint8Array }
- | { type: 'Tag', tag: string };
+ | { type: 'FileContent'; content: Uint8Array }
+ | { type: 'Tag'; tag: string };
interface SearchResult {
path: string;
@@ -141,14 +141,14 @@ interface DecideResponse {
type IterativeSearchEvent =
| { type: 'SearchStarted' }
- | { type: 'SeedApplied', duration: Duration }
- | { type: 'SearchQueriesGenerated', queries: SearchQuery[], duration: Duration }
- | { type: 'SearchExecuted', results: SearchResult[], duration: Duration }
- | { type: 'IdentificationCompleted', response: IdentifyResponse, duration: Duration }
- | { type: 'FileOutlineGenerated', duration: Duration }
- | { type: 'DecisionMade', response: DecideResponse, duration: Duration }
- | { type: 'LoopCompleted', iteration: number, duration: Duration }
- | { type: 'SearchCompleted', duration: Duration };
+ | { type: 'SeedApplied'; duration: Duration }
+ | { type: 'SearchQueriesGenerated'; queries: SearchQuery[]; duration: Duration }
+ | { type: 'SearchExecuted'; results: SearchResult[]; duration: Duration }
+ | { type: 'IdentificationCompleted'; response: IdentifyResponse; duration: Duration }
+ | { type: 'FileOutlineGenerated'; duration: Duration }
+ | { type: 'DecisionMade'; response: DecideResponse; duration: Duration }
+ | { type: 'LoopCompleted'; iteration: number; duration: Duration }
+ | { type: 'SearchCompleted'; duration: Duration };
interface Duration {
secs: number;
diff --git a/extensions/codestory/src/sidecar/client.ts b/extensions/codestory/src/sidecar/client.ts
index 2ff709f008d..21cb590c71b 100644
--- a/extensions/codestory/src/sidecar/client.ts
+++ b/extensions/codestory/src/sidecar/client.ts
@@ -7,10 +7,11 @@ import * as path from 'path';
import * as vscode from 'vscode';
import { sidecarTypeDefinitionsWithNode } from '../completions/helpers/vscodeApi';
import { LoggingService } from '../completions/logger';
-import { OPEN_FILES_VARIABLE } from '../completions/providers/openFiles';
import { StreamCompletionResponse, StreamCompletionResponseUpdates } from '../completions/providers/fetch-and-process-completions';
+import { OPEN_FILES_VARIABLE } from '../completions/providers/openFiles';
import { TERMINAL_SELECTION_VARIABLE } from '../completions/providers/terminalSelection';
import { CompletionRequest, CompletionResponse } from '../inlineCompletion/sidecarCompletion';
+import { CodeEditAgentBody, ProbeAgentBody, SideCarAgentEvent, UserContext } from '../server/types';
import { SelectionDataForExplain } from '../utilities/getSelectionContext';
import { sidecarNotIndexRepository } from '../utilities/sidecarUrl';
import { sleep } from '../utilities/sleep';
@@ -19,8 +20,6 @@ import { CodeSymbolInformationEmbeddings, CodeSymbolKind } from '../utilities/ty
import { getUserId } from '../utilities/uniqueId';
import { callServerEventStreamingBufferedGET, callServerEventStreamingBufferedPOST } from './ssestream';
import { ConversationMessage, EditFileResponse, getSideCarModelConfiguration, IdentifierNodeType, InEditorRequest, InEditorTreeSitterDocumentationQuery, InEditorTreeSitterDocumentationReply, InLineAgentMessage, Position, RepoStatus, SemanticSearchResponse, SidecarVariableType, SidecarVariableTypes, SnippetInformation, SyncUpdate, TextDocument } from './types';
-import { CodeEditAgentBody, ProbeAgentBody, SideCarAgentEvent, UserContext } from '../server/types';
-import { Diagnostic } from 'vscode';
export enum CompletionStopReason {
/**
@@ -634,7 +633,7 @@ export class SideCarClient {
async sendDiagnostics(
filePath: string,
- diagnostics: readonly Diagnostic[]
+ diagnostics: readonly vscode.Diagnostic[]
): Promise {
const textDocument = await vscode.workspace.openTextDocument(vscode.Uri.file(filePath));
const baseUrl = new URL(this._url);
diff --git a/extensions/codestory/tsconfig.json b/extensions/codestory/tsconfig.json
index 59e4bb1bb11..8f8ab546055 100644
--- a/extensions/codestory/tsconfig.json
+++ b/extensions/codestory/tsconfig.json
@@ -8,8 +8,6 @@
"include": [
"src/**/*",
"../../src/vscode-dts/vscode.d.ts",
- "../../src/vscode-dts/vscode.proposed.aideChatParticipant.d.ts",
- "../../src/vscode-dts/vscode.proposed.aideChatVariableResolver.d.ts",
"../../src/vscode-dts/vscode.proposed.aideProbe.d.ts",
"../../src/vscode-dts/vscode.proposed.chatParticipantAdditions.d.ts",
"../../src/vscode-dts/vscode.proposed.chatParticipantPrivate.d.ts",
diff --git a/extensions/codestory/yarn.lock b/extensions/codestory/yarn.lock
deleted file mode 100644
index 843531224b8..00000000000
--- a/extensions/codestory/yarn.lock
+++ /dev/null
@@ -1,1030 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@colors/colors@1.5.0":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
- integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
-
-"@dabh/diagnostics@^2.0.2":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
- integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
- dependencies:
- colorspace "1.1.x"
- enabled "2.0.x"
- kuler "^2.0.0"
-
-"@google-cloud/paginator@^3.0.7":
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b"
- integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==
- dependencies:
- arrify "^2.0.0"
- extend "^3.0.2"
-
-"@google-cloud/projectify@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408"
- integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==
-
-"@google-cloud/promisify@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e"
- integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==
-
-"@google-cloud/storage@^7.0.1":
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.0.1.tgz#38c267bb8377d442066d4eccb4f942f58d119476"
- integrity sha512-YBJ8HaDZvbeVDgEGWuC6sCsfZNCooVfKg1J+CJ4iXwRejIWbKFjl8laWz8w+/+ucJHM9qOdGkB95Q/mhh2CX/A==
- dependencies:
- "@google-cloud/paginator" "^3.0.7"
- "@google-cloud/projectify" "^3.0.0"
- "@google-cloud/promisify" "^3.0.0"
- abort-controller "^3.0.0"
- async-retry "^1.3.3"
- compressible "^2.0.12"
- duplexify "^4.0.0"
- ent "^2.2.0"
- fast-xml-parser "^4.2.2"
- gaxios "^6.0.2"
- google-auth-library "^9.0.0"
- mime "^3.0.0"
- mime-types "^2.0.8"
- p-limit "^3.0.1"
- retry-request "^6.0.0"
- teeny-request "^9.0.0"
- uuid "^8.0.0"
-
-"@nodelib/fs.scandir@2.1.5":
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
- integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
- dependencies:
- "@nodelib/fs.stat" "2.0.5"
- run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
- integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
- integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
- dependencies:
- "@nodelib/fs.scandir" "2.1.5"
- fastq "^1.6.0"
-
-"@tootallnate/once@2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
- integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
-
-"@ts-morph/common@~0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.20.0.tgz#3f161996b085ba4519731e4d24c35f6cba5b80af"
- integrity sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==
- dependencies:
- fast-glob "^3.2.12"
- minimatch "^7.4.3"
- mkdirp "^2.1.6"
- path-browserify "^1.0.1"
-
-"@types/diff@^5.0.3":
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/@types/diff/-/diff-5.0.3.tgz#1f89e49ff83b5d200d78964fb896c68498ce1828"
- integrity sha512-amrLbRqTU9bXMCc6uX0sWpxsQzRIo9z6MJPkH1pkez/qOxuqSZVuryJAWoBRq94CeG8JxY+VK4Le9HtjQR5T9A==
-
-"@types/js-levenshtein@^1.1.3":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz#a6fd0bdc8255b274e5438e0bfb25f154492d1106"
- integrity sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==
-
-"@types/lodash@^4.14.202":
- version "4.14.202"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8"
- integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==
-
-"@types/node-fetch@^2.6.4":
- version "2.6.4"
- resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660"
- integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==
- dependencies:
- "@types/node" "*"
- form-data "^3.0.0"
-
-"@types/node@*":
- version "20.4.8"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.8.tgz#b5dda19adaa473a9bf0ab5cbd8f30ec7d43f5c85"
- integrity sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==
-
-"@types/node@18.x":
- version "18.19.22"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.22.tgz#f622f92514b897e6b09903e97c16a0db8e94689f"
- integrity sha512-p3pDIfuMg/aXBmhkyanPshdfJuX5c5+bQjYLIikPLXAUycEogij/c50n/C+8XOA5L93cU4ZRXtn+dNQGi0IZqQ==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/node@^18.11.18":
- version "18.17.6"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.6.tgz#0296e9a30b22d2a8fcaa48d3c45afe51474ca55b"
- integrity sha512-fGmT/P7z7ecA6bv/ia5DlaWCH4YeZvAQMNpUhrJjtAhOhZfoxS1VLUgU2pdk63efSjQaOJWdXMuAJsws+8I6dg==
-
-"@types/triple-beam@^1.3.2":
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8"
- integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==
-
-"@types/uuid@^9.0.2":
- version "9.0.8"
- resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba"
- integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==
-
-abort-controller@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
- integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
- dependencies:
- event-target-shim "^5.0.0"
-
-agent-base@6:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
- integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
- dependencies:
- debug "4"
-
-agent-base@^7.0.2:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434"
- integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==
- dependencies:
- debug "^4.3.4"
-
-agentkeepalive@^4.2.1:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923"
- integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==
- dependencies:
- humanize-ms "^1.2.1"
-
-arrify@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
- integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
-
-async-retry@^1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280"
- integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==
- dependencies:
- retry "0.13.1"
-
-async@^3.2.3:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
- integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-
-axios@^0.27.0:
- version "0.27.2"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
- integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
- dependencies:
- follow-redirects "^1.14.9"
- form-data "^4.0.0"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-base-64@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
- integrity sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==
-
-base64-js@^1.3.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
-bignumber.js@^9.0.0:
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6"
- integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==
-
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
- dependencies:
- balanced-match "^1.0.0"
-
-braces@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-buffer-equal-constant-time@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
- integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
-
-charenc@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
- integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
-
-code-block-writer@^12.0.0:
- version "12.0.0"
- resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-12.0.0.tgz#4dd58946eb4234105aff7f0035977b2afdc2a770"
- integrity sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==
-
-color-convert@^1.9.3:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
-color-name@^1.0.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-string@^1.6.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
- integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
-color@^3.1.3:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
- integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
- dependencies:
- color-convert "^1.9.3"
- color-string "^1.6.0"
-
-colorspace@1.1.x:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
- integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
- dependencies:
- color "^3.1.3"
- text-hex "1.0.x"
-
-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"
-
-compressible@^2.0.12:
- version "2.0.18"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
- integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
- dependencies:
- mime-db ">= 1.43.0 < 2"
-
-crypt@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
- integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
-
-data-uri-to-buffer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
- integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
-
-debug@4, debug@^4.1.1, debug@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
- dependencies:
- ms "2.1.2"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
- integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-
-diff@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
- integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==
-
-digest-fetch@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/digest-fetch/-/digest-fetch-1.3.0.tgz#898e69264d00012a23cf26e8a3e40320143fc661"
- integrity sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==
- dependencies:
- base-64 "^0.1.0"
- md5 "^2.3.0"
-
-duplexify@^4.0.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0"
- integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==
- dependencies:
- end-of-stream "^1.4.1"
- inherits "^2.0.3"
- readable-stream "^3.1.1"
- stream-shift "^1.0.0"
-
-ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
- integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
- dependencies:
- safe-buffer "^5.0.1"
-
-enabled@2.0.x:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
- integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
-
-end-of-stream@^1.4.1:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
-
-ent@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
- integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==
-
-event-target-shim@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
- integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
-
-extend@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-fast-glob@^3.2.12:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
- integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
-fast-xml-parser@^4.2.2:
- version "4.2.7"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz#871f2ca299dc4334b29f8da3658c164e68395167"
- integrity sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==
- dependencies:
- strnum "^1.0.5"
-
-fastq@^1.6.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
- integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
- dependencies:
- reusify "^1.0.4"
-
-fecha@^4.2.0:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
- integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
-
-fetch-blob@^3.1.2, fetch-blob@^3.1.4:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
- integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
- dependencies:
- node-domexception "^1.0.0"
- web-streams-polyfill "^3.0.3"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-fn.name@1.x.x:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
- integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
-
-follow-redirects@^1.14.9:
- version "1.15.2"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
- integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
-
-form-data-encoder@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040"
- integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==
-
-form-data@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
- integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-form-data@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
- integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-formdata-node@^4.3.2:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2"
- integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==
- dependencies:
- node-domexception "1.0.0"
- web-streams-polyfill "4.0.0-beta.3"
-
-formdata-polyfill@^4.0.10:
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
- integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
- dependencies:
- fetch-blob "^3.1.2"
-
-gaxios@^6.0.0, gaxios@^6.0.2:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.1.0.tgz#8ab08adbf9cc600368a57545f58e004ccf831ccb"
- integrity sha512-EIHuesZxNyIkUGcTQKQPMICyOpDD/bi+LJIJx+NLsSGmnS7N+xCLRX5bi4e9yAu9AlSZdVq+qlyWWVuTh/483w==
- dependencies:
- extend "^3.0.2"
- https-proxy-agent "^7.0.1"
- is-stream "^2.0.0"
- node-fetch "^2.6.9"
-
-gcp-metadata@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.0.0.tgz#2ae12008bef8caa8726cba31fd0a641ebad5fb56"
- integrity sha512-Ozxyi23/1Ar51wjUT2RDklK+3HxqDr8TLBNK8rBBFQ7T85iIGnXnVusauj06QyqCXRFZig8LZC+TUddWbndlpQ==
- dependencies:
- gaxios "^6.0.0"
- json-bigint "^1.0.0"
-
-glob-parent@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
- dependencies:
- is-glob "^4.0.1"
-
-google-auth-library@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.0.0.tgz#b159d22464c679a6a25cb46d48a4ac97f9f426a2"
- integrity sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==
- dependencies:
- base64-js "^1.3.0"
- ecdsa-sig-formatter "^1.0.11"
- gaxios "^6.0.0"
- gcp-metadata "^6.0.0"
- gtoken "^7.0.0"
- jws "^4.0.0"
- lru-cache "^6.0.0"
-
-gtoken@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.0.1.tgz#b64bd01d88268ea3a3572c9076a85d1c48f1a455"
- integrity sha512-KcFVtoP1CVFtQu0aSk3AyAt2og66PFhZAlkUOuWKwzMLoulHXG5W5wE5xAnHb+yl3/wEFoqGW7/cDGMU8igDZQ==
- dependencies:
- gaxios "^6.0.0"
- jws "^4.0.0"
-
-http-proxy-agent@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
- integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
- dependencies:
- "@tootallnate/once" "2"
- agent-base "6"
- debug "4"
-
-https-proxy-agent@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
- integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
- dependencies:
- agent-base "6"
- debug "4"
-
-https-proxy-agent@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz#0277e28f13a07d45c663633841e20a40aaafe0ab"
- integrity sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==
- dependencies:
- agent-base "^7.0.2"
- debug "4"
-
-humanize-ms@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
- integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
- dependencies:
- ms "^2.0.0"
-
-inherits@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
-is-buffer@~1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-glob@^4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-stream@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
- integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
-
-js-levenshtein@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
- integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
-
-json-bigint@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
- integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
- dependencies:
- bignumber.js "^9.0.0"
-
-jwa@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc"
- integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==
- dependencies:
- buffer-equal-constant-time "1.0.1"
- ecdsa-sig-formatter "1.0.11"
- safe-buffer "^5.0.1"
-
-jws@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4"
- integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==
- dependencies:
- jwa "^2.0.0"
- safe-buffer "^5.0.1"
-
-kuler@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
- integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
-
-lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-
-logform@^2.3.2, logform@^2.4.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b"
- integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==
- dependencies:
- "@colors/colors" "1.5.0"
- "@types/triple-beam" "^1.3.2"
- fecha "^4.2.0"
- ms "^2.1.1"
- safe-stable-stringify "^2.3.1"
- triple-beam "^1.3.0"
-
-lru-cache@^10.2.0:
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
- integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
-
-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"
-
-md5@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
- integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
- dependencies:
- charenc "0.0.2"
- crypt "0.0.2"
- is-buffer "~1.1.6"
-
-merge2@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-micromatch@^4.0.4:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
- integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
- dependencies:
- braces "^3.0.2"
- picomatch "^2.3.1"
-
-mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
- version "1.52.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
- integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@^2.0.8, mime-types@^2.1.12:
- version "2.1.35"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
- integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
- dependencies:
- mime-db "1.52.0"
-
-mime@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
- integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
-
-minimatch@^7.4.3:
- version "7.4.6"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb"
- integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==
- dependencies:
- brace-expansion "^2.0.1"
-
-mkdirp@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19"
- integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.0.0, ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-node-domexception@1.0.0, node-domexception@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
- integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
-
-node-fetch@^2.6.7:
- version "2.6.13"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.13.tgz#a20acbbec73c2e09f9007de5cda17104122e0010"
- integrity sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==
- dependencies:
- whatwg-url "^5.0.0"
-
-node-fetch@^2.6.9:
- version "2.6.12"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba"
- integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==
- dependencies:
- whatwg-url "^5.0.0"
-
-node-fetch@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
- integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
- dependencies:
- data-uri-to-buffer "^4.0.0"
- fetch-blob "^3.1.4"
- formdata-polyfill "^4.0.10"
-
-once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
- dependencies:
- wrappy "1"
-
-one-time@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
- integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
- dependencies:
- fn.name "1.x.x"
-
-openai@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/openai/-/openai-4.0.1.tgz#bcf1b4a53ee23f2df0f60e96eadc908c95eed1e2"
- integrity sha512-UanMv/kCD/ylgOdBrkkRgkoFXdfENrXYWNvYdvPttXZaEJmRVY9MZSknlkWYH7iPMX6tTcz6szbI2d3O04UFag==
- dependencies:
- "@types/node" "^18.11.18"
- "@types/node-fetch" "^2.6.4"
- abort-controller "^3.0.0"
- agentkeepalive "^4.2.1"
- digest-fetch "^1.3.0"
- form-data-encoder "1.7.2"
- formdata-node "^4.3.2"
- node-fetch "^2.6.7"
-
-p-limit@^3.0.1:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
- integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
- dependencies:
- yocto-queue "^0.1.0"
-
-path-browserify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
- integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
-
-picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-posthog-node@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/posthog-node/-/posthog-node-3.1.1.tgz#f92c44a871552c9bfb98bf4cc8fd326d36af6cbd"
- integrity sha512-OUSYcnLHbzvY/dxNsbUGoYuTZz5XNx48BkfiCkOIJZMFvot5VPQ0KWEjX+kzYxEwHeXbjW9plqsOVcYCYfidgg==
- dependencies:
- axios "^0.27.0"
- rusha "^0.8.14"
-
-queue-microtask@^1.2.2:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
- integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
-readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
- integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-retry-request@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-6.0.0.tgz#a74dbbab421b51daefa20228f6036e6e2a0f1169"
- integrity sha512-24kaFMd3wCnT3n4uPnsQh90ZSV8OISpfTFXJ00Wi+/oD2OPrp63EQ8hznk6rhxdlpwx2QBhQSDz2Fg46ki852g==
- dependencies:
- debug "^4.1.1"
- extend "^3.0.2"
-
-retry@0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
- integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
-
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
-run-parallel@^1.1.9:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
- integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
- dependencies:
- queue-microtask "^1.2.2"
-
-rusha@^0.8.14:
- version "0.8.14"
- resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.14.tgz#a977d0de9428406138b7bb90d3de5dcd024e2f68"
- integrity sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==
-
-safe-buffer@^5.0.1, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-stable-stringify@^2.3.1:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
- integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
-
-simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
- dependencies:
- is-arrayish "^0.3.1"
-
-stack-trace@0.0.x:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
- integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
-
-stream-events@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5"
- integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==
- dependencies:
- stubs "^3.0.0"
-
-stream-shift@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
- integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-strnum@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
- integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
-
-stubs@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b"
- integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==
-
-teeny-request@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d"
- integrity sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==
- dependencies:
- http-proxy-agent "^5.0.0"
- https-proxy-agent "^5.0.0"
- node-fetch "^2.6.9"
- stream-events "^1.0.5"
- uuid "^9.0.0"
-
-text-hex@1.0.x:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
- integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-
-triple-beam@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984"
- integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==
-
-ts-morph@^19.0.0:
- version "19.0.0"
- resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-19.0.0.tgz#43e95fb0156c3fe3c77c814ac26b7d0be2f93169"
- integrity sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==
- dependencies:
- "@ts-morph/common" "~0.20.0"
- code-block-writer "^12.0.0"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-util-deprecate@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-uuid@^8.0.0:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
- integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-
-uuid@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
- integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
-
-web-streams-polyfill@4.0.0-beta.3:
- version "4.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38"
- integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==
-
-web-streams-polyfill@^3.0.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"
- integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
-
-web-tree-sitter@^0.20.8:
- version "0.20.8"
- resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz#1e371cb577584789cadd75cb49c7ddfbc99d04c8"
- integrity sha512-weOVgZ3aAARgdnb220GqYuh7+rZU0Ka9k9yfKtGAzEYMa6GgiCzW9JjQRJyCJakvibQW+dfjJdihjInKuuCAUQ==
-
-webidl-conversions@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
-
-whatwg-url@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
- dependencies:
- tr46 "~0.0.3"
- webidl-conversions "^3.0.0"
-
-winston-transport@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
- integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==
- dependencies:
- logform "^2.3.2"
- readable-stream "^3.6.0"
- triple-beam "^1.3.0"
-
-winston-vscode@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/winston-vscode/-/winston-vscode-1.0.0.tgz#108c6cc7e8419adf6ec8f631d475ab0217af2f7f"
- integrity sha512-pC9WBAJd+1RzsKlorv1YBRSO0kmQlA4VG5+twxggpr3z7wCTj4lXFe0uLNwZ+GXCJ4BlYCX5kf3iEKRPFpZ0Hw==
- dependencies:
- winston-transport "^4.5.0"
-
-winston@^3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/winston/-/winston-3.10.0.tgz#d033cb7bd3ced026fed13bf9d92c55b903116803"
- integrity sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==
- dependencies:
- "@colors/colors" "1.5.0"
- "@dabh/diagnostics" "^2.0.2"
- async "^3.2.3"
- is-stream "^2.0.0"
- logform "^2.4.0"
- one-time "^1.0.0"
- readable-stream "^3.4.0"
- safe-stable-stringify "^2.3.1"
- stack-trace "0.0.x"
- triple-beam "^1.3.0"
- winston-transport "^4.5.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-
-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==
-
-yocto-queue@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
- integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/extensions/coffeescript/yarn.lock b/extensions/coffeescript/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/coffeescript/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/configuration-editing/.vscodeignore b/extensions/configuration-editing/.vscodeignore
index cfa2d155c50..679a6d6859f 100644
--- a/extensions/configuration-editing/.vscodeignore
+++ b/extensions/configuration-editing/.vscodeignore
@@ -4,7 +4,7 @@ tsconfig.json
out/**
extension.webpack.config.js
extension-browser.webpack.config.js
-yarn.lock
+package-lock.json
build/**
schemas/devContainer.codespaces.schema.json
schemas/devContainer.vscode.schema.json
diff --git a/extensions/configuration-editing/package-lock.json b/extensions/configuration-editing/package-lock.json
new file mode 100644
index 00000000000..199dcf7f755
--- /dev/null
+++ b/extensions/configuration-editing/package-lock.json
@@ -0,0 +1,296 @@
+{
+ "name": "configuration-editing",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "configuration-editing",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/rest": "19.0.4",
+ "jsonc-parser": "^3.2.0",
+ "tunnel": "^0.0.6"
+ },
+ "devDependencies": {
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "^1.0.0"
+ }
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz",
+ "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz",
+ "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==",
+ "dependencies": {
+ "@octokit/auth-token": "^3.0.0",
+ "@octokit/graphql": "^5.0.0",
+ "@octokit/request": "^6.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^9.0.0",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz",
+ "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==",
+ "dependencies": {
+ "@octokit/types": "^9.0.0",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz",
+ "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==",
+ "dependencies": {
+ "@octokit/request": "^6.0.0",
+ "@octokit/types": "^9.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz",
+ "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.3.1.tgz",
+ "integrity": "sha512-h8KKxESmSFTcXX409CAxlaOYscEDvN2KGQRsLCGT1NSqRW+D6EXLVQ8vuHhFznS9MuH9QYw1GfsUN30bg8hjVA==",
+ "dependencies": {
+ "@octokit/types": "^7.5.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=4"
+ }
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
+ "version": "13.13.1",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.13.1.tgz",
+ "integrity": "sha512-4EuKSk3N95UBWFau3Bz9b3pheQ8jQYbKmBL5+GSuY8YDPDwu03J4BjI+66yNi8aaX/3h1qDpb0mbBkLdr+cfGQ=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.5.1.tgz",
+ "integrity": "sha512-Zk4OUMLCSpXNI8KZZn47lVLJSsgMyCimsWWQI5hyjZg7hdYm0kjotaIkbG0Pp8SfU2CofMBzonboTqvzn3FrJA==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.11.0"
+ }
+ },
+ "node_modules/@octokit/plugin-request-log": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
+ "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz",
+ "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==",
+ "dependencies": {
+ "@octokit/types": "^8.1.1",
+ "deprecation": "^2.3.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz",
+ "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw=="
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz",
+ "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^14.0.0"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "6.2.8",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz",
+ "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==",
+ "dependencies": {
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^9.0.0",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz",
+ "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==",
+ "dependencies": {
+ "@octokit/types": "^9.0.0",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/rest": {
+ "version": "19.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.4.tgz",
+ "integrity": "sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==",
+ "dependencies": {
+ "@octokit/core": "^4.0.0",
+ "@octokit/plugin-paginate-rest": "^4.0.0",
+ "@octokit/plugin-request-log": "^1.0.4",
+ "@octokit/plugin-rest-endpoint-methods": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz",
+ "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==",
+ "dependencies": {
+ "@octokit/openapi-types": "^18.0.0"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/before-after-hook": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
+ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
+ },
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/universal-user-agent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ }
+ }
+}
diff --git a/extensions/configuration-editing/schemas/devContainer.codespaces.schema.json b/extensions/configuration-editing/schemas/devContainer.codespaces.schema.json
index 681ca6105cf..3f8400a7bd4 100644
--- a/extensions/configuration-editing/schemas/devContainer.codespaces.schema.json
+++ b/extensions/configuration-editing/schemas/devContainer.codespaces.schema.json
@@ -180,6 +180,11 @@
"items": {
"type": "string"
}
+ },
+ "disableAutomaticConfiguration": {
+ "type": "boolean",
+ "description": "Disables the setup that is automatically run in a codespace if no `postCreateCommand` is specified.",
+ "default": false
}
}
}
diff --git a/extensions/configuration-editing/yarn.lock b/extensions/configuration-editing/yarn.lock
deleted file mode 100644
index 0e7d733c76f..00000000000
--- a/extensions/configuration-editing/yarn.lock
+++ /dev/null
@@ -1,205 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@octokit/auth-token@^3.0.0":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db"
- integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==
-
-"@octokit/core@^4.0.0":
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907"
- integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==
- dependencies:
- "@octokit/auth-token" "^3.0.0"
- "@octokit/graphql" "^5.0.0"
- "@octokit/request" "^6.0.0"
- "@octokit/request-error" "^3.0.0"
- "@octokit/types" "^9.0.0"
- before-after-hook "^2.2.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/endpoint@^7.0.0":
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2"
- integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==
- dependencies:
- "@octokit/types" "^9.0.0"
- is-plain-object "^5.0.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/graphql@^5.0.0":
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248"
- integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==
- dependencies:
- "@octokit/request" "^6.0.0"
- "@octokit/types" "^9.0.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/openapi-types@^13.11.0":
- version "13.13.1"
- resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-13.13.1.tgz#a783bacb1817c9f61a2a0c3f81ea22ad62340fdf"
- integrity sha512-4EuKSk3N95UBWFau3Bz9b3pheQ8jQYbKmBL5+GSuY8YDPDwu03J4BjI+66yNi8aaX/3h1qDpb0mbBkLdr+cfGQ==
-
-"@octokit/openapi-types@^14.0.0":
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a"
- integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==
-
-"@octokit/openapi-types@^18.0.0":
- version "18.0.0"
- resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.0.0.tgz#f43d765b3c7533fd6fb88f3f25df079c24fccf69"
- integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==
-
-"@octokit/plugin-paginate-rest@^4.0.0":
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.3.1.tgz#553e653ee0318605acd23bf3a799c8bfafdedae3"
- integrity sha512-h8KKxESmSFTcXX409CAxlaOYscEDvN2KGQRsLCGT1NSqRW+D6EXLVQ8vuHhFznS9MuH9QYw1GfsUN30bg8hjVA==
- dependencies:
- "@octokit/types" "^7.5.0"
-
-"@octokit/plugin-request-log@^1.0.4":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
- integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
-
-"@octokit/plugin-rest-endpoint-methods@^6.0.0":
- version "6.8.1"
- resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1"
- integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==
- dependencies:
- "@octokit/types" "^8.1.1"
- deprecation "^2.3.1"
-
-"@octokit/request-error@^3.0.0":
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69"
- integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==
- dependencies:
- "@octokit/types" "^9.0.0"
- deprecation "^2.0.0"
- once "^1.4.0"
-
-"@octokit/request@^6.0.0":
- version "6.2.8"
- resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb"
- integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==
- dependencies:
- "@octokit/endpoint" "^7.0.0"
- "@octokit/request-error" "^3.0.0"
- "@octokit/types" "^9.0.0"
- is-plain-object "^5.0.0"
- node-fetch "^2.6.7"
- universal-user-agent "^6.0.0"
-
-"@octokit/rest@19.0.4":
- version "19.0.4"
- resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.4.tgz#fd8bed1cefffa486e9ae46a9dc608ce81bcfcbdd"
- integrity sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==
- dependencies:
- "@octokit/core" "^4.0.0"
- "@octokit/plugin-paginate-rest" "^4.0.0"
- "@octokit/plugin-request-log" "^1.0.4"
- "@octokit/plugin-rest-endpoint-methods" "^6.0.0"
-
-"@octokit/types@^7.5.0":
- version "7.5.1"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-7.5.1.tgz#4e8b182933c17e1f41cc25d44757dbdb7bd76c1b"
- integrity sha512-Zk4OUMLCSpXNI8KZZn47lVLJSsgMyCimsWWQI5hyjZg7hdYm0kjotaIkbG0Pp8SfU2CofMBzonboTqvzn3FrJA==
- dependencies:
- "@octokit/openapi-types" "^13.11.0"
-
-"@octokit/types@^8.1.1":
- version "8.2.1"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa"
- integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==
- dependencies:
- "@octokit/openapi-types" "^14.0.0"
-
-"@octokit/types@^9.0.0":
- version "9.3.2"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5"
- integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==
- dependencies:
- "@octokit/openapi-types" "^18.0.0"
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-before-after-hook@^2.2.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
- integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==
-
-deprecation@^2.0.0, deprecation@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
- integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
-
-is-plain-object@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
- integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
-
-jsonc-parser@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
- integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
-
-node-fetch@^2.6.7:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
- integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
- dependencies:
- whatwg-url "^5.0.0"
-
-once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
- dependencies:
- wrappy "1"
-
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-
-tunnel@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
- integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-universal-user-agent@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
- integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
-
-webidl-conversions@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
-
-whatwg-url@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
- dependencies:
- tr46 "~0.0.3"
- webidl-conversions "^3.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
diff --git a/extensions/cpp/yarn.lock b/extensions/cpp/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/cpp/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/csharp/cgmanifest.json b/extensions/csharp/cgmanifest.json
index 1c88bd17296..58a7408dbbe 100644
--- a/extensions/csharp/cgmanifest.json
+++ b/extensions/csharp/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "dotnet/csharp-tmLanguage",
"repositoryUrl": "https://github.com/dotnet/csharp-tmLanguage",
- "commitHash": "7a7482ffc72a6677a87eb1ed76005593a4f7f131"
+ "commitHash": "d63e2661d4e0c83b6c7810eb1d0eedc5da843b04"
}
},
"license": "MIT",
diff --git a/extensions/csharp/syntaxes/csharp.tmLanguage.json b/extensions/csharp/syntaxes/csharp.tmLanguage.json
index 96dbe04473c..4a2497a064a 100644
--- a/extensions/csharp/syntaxes/csharp.tmLanguage.json
+++ b/extensions/csharp/syntaxes/csharp.tmLanguage.json
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
- "version": "https://github.com/dotnet/csharp-tmLanguage/commit/7a7482ffc72a6677a87eb1ed76005593a4f7f131",
+ "version": "https://github.com/dotnet/csharp-tmLanguage/commit/d63e2661d4e0c83b6c7810eb1d0eedc5da843b04",
"name": "C#",
"scopeName": "source.cs",
"patterns": [
@@ -512,6 +512,9 @@
{
"include": "#type-name"
},
+ {
+ "include": "#type-arguments"
+ },
{
"include": "#attribute-arguments"
}
diff --git a/extensions/csharp/yarn.lock b/extensions/csharp/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/csharp/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/css-language-features/.vscodeignore b/extensions/css-language-features/.vscodeignore
index a08d9b8dec7..f6411e76fdb 100644
--- a/extensions/css-language-features/.vscodeignore
+++ b/extensions/css-language-features/.vscodeignore
@@ -11,9 +11,9 @@ server/tsconfig.json
server/test/**
server/bin/**
server/build/**
-server/yarn.lock
+server/package-lock.json
server/.npmignore
-yarn.lock
+package-lock.json
server/extension.webpack.config.js
extension.webpack.config.js
server/extension-browser.webpack.config.js
diff --git a/extensions/css-language-features/CONTRIBUTING.md b/extensions/css-language-features/CONTRIBUTING.md
index 1c3928b847a..d0f491be3b7 100644
--- a/extensions/css-language-features/CONTRIBUTING.md
+++ b/extensions/css-language-features/CONTRIBUTING.md
@@ -2,13 +2,13 @@
## Setup
- Clone [microsoft/vscode](https://github.com/microsoft/vscode)
-- Run `yarn` at `/`, this will install
+- Run `npm i` at `/`, this will install
- Dependencies for `/extension/css-language-features/`
- Dependencies for `/extension/css-language-features/server/`
- devDependencies such as `gulp`
- Open `/extensions/css-language-features/` as the workspace in VS Code
-- In `/extensions/css-language-features/` run `yarn compile`(or `yarn watch`) to build the client and server
+- In `/extensions/css-language-features/` run `npm run compile`(or `npm run watch`) to build the client and server
- Run the [`Launch Extension`](https://github.com/microsoft/vscode/blob/master/extensions/css-language-features/.vscode/launch.json) debug target in the Debug View. This will:
- Launch a new VS Code instance with the `css-language-features` extension loaded
- Open a `.css` file to activate the extension. The extension will start the CSS language server process.
@@ -30,14 +30,14 @@ However, within this extension, you can run a development version of `vscode-css
#### Linking `vscode-css-languageservice` in `css-language-features/server/`
- Clone [microsoft/vscode-css-languageservice](https://github.com/microsoft/vscode-css-languageservice)
-- Run `yarn` in `vscode-css-languageservice`
-- Run `yarn link` in `vscode-css-languageservice`. This will compile and link `vscode-css-languageservice`
-- In `css-language-features/server/`, run `yarn link vscode-css-languageservice`
+- Run `npm i` in `vscode-css-languageservice`
+- Run `npm link` in `vscode-css-languageservice`. This will compile and link `vscode-css-languageservice`
+- In `css-language-features/server/`, run `npm link vscode-css-languageservice`
#### Testing the development version of `vscode-css-languageservice`
- Open both `vscode-css-languageservice` and this extension in a single workspace with [multi-root workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces) feature
-- Run `yarn watch` in `vscode-css-languageservice` to recompile the extension whenever it changes
-- Run `yarn watch` at `css-language-features/server/` to recompile this extension with the linked version of `vscode-css-languageservice`
+- Run `npm run watch` in `vscode-css-languageservice` to recompile the extension whenever it changes
+- Run `npm run watch` at `css-language-features/server/` to recompile this extension with the linked version of `vscode-css-languageservice`
- Make some changes in `vscode-css-languageservice`
- Now when you run `Launch Extension` debug target, the launched instance will use your development version of `vscode-css-languageservice`. You can interactively test the language features.
diff --git a/extensions/css-language-features/client/src/browser/cssClientMain.ts b/extensions/css-language-features/client/src/browser/cssClientMain.ts
index 6522c786389..1d4153d9836 100644
--- a/extensions/css-language-features/client/src/browser/cssClientMain.ts
+++ b/extensions/css-language-features/client/src/browser/cssClientMain.ts
@@ -7,13 +7,7 @@ import { ExtensionContext, Uri, l10n } from 'vscode';
import { BaseLanguageClient, LanguageClientOptions } from 'vscode-languageclient';
import { startClient, LanguageClientConstructor } from '../cssClient';
import { LanguageClient } from 'vscode-languageclient/browser';
-
-declare const Worker: {
- new(stringUrl: string): any;
-};
-declare const TextDecoder: {
- new(encoding?: string): { decode(buffer: ArrayBuffer): string };
-};
+import { registerDropOrPasteResourceSupport } from '../dropOrPaste/dropOrPasteResource';
let client: BaseLanguageClient | undefined;
@@ -25,11 +19,12 @@ export async function activate(context: ExtensionContext) {
worker.postMessage({ i10lLocation: l10n.uri?.toString(false) ?? '' });
const newLanguageClient: LanguageClientConstructor = (id: string, name: string, clientOptions: LanguageClientOptions) => {
- return new LanguageClient(id, name, clientOptions, worker);
+ return new LanguageClient(id, name, worker, clientOptions);
};
client = await startClient(context, newLanguageClient, { TextDecoder });
+ context.subscriptions.push(registerDropOrPasteResourceSupport({ language: 'css', scheme: '*' }));
} catch (e) {
console.log(e);
}
diff --git a/extensions/css-language-features/client/src/dropOrPaste/dropOrPasteResource.ts b/extensions/css-language-features/client/src/dropOrPaste/dropOrPasteResource.ts
new file mode 100644
index 00000000000..6a4c38d2417
--- /dev/null
+++ b/extensions/css-language-features/client/src/dropOrPaste/dropOrPasteResource.ts
@@ -0,0 +1,152 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as path from 'path';
+import * as vscode from 'vscode';
+import { getDocumentDir, Mimes, Schemes } from './shared';
+import { UriList } from './uriList';
+
+class DropOrPasteResourceProvider implements vscode.DocumentDropEditProvider, vscode.DocumentPasteEditProvider {
+ readonly kind = vscode.DocumentDropOrPasteEditKind.Empty.append('css', 'url');
+
+ async provideDocumentDropEdits(
+ document: vscode.TextDocument,
+ position: vscode.Position,
+ dataTransfer: vscode.DataTransfer,
+ token: vscode.CancellationToken,
+ ): Promise {
+ const uriList = await this.getUriList(dataTransfer);
+ if (!uriList.entries.length || token.isCancellationRequested) {
+ return;
+ }
+
+ const snippet = await this.createUriListSnippet(document.uri, uriList);
+ if (!snippet || token.isCancellationRequested) {
+ return;
+ }
+
+ return {
+ kind: this.kind,
+ title: snippet.label,
+ insertText: snippet.snippet.value,
+ yieldTo: this.pasteAsCssUrlByDefault(document, position) ? [] : [vscode.DocumentDropOrPasteEditKind.Empty.append('uri')]
+ };
+ }
+
+ async provideDocumentPasteEdits(
+ document: vscode.TextDocument,
+ ranges: readonly vscode.Range[],
+ dataTransfer: vscode.DataTransfer,
+ _context: vscode.DocumentPasteEditContext,
+ token: vscode.CancellationToken
+ ): Promise {
+ const uriList = await this.getUriList(dataTransfer);
+ if (!uriList.entries.length || token.isCancellationRequested) {
+ return;
+ }
+
+ const snippet = await this.createUriListSnippet(document.uri, uriList);
+ if (!snippet || token.isCancellationRequested) {
+ return;
+ }
+
+ return [{
+ kind: this.kind,
+ title: snippet.label,
+ insertText: snippet.snippet.value,
+ yieldTo: this.pasteAsCssUrlByDefault(document, ranges[0].start) ? [] : [vscode.DocumentDropOrPasteEditKind.Empty.append('uri')]
+ }];
+ }
+
+ private async getUriList(dataTransfer: vscode.DataTransfer): Promise {
+ const urlList = await dataTransfer.get(Mimes.uriList)?.asString();
+ if (urlList) {
+ return UriList.from(urlList);
+ }
+
+ // Find file entries
+ const uris: vscode.Uri[] = [];
+ for (const [_, entry] of dataTransfer) {
+ const file = entry.asFile();
+ if (file?.uri) {
+ uris.push(file.uri);
+ }
+ }
+
+ return new UriList(uris.map(uri => ({ uri, str: uri.toString(true) })));
+ }
+
+ private async createUriListSnippet(docUri: vscode.Uri, uriList: UriList): Promise<{ readonly snippet: vscode.SnippetString; readonly label: string } | undefined> {
+ if (!uriList.entries.length) {
+ return;
+ }
+
+ const snippet = new vscode.SnippetString();
+ for (let i = 0; i < uriList.entries.length; i++) {
+ const uri = uriList.entries[i];
+ const relativePath = getRelativePath(getDocumentDir(docUri), uri.uri);
+ const urlText = relativePath ?? uri.str;
+
+ snippet.appendText(`url(${urlText})`);
+ if (i !== uriList.entries.length - 1) {
+ snippet.appendText(' ');
+ }
+ }
+
+ return {
+ snippet,
+ label: uriList.entries.length > 1
+ ? vscode.l10n.t('Insert url() Functions')
+ : vscode.l10n.t('Insert url() Function')
+ };
+ }
+
+ private pasteAsCssUrlByDefault(document: vscode.TextDocument, position: vscode.Position): boolean {
+ const regex = /url\(.+?\)/gi;
+ for (const match of Array.from(document.lineAt(position.line).text.matchAll(regex))) {
+ if (position.character > match.index && position.character < match.index + match[0].length) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+
+function getRelativePath(fromFile: vscode.Uri | undefined, toFile: vscode.Uri): string | undefined {
+ if (fromFile && fromFile.scheme === toFile.scheme && fromFile.authority === toFile.authority) {
+ if (toFile.scheme === Schemes.file) {
+ // On windows, we must use the native `path.relative` to generate the relative path
+ // so that drive-letters are resolved cast insensitively. However we then want to
+ // convert back to a posix path to insert in to the document
+ const relativePath = path.relative(fromFile.fsPath, toFile.fsPath);
+ return path.posix.normalize(relativePath.split(path.sep).join(path.posix.sep));
+ }
+
+ return path.posix.relative(fromFile.path, toFile.path);
+ }
+
+ return undefined;
+}
+
+export function registerDropOrPasteResourceSupport(selector: vscode.DocumentSelector): vscode.Disposable {
+ const provider = new DropOrPasteResourceProvider();
+
+ return vscode.Disposable.from(
+ vscode.languages.registerDocumentDropEditProvider(selector, provider, {
+ providedDropEditKinds: [provider.kind],
+ dropMimeTypes: [
+ Mimes.uriList,
+ 'files'
+ ]
+ }),
+ vscode.languages.registerDocumentPasteEditProvider(selector, provider, {
+ providedPasteEditKinds: [provider.kind],
+ pasteMimeTypes: [
+ Mimes.uriList,
+ 'files'
+ ]
+ })
+ );
+}
diff --git a/extensions/css-language-features/client/src/dropOrPaste/shared.ts b/extensions/css-language-features/client/src/dropOrPaste/shared.ts
new file mode 100644
index 00000000000..548bccfec69
--- /dev/null
+++ b/extensions/css-language-features/client/src/dropOrPaste/shared.ts
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as vscode from 'vscode';
+import { Utils } from 'vscode-uri';
+
+export const Schemes = Object.freeze({
+ file: 'file',
+ notebookCell: 'vscode-notebook-cell',
+ untitled: 'untitled',
+});
+
+export const Mimes = Object.freeze({
+ plain: 'text/plain',
+ uriList: 'text/uri-list',
+});
+
+
+export function getDocumentDir(uri: vscode.Uri): vscode.Uri | undefined {
+ const docUri = getParentDocumentUri(uri);
+ if (docUri.scheme === Schemes.untitled) {
+ return vscode.workspace.workspaceFolders?.[0]?.uri;
+ }
+ return Utils.dirname(docUri);
+}
+
+function getParentDocumentUri(uri: vscode.Uri): vscode.Uri {
+ if (uri.scheme === Schemes.notebookCell) {
+ // is notebook documents necessary?
+ for (const notebook of vscode.workspace.notebookDocuments) {
+ for (const cell of notebook.getCells()) {
+ if (cell.document.uri.toString() === uri.toString()) {
+ return notebook.uri;
+ }
+ }
+ }
+ }
+
+ return uri;
+}
diff --git a/extensions/css-language-features/client/src/dropOrPaste/uriList.ts b/extensions/css-language-features/client/src/dropOrPaste/uriList.ts
new file mode 100644
index 00000000000..ed20b1ee797
--- /dev/null
+++ b/extensions/css-language-features/client/src/dropOrPaste/uriList.ts
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as vscode from 'vscode';
+
+function splitUriList(str: string): string[] {
+ return str.split('\r\n');
+}
+
+function parseUriList(str: string): string[] {
+ return splitUriList(str)
+ .filter(value => !value.startsWith('#')) // Remove comments
+ .map(value => value.trim());
+}
+
+export class UriList {
+
+ static from(str: string): UriList {
+ return new UriList(coalesce(parseUriList(str).map(line => {
+ try {
+ return { uri: vscode.Uri.parse(line), str: line };
+ } catch {
+ // Uri parse failure
+ return undefined;
+ }
+ })));
+ }
+
+ constructor(
+ public readonly entries: ReadonlyArray<{ readonly uri: vscode.Uri; readonly str: string }>
+ ) { }
+}
+
+function coalesce(array: ReadonlyArray): T[] {
+ return array.filter(e => !!e);
+}
diff --git a/extensions/css-language-features/client/src/node/cssClientMain.ts b/extensions/css-language-features/client/src/node/cssClientMain.ts
index 802b58ab286..96926979b2a 100644
--- a/extensions/css-language-features/client/src/node/cssClientMain.ts
+++ b/extensions/css-language-features/client/src/node/cssClientMain.ts
@@ -3,12 +3,12 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { getNodeFSRequestService } from './nodeFs';
-import { ExtensionContext, extensions, l10n } from 'vscode';
-import { startClient, LanguageClientConstructor } from '../cssClient';
-import { ServerOptions, TransportKind, LanguageClientOptions, LanguageClient, BaseLanguageClient } from 'vscode-languageclient/node';
import { TextDecoder } from 'util';
-
+import { ExtensionContext, extensions, l10n } from 'vscode';
+import { BaseLanguageClient, LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'vscode-languageclient/node';
+import { LanguageClientConstructor, startClient } from '../cssClient';
+import { getNodeFSRequestService } from './nodeFs';
+import { registerDropOrPasteResourceSupport } from '../dropOrPaste/dropOrPasteResource';
let client: BaseLanguageClient | undefined;
@@ -37,6 +37,8 @@ export async function activate(context: ExtensionContext) {
process.env['VSCODE_L10N_BUNDLE_LOCATION'] = l10n.uri?.toString() ?? '';
client = await startClient(context, newLanguageClient, { fs: getNodeFSRequestService(), TextDecoder });
+
+ context.subscriptions.push(registerDropOrPasteResourceSupport({ language: 'css', scheme: '*' }));
}
export async function deactivate(): Promise {
@@ -45,3 +47,4 @@ export async function deactivate(): Promise {
client = undefined;
}
}
+
diff --git a/extensions/css-language-features/client/tsconfig.json b/extensions/css-language-features/client/tsconfig.json
index 573b24b4aa6..17bf7e962a8 100644
--- a/extensions/css-language-features/client/tsconfig.json
+++ b/extensions/css-language-features/client/tsconfig.json
@@ -1,10 +1,14 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
- "outDir": "./out"
+ "outDir": "./out",
+ "lib": [
+ "webworker"
+ ]
},
"include": [
"src/**/*",
- "../../../src/vscode-dts/vscode.d.ts"
+ "../../../src/vscode-dts/vscode.d.ts",
+ "../../../src/vscode-dts/vscode.proposed.documentPaste.d.ts"
]
}
diff --git a/extensions/css-language-features/package-lock.json b/extensions/css-language-features/package-lock.json
new file mode 100644
index 00000000000..e13184cae57
--- /dev/null
+++ b/extensions/css-language-features/package-lock.json
@@ -0,0 +1,135 @@
+{
+ "name": "css-language-features",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "css-language-features",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-languageclient": "10.0.0-next.8",
+ "vscode-uri": "^3.0.8"
+ },
+ "devDependencies": {
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "^1.77.0"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "9.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
+ "integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageclient": {
+ "version": "10.0.0-next.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.8.tgz",
+ "integrity": "sha512-D9inIHgqKayO9Tv0MeLb3XIL76yTuWmKdHqcGZKzjtQrMGJgASJDYWTapu+yAjEpDp0gmVOaCYyIlLB86ncDoQ==",
+ "dependencies": {
+ "minimatch": "^9.0.3",
+ "semver": "^7.6.0",
+ "vscode-languageserver-protocol": "3.17.6-next.6"
+ },
+ "engines": {
+ "vscode": "^1.89.0"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.6-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
+ "integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
+ "dependencies": {
+ "vscode-jsonrpc": "9.0.0-next.4",
+ "vscode-languageserver-types": "3.17.6-next.4"
+ }
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.6-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
+ "integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+}
diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json
index f4f6adfb7f4..802e2fbf113 100644
--- a/extensions/css-language-features/package.json
+++ b/extensions/css-language-features/package.json
@@ -23,11 +23,14 @@
"supported": true
}
},
+ "enabledApiProposals": [
+ "documentPaste"
+ ],
"scripts": {
"compile": "npx gulp compile-extension:css-language-features-client compile-extension:css-language-features-server",
"watch": "npx gulp watch-extension:css-language-features-client watch-extension:css-language-features-server",
"test": "node ../../node_modules/mocha/bin/mocha",
- "install-client-next": "yarn add vscode-languageclient@next"
+ "install-client-next": "npm install vscode-languageclient@next"
},
"categories": [
"Programming Languages"
@@ -994,7 +997,7 @@
]
},
"dependencies": {
- "vscode-languageclient": "^10.0.0-next.5",
+ "vscode-languageclient": "10.0.0-next.8",
"vscode-uri": "^3.0.8"
},
"devDependencies": {
diff --git a/extensions/css-language-features/schemas/package.schema.json b/extensions/css-language-features/schemas/package.schema.json
index 831149caa9e..6c4b91faa27 100644
--- a/extensions/css-language-features/schemas/package.schema.json
+++ b/extensions/css-language-features/schemas/package.schema.json
@@ -1,6 +1,5 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
- "title": "CSS contributions to package.json",
"type": "object",
"properties": {
"contributes": {
diff --git a/extensions/css-language-features/server/package-lock.json b/extensions/css-language-features/server/package-lock.json
new file mode 100644
index 00000000000..2f7cb932b0c
--- /dev/null
+++ b/extensions/css-language-features/server/package-lock.json
@@ -0,0 +1,111 @@
+{
+ "name": "vscode-css-languageserver",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "vscode-css-languageserver",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@vscode/l10n": "^0.0.18",
+ "vscode-css-languageservice": "^6.3.1",
+ "vscode-languageserver": "10.0.0-next.6",
+ "vscode-uri": "^3.0.8"
+ },
+ "devDependencies": {
+ "@types/mocha": "^9.1.1",
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@types/mocha": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
+ "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@vscode/l10n": {
+ "version": "0.0.18",
+ "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz",
+ "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/vscode-css-languageservice": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.1.tgz",
+ "integrity": "sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==",
+ "dependencies": {
+ "@vscode/l10n": "^0.0.18",
+ "vscode-languageserver-textdocument": "^1.0.12",
+ "vscode-languageserver-types": "3.17.5",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "9.0.0-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.4.tgz",
+ "integrity": "sha512-zSVIr58lJSMYKIsZ5P7GtBbv1eEx25eNyOf0NmEzxmn1GhUNJAVAb5hkA1poKUwj1FRMwN6CeyWxZypmr8SsQQ==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver": {
+ "version": "10.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.6.tgz",
+ "integrity": "sha512-0Lh1nhQfSxo5Ob+ayYO1QTIsDix2/Lc72Urm1KZrCFxK5zIFYaEh3QFeM9oZih4Rzs0ZkQPXXnoHtpvs5GT+Zw==",
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.17.6-next.6"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.6-next.6",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.6.tgz",
+ "integrity": "sha512-naxM9kc/phpl0kAFNVPejMUWUtzFXdPYY/BtQTYtfbBbHf8sceHOrKkmf6yynZRu1A4oFtRZNqV3wyFRTWqUHw==",
+ "dependencies": {
+ "vscode-jsonrpc": "9.0.0-next.4",
+ "vscode-languageserver-types": "3.17.6-next.4"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
+ "version": "3.17.6-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.4.tgz",
+ "integrity": "sha512-SeJTpH/S14EbxOAVaOUoGVqPToqpRTld5QO5Ghig3AlbFJTFF9Wu7srHMfa85L0SX1RYAuuCSFKJVVCxDIk1/Q=="
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="
+ }
+ }
+}
diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json
index 0f1750e800a..4d8b9bd41ac 100644
--- a/extensions/css-language-features/server/package.json
+++ b/extensions/css-language-features/server/package.json
@@ -11,8 +11,8 @@
"browser": "./dist/browser/cssServerMain",
"dependencies": {
"@vscode/l10n": "^0.0.18",
- "vscode-css-languageservice": "^6.2.14",
- "vscode-languageserver": "^10.0.0-next.3",
+ "vscode-css-languageservice": "^6.3.1",
+ "vscode-languageserver": "10.0.0-next.6",
"vscode-uri": "^3.0.8"
},
"devDependencies": {
@@ -22,10 +22,10 @@
"scripts": {
"compile": "gulp compile-extension:css-language-features-server",
"watch": "gulp watch-extension:css-language-features-server",
- "install-service-next": "yarn add vscode-css-languageservice@next",
- "install-service-local": "yarn link vscode-css-languageservice",
- "install-server-next": "yarn add vscode-languageserver@next",
- "install-server-local": "yarn link vscode-languageserver",
+ "install-service-next": "npm install vscode-css-languageservice@next",
+ "install-service-local": "npm link vscode-css-languageservice",
+ "install-server-next": "npm install vscode-languageserver@next",
+ "install-server-local": "npm install vscode-languageserver",
"test": "node ./test/index.js"
}
}
diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock
deleted file mode 100644
index 8d4c46d641e..00000000000
--- a/extensions/css-language-features/server/yarn.lock
+++ /dev/null
@@ -1,75 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@types/mocha@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
- integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@vscode/l10n@^0.0.18":
- version "0.0.18"
- resolved "https://registry.yarnpkg.com/@vscode/l10n/-/l10n-0.0.18.tgz#916d3a5e960dbab47c1c56f58a7cb5087b135c95"
- integrity sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-vscode-css-languageservice@^6.2.14:
- version "6.2.14"
- resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-6.2.14.tgz#d44fe75c03942d865a9c1a5ff5fb4e8dec1f89d0"
- integrity sha512-5UPQ9Y1sUTnuMyaMBpO7LrBkqjhEJb5eAwdUlDp+Uez8lry+Tspnk3+3p2qWS4LlNsr4p3v9WkZxUf1ltgFpgw==
- dependencies:
- "@vscode/l10n" "^0.0.18"
- vscode-languageserver-textdocument "^1.0.11"
- vscode-languageserver-types "3.17.5"
- vscode-uri "^3.0.8"
-
-vscode-jsonrpc@9.0.0-next.2:
- version "9.0.0-next.2"
- resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.2.tgz#29e9741c742c80329bba1c60ce38fd014651ba80"
- integrity sha512-meIaXAgChCHzWy45QGU8YpCNyqnZQ/sYeCj32OLDDbUYsCF7AvgpdXx3nnZn9yzr8ed0Od9bW+NGphEmXsqvIQ==
-
-vscode-languageserver-protocol@3.17.6-next.4:
- version "3.17.6-next.4"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.4.tgz#3c56f6eb588bb42fccc0ac54a0d5daf2d02f0a1b"
- integrity sha512-/2bleKBxZLyRObS4mkpaWlVI9xGiUqMVmh/ztZ2vL4uP2XyIpraT45JBpn9AtXr0alqKJPKLuKr+/qcYULvm/w==
- dependencies:
- vscode-jsonrpc "9.0.0-next.2"
- vscode-languageserver-types "3.17.6-next.3"
-
-vscode-languageserver-textdocument@^1.0.11:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#0822a000e7d4dc083312580d7575fe9e3ba2e2bf"
- integrity sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==
-
-vscode-languageserver-types@3.17.5:
- version "3.17.5"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a"
- integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==
-
-vscode-languageserver-types@3.17.6-next.3:
- version "3.17.6-next.3"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.3.tgz#f71d6c57f18d921346cfe0c227aabd72eb8cd2f0"
- integrity sha512-l5kNFXFRQGuzriXpuBqFpRmkf6f6A4VoU3h95OsVkqIOoi1k7KbwSo600cIdsKSJWrPg/+vX+QMPcMw1oI7ItA==
-
-vscode-languageserver@^10.0.0-next.3:
- version "10.0.0-next.3"
- resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-10.0.0-next.3.tgz#a63c5ea9fab1be93d7732ab0fdc18c9b37956e07"
- integrity sha512-4x1qHImf6ePji4+8PX43lnBCBfBNdi2jneGX2k5FswJhx/cxaYYmusShmmtO/clyL1iurxJacrQoXfw9+ikhvg==
- dependencies:
- vscode-languageserver-protocol "3.17.6-next.4"
-
-vscode-uri@^3.0.8:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f"
- integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock
deleted file mode 100644
index 25a22d07ca6..00000000000
--- a/extensions/css-language-features/yarn.lock
+++ /dev/null
@@ -1,85 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
- dependencies:
- balanced-match "^1.0.0"
-
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
-
-minimatch@^9.0.3:
- version "9.0.3"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
- integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
- dependencies:
- brace-expansion "^2.0.1"
-
-semver@^7.6.0:
- version "7.6.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
- integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
- dependencies:
- lru-cache "^6.0.0"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-vscode-jsonrpc@9.0.0-next.2:
- version "9.0.0-next.2"
- resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.2.tgz#29e9741c742c80329bba1c60ce38fd014651ba80"
- integrity sha512-meIaXAgChCHzWy45QGU8YpCNyqnZQ/sYeCj32OLDDbUYsCF7AvgpdXx3nnZn9yzr8ed0Od9bW+NGphEmXsqvIQ==
-
-vscode-languageclient@^10.0.0-next.5:
- version "10.0.0-next.5"
- resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-10.0.0-next.5.tgz#7431d88255a5fd99e9423659ac484b1f968200f3"
- integrity sha512-JIf1WE7fvV0RElFM062bAummI433vcxuFwqoYAp+1zTVhta/jznxkTz1zs3Hbj2tiDfclf0TZ0qCxflAP1mY2Q==
- dependencies:
- minimatch "^9.0.3"
- semver "^7.6.0"
- vscode-languageserver-protocol "3.17.6-next.4"
-
-vscode-languageserver-protocol@3.17.6-next.4:
- version "3.17.6-next.4"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.4.tgz#3c56f6eb588bb42fccc0ac54a0d5daf2d02f0a1b"
- integrity sha512-/2bleKBxZLyRObS4mkpaWlVI9xGiUqMVmh/ztZ2vL4uP2XyIpraT45JBpn9AtXr0alqKJPKLuKr+/qcYULvm/w==
- dependencies:
- vscode-jsonrpc "9.0.0-next.2"
- vscode-languageserver-types "3.17.6-next.3"
-
-vscode-languageserver-types@3.17.6-next.3:
- version "3.17.6-next.3"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.3.tgz#f71d6c57f18d921346cfe0c227aabd72eb8cd2f0"
- integrity sha512-l5kNFXFRQGuzriXpuBqFpRmkf6f6A4VoU3h95OsVkqIOoi1k7KbwSo600cIdsKSJWrPg/+vX+QMPcMw1oI7ItA==
-
-vscode-uri@^3.0.8:
- version "3.0.8"
- resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz"
- integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
diff --git a/extensions/css/yarn.lock b/extensions/css/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/css/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/dart/cgmanifest.json b/extensions/dart/cgmanifest.json
index df4e4f0aae9..da493cafa70 100644
--- a/extensions/dart/cgmanifest.json
+++ b/extensions/dart/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "dart-lang/dart-syntax-highlight",
"repositoryUrl": "https://github.com/dart-lang/dart-syntax-highlight",
- "commitHash": "bb8f7eebf5a1028e70dbebcf35cfef738dddc7fe"
+ "commitHash": "e8b053f9834cb44db0f49ac4a4567177bd943dbf"
}
},
"licenseDetail": [
diff --git a/extensions/dart/syntaxes/dart.tmLanguage.json b/extensions/dart/syntaxes/dart.tmLanguage.json
index 5a4a9393bc7..32ea3f5b0c3 100644
--- a/extensions/dart/syntaxes/dart.tmLanguage.json
+++ b/extensions/dart/syntaxes/dart.tmLanguage.json
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
- "version": "https://github.com/dart-lang/dart-syntax-highlight/commit/bb8f7eebf5a1028e70dbebcf35cfef738dddc7fe",
+ "version": "https://github.com/dart-lang/dart-syntax-highlight/commit/e8b053f9834cb44db0f49ac4a4567177bd943dbf",
"name": "Dart",
"scopeName": "source.dart",
"patterns": [
@@ -212,7 +212,7 @@
},
{
"name": "constant.numeric.dart",
- "match": "(?=12.0.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/jsonc-parser": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz",
+ "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg=="
+ },
+ "node_modules/queue": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+ "dependencies": {
+ "inherits": "~2.0.3"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz",
+ "integrity": "sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A=="
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.3",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
+ "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
+ },
+ "node_modules/vscode-uri": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz",
+ "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A=="
+ }
+ }
+}
diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json
index 1783bc2ceaf..a390a86fc2e 100644
--- a/extensions/emmet/package.json
+++ b/extensions/emmet/package.json
@@ -476,7 +476,7 @@
"scripts": {
"watch": "gulp watch-extension:emmet",
"compile": "gulp compile-extension:emmet",
- "deps": "yarn add @vscode/emmet-helper"
+ "deps": "npm install @vscode/emmet-helper"
},
"devDependencies": {
"@types/node": "20.x"
diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock
deleted file mode 100644
index b75842fe4a4..00000000000
--- a/extensions/emmet/yarn.lock
+++ /dev/null
@@ -1,124 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@emmetio/abbreviation@^2.3.3":
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz#ed2b88fe37b972292d6026c7c540aaf887cecb6e"
- integrity sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==
- dependencies:
- "@emmetio/scanner" "^1.0.4"
-
-"@emmetio/css-abbreviation@^2.1.8":
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz#b785313486eba6cb7eb623ad39378c4e1063dc00"
- integrity sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==
- dependencies:
- "@emmetio/scanner" "^1.0.4"
-
-"@emmetio/css-parser@ramya-rao-a/css-parser#vscode":
- version "0.4.0"
- resolved "https://codeload.github.com/ramya-rao-a/css-parser/tar.gz/370c480ac103bd17c7bcfb34bf5d577dc40d3660"
- dependencies:
- "@emmetio/stream-reader" "^2.2.0"
- "@emmetio/stream-reader-utils" "^0.1.0"
-
-"@emmetio/html-matcher@^0.3.3":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@emmetio/html-matcher/-/html-matcher-0.3.3.tgz#0bbdadc0882e185950f03737dc6dbf8f7bd90728"
- integrity sha1-C72twIguGFlQ8Dc33G2/j3vZByg=
- dependencies:
- "@emmetio/stream-reader" "^2.0.0"
- "@emmetio/stream-reader-utils" "^0.1.0"
-
-"@emmetio/math-expression@^1.0.5":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@emmetio/math-expression/-/math-expression-1.0.5.tgz#d0cc52ed453a107bc9b19c5d71d1390d3aecbe48"
- integrity sha512-qf5SXD/ViS04rXSeDg9CRGM10xLC9dVaKIbMHrrwxYr5LNB/C0rOfokhGSBwnVQKcidLmdRJeNWH1V1tppZ84Q==
- dependencies:
- "@emmetio/scanner" "^1.0.4"
-
-"@emmetio/scanner@^1.0.4":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@emmetio/scanner/-/scanner-1.0.4.tgz#e9cdc67194fd91f8b7eb141014be4f2d086c15f1"
- integrity sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==
-
-"@emmetio/stream-reader-utils@^0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz#244cb02c77ec2e74f78a9bd318218abc9c500a61"
- integrity sha1-JEywLHfsLnT3ipvTGCGKvJxQCmE=
-
-"@emmetio/stream-reader@^2.0.0", "@emmetio/stream-reader@^2.2.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz#46cffea119a0a003312a21c2d9b5628cb5fcd442"
- integrity sha1-Rs/+oRmgoAMxKiHC2bVijLX81EI=
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@vscode/emmet-helper@^2.8.8":
- version "2.9.3"
- resolved "https://registry.yarnpkg.com/@vscode/emmet-helper/-/emmet-helper-2.9.3.tgz#8a8b228981fcf2d9346fdca77b9ad5a31dc09dba"
- integrity sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==
- dependencies:
- emmet "^2.4.3"
- jsonc-parser "^2.3.0"
- vscode-languageserver-textdocument "^1.0.1"
- vscode-languageserver-types "^3.15.1"
- vscode-uri "^2.1.2"
-
-emmet@^2.4.3:
- version "2.4.7"
- resolved "https://registry.yarnpkg.com/emmet/-/emmet-2.4.7.tgz#19893c34e6274af14ea3c5729101e3c4ed18f01e"
- integrity sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==
- dependencies:
- "@emmetio/abbreviation" "^2.3.3"
- "@emmetio/css-abbreviation" "^2.1.8"
-
-image-size@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750"
- integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==
- dependencies:
- queue "6.0.2"
-
-inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-jsonc-parser@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342"
- integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==
-
-queue@6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65"
- integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==
- dependencies:
- inherits "~2.0.3"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-vscode-languageserver-textdocument@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz#879f2649bfa5a6e07bc8b392c23ede2dfbf43eff"
- integrity sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A==
-
-vscode-languageserver-types@^3.15.1:
- version "3.17.3"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64"
- integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==
-
-vscode-uri@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
- integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
diff --git a/extensions/extension-editing/.vscodeignore b/extensions/extension-editing/.vscodeignore
index de8e6dc5913..8d4da76b9cb 100644
--- a/extensions/extension-editing/.vscodeignore
+++ b/extensions/extension-editing/.vscodeignore
@@ -4,4 +4,4 @@ tsconfig.json
out/**
extension.webpack.config.js
extension-browser.webpack.config.js
-yarn.lock
+package-lock.json
diff --git a/extensions/extension-editing/package-lock.json b/extensions/extension-editing/package-lock.json
new file mode 100644
index 00000000000..3fa0c35e2d0
--- /dev/null
+++ b/extensions/extension-editing/package-lock.json
@@ -0,0 +1,110 @@
+{
+ "name": "extension-editing",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "extension-editing",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "markdown-it": "^12.3.2",
+ "parse5": "^3.0.2"
+ },
+ "devDependencies": {
+ "@types/markdown-it": "0.0.2",
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "^1.4.0"
+ }
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-0.0.2.tgz",
+ "integrity": "sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA= sha512-A2seE+zJYSjGHy7L/v0EN/xRfgv2A60TuXOwI8tt5aZxF4UeoYIkM2jERnNH8w4VFr7oFEm0lElGOao7fZgygQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
+ },
+ "node_modules/linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
+ },
+ "node_modules/parse5": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz",
+ "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA= sha512-yQW05f47bKFJa0WdnyzP7vh7+B+w8jhVsFBBiaEbIfNDSSt8GADBhcQgsdYxatQ7rVs1nU9cmsYXURGWBH3Siw==",
+ "dependencies": {
+ "@types/node": "^6.0.46"
+ }
+ },
+ "node_modules/parse5/node_modules/@types/node": {
+ "version": "6.0.78",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.78.tgz",
+ "integrity": "sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg=="
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ }
+ }
+}
diff --git a/extensions/extension-editing/yarn.lock b/extensions/extension-editing/yarn.lock
deleted file mode 100644
index 00fad585fd1..00000000000
--- a/extensions/extension-editing/yarn.lock
+++ /dev/null
@@ -1,75 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@types/markdown-it@0.0.2":
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.2.tgz#5d9ad19e6e6508cdd2f2596df86fd0aade598660"
- integrity sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA=
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/node@^6.0.46":
- version "6.0.78"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.78.tgz#5d4a3f579c1524e01ee21bf474e6fba09198f470"
- integrity sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg==
-
-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==
-
-entities@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
- integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
-
-jsonc-parser@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
- integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
-
-linkify-it@^3.0.1:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e"
- integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==
- dependencies:
- uc.micro "^1.0.1"
-
-markdown-it@^12.3.2:
- version "12.3.2"
- resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90"
- integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==
- dependencies:
- argparse "^2.0.1"
- entities "~2.1.0"
- linkify-it "^3.0.1"
- mdurl "^1.0.1"
- uc.micro "^1.0.5"
-
-mdurl@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
- integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
-
-parse5@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.2.tgz#05eff57f0ef4577fb144a79f8b9a967a6cc44510"
- integrity sha1-Be/1fw70V3+xRKefi5qWemzERRA=
- dependencies:
- "@types/node" "^6.0.46"
-
-uc.micro@^1.0.1, uc.micro@^1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
- integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
diff --git a/extensions/fsharp/cgmanifest.json b/extensions/fsharp/cgmanifest.json
index 524b3fa0d46..ba75f69541e 100644
--- a/extensions/fsharp/cgmanifest.json
+++ b/extensions/fsharp/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "ionide/ionide-fsgrammar",
"repositoryUrl": "https://github.com/ionide/ionide-fsgrammar",
- "commitHash": "7d029a46f17637228b2ee85dd02e511c3e8039b3"
+ "commitHash": "b38420f8569aa662b4862beb407a02e527e866c1"
}
},
"license": "MIT",
diff --git a/extensions/fsharp/syntaxes/fsharp.tmLanguage.json b/extensions/fsharp/syntaxes/fsharp.tmLanguage.json
index 5063f1c5210..9594d1b6ce8 100644
--- a/extensions/fsharp/syntaxes/fsharp.tmLanguage.json
+++ b/extensions/fsharp/syntaxes/fsharp.tmLanguage.json
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
- "version": "https://github.com/ionide/ionide-fsgrammar/commit/7d029a46f17637228b2ee85dd02e511c3e8039b3",
+ "version": "https://github.com/ionide/ionide-fsgrammar/commit/b38420f8569aa662b4862beb407a02e527e866c1",
"name": "fsharp",
"scopeName": "source.fsharp",
"patterns": [
@@ -617,7 +617,7 @@
},
{
"name": "constant.numeric.float.fsharp",
- "match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"
+ "match": "\\b-?[0-9][0-9_]*((\\.(?!\\.)([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"
},
{
"name": "constant.numeric.integer.nativeint.fsharp",
@@ -635,7 +635,7 @@
},
"abstract_definition": {
"name": "abstract.definition.fsharp",
- "begin": "\\b(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(<)?",
+ "begin": "\\b(static)?\\s+(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(<)?",
"end": "\\s*(with)\\b|=|$",
"beginCaptures": {
"1": {
@@ -645,6 +645,9 @@
"name": "keyword.fsharp"
},
"3": {
+ "name": "keyword.fsharp"
+ },
+ "4": {
"name": "support.function.attribute.fsharp"
},
"5": {
@@ -838,7 +841,7 @@
"name": "keyword.symbol.fsharp"
}
},
- "end": "(\\)\\s*(([?[:alpha:]0-9'`^._ ]+))+)",
+ "end": "(\\)\\s*(([?[:alpha:]0-9'`^._ ]+))*)",
"endCaptures": {
"1": {
"name": "keyword.symbol.fsharp"
@@ -933,7 +936,7 @@
"patterns": [
{
"name": "binding.fsharp",
- "begin": "\\b(let mutable|static let mutable|static let|let inline|let|and|member val|static member inline|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
+ "begin": "\\b(let mutable|static let mutable|static let|let inline|let|and|member val|member inline|static member inline|static member val|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
"end": "\\s*((with\\b)|(=|\\n+=|(?<=\\=)))",
"beginCaptures": {
"1": {
@@ -1008,7 +1011,7 @@
},
{
"name": "binding.fsharp",
- "begin": "\\b(static val mutable|val mutable|val)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",
+ "begin": "\\b(static val mutable|val mutable|val inline|val)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",
"end": "\\n$",
"beginCaptures": {
"1": {
@@ -1130,7 +1133,7 @@
},
{
"name": "keyword.symbol.fsharp",
- "match": "(&&&|\\|\\|\\||\\^\\^\\^|~~~|~\\+|~\\-|<<<|>>>|\\|>|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|&|%|{|}|\\||_|\\.\\.|\\,|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\(|\\)|\\<\\<)"
+ "match": "[.?]*(&&&|\\|\\|\\||\\^\\^\\^|~~~|~\\+|~\\-|<<<|>>>|\\|>|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|&|%|{|}|\\||_|\\.\\.|\\,|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\(|\\)|\\<\\<)[.?]*"
}
]
},
diff --git a/extensions/fsharp/yarn.lock b/extensions/fsharp/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/fsharp/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/git-base/package-lock.json b/extensions/git-base/package-lock.json
new file mode 100644
index 00000000000..f4b29739ca6
--- /dev/null
+++ b/extensions/git-base/package-lock.json
@@ -0,0 +1,34 @@
+{
+ "name": "git-base",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "git-base",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "0.10.x"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ }
+ }
+}
diff --git a/extensions/git-base/yarn.lock b/extensions/git-base/yarn.lock
deleted file mode 100644
index 1f4b6c2e8b4..00000000000
--- a/extensions/git-base/yarn.lock
+++ /dev/null
@@ -1,15 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
diff --git a/extensions/git/.vscodeignore b/extensions/git/.vscodeignore
index 94d2dc921e0..1e6130d5c7d 100644
--- a/extensions/git/.vscodeignore
+++ b/extensions/git/.vscodeignore
@@ -4,4 +4,4 @@ out/**
tsconfig.json
build/**
extension.webpack.config.js
-yarn.lock
+package-lock.json
diff --git a/extensions/git/package-lock.json b/extensions/git/package-lock.json
new file mode 100644
index 00000000000..ef76d2719da
--- /dev/null
+++ b/extensions/git/package-lock.json
@@ -0,0 +1,419 @@
+{
+ "name": "git",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "git",
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@joaomoreno/unique-names-generator": "^5.1.0",
+ "@vscode/extension-telemetry": "^0.9.0",
+ "@vscode/iconv-lite-umd": "0.7.0",
+ "byline": "^5.0.0",
+ "file-type": "16.5.4",
+ "jschardet": "3.1.3",
+ "picomatch": "2.3.1",
+ "vscode-uri": "^2.0.0",
+ "which": "4.0.0"
+ },
+ "devDependencies": {
+ "@types/byline": "4.2.31",
+ "@types/mocha": "^9.1.1",
+ "@types/node": "20.x",
+ "@types/picomatch": "2.3.0",
+ "@types/which": "3.0.0"
+ },
+ "engines": {
+ "vscode": "^1.5.0"
+ }
+ },
+ "node_modules/@joaomoreno/unique-names-generator": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@joaomoreno/unique-names-generator/-/unique-names-generator-5.1.0.tgz",
+ "integrity": "sha512-KEVThTpUIKPb7dBKJ9mJ3WYnD1mJZZsEinCSp9CVEPlWbDagurFv1RKRjvvujrLfJzsGc0HkBHS9W8Bughao4A==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@microsoft/1ds-core-js": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.0.3.tgz",
+ "integrity": "sha512-FrxNLVAPsAvD7+l63TlNS/Kodvpct2WulpDSn1dI4Xuy0kF4E2H867kHdwL/iY1Bj3zA3FSy/jvE4+OcDws7ug==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/1ds-post-js": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.0.3.tgz",
+ "integrity": "sha512-uewvmUtXKd7ttypiKQGdYI6i7UUpPkOznLayzIFrJ4r2xnG6jhPjpKRncHFXPQcM4XSWO3yf5PQ3xAbPq9t7ZQ==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "4.0.3",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-channel-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.4.tgz",
+ "integrity": "sha512-6TlfExmErQ8Y+/ChbkyWl+jyt4wg3T6p7lwXDsUCB0LgZmlEWMaCUS0YlT73JCWmE8j7vxW8yUm0lgsgmHns3A==",
+ "dependencies": {
+ "@microsoft/applicationinsights-common": "3.0.4",
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-common": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.4.tgz",
+ "integrity": "sha512-r5gWaw/K9+tKfuo2GtDiDiKASgOkPOCrKW+wZzFvuR06uuwvWjbVQ6yW/YbnfuhRF5M65ksUiMi0eCMwEOGq7Q==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.4.tgz",
+ "integrity": "sha512-anxy5kEkqBmVoEqJiJzaaXXA0wzqZi9U4zGd05xFJ04lWckP8dG3zyT3+GGdg7rDelqLTNGxndeYoFmDv63u1g==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-web-basic": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.4.tgz",
+ "integrity": "sha512-KfoxPlLlf0JT12ADb23C5iGye/yFouoMgHEKULxkSQcYY9SsW/8rVrqqvoYKAL+u215CZU2A8Kc8sR3ehEaPCQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-channel-js": "3.0.4",
+ "@microsoft/applicationinsights-common": "3.0.4",
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
+ },
+ "node_modules/@types/byline": {
+ "version": "4.2.31",
+ "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.31.tgz",
+ "integrity": "sha1-DmH8ucA+BH0hxEllVMcRYperYM0= sha512-TC6Ljn7tALesQMQyTNoMWoM44SNvWtCLkJDrA/TxcwE5ILkWt4zi5wbEokqiDk42S75eykAY1onPImWDybOkmQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/mocha": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
+ "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==",
+ "dev": true
+ },
+ "node_modules/@types/which": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz",
+ "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==",
+ "dev": true
+ },
+ "node_modules/@vscode/extension-telemetry": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.9.0.tgz",
+ "integrity": "sha512-37RxGHXrs3GoXPgCUKQhghEu0gxs8j27RLjQwwtSf4WhPdJKz8UrqMYzpsXlliQ05zURYmtdGZst9C6+hfWXaQ==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "^4.0.3",
+ "@microsoft/1ds-post-js": "^4.0.3",
+ "@microsoft/applicationinsights-web-basic": "^3.0.4"
+ },
+ "engines": {
+ "vscode": "^1.75.0"
+ }
+ },
+ "node_modules/@vscode/iconv-lite-umd": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz",
+ "integrity": "sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg=="
+ },
+ "node_modules/byline": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
+ "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "16.5.4",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
+ "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
+ "dependencies": {
+ "readable-web-to-node-stream": "^3.0.0",
+ "strtok3": "^6.2.4",
+ "token-types": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/isexe": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
+ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/jschardet": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-3.1.3.tgz",
+ "integrity": "sha512-Q1PKVMK/uu+yjdlobgWIYkUOCR1SqUmW9m/eUJNNj4zI2N12i25v8fYpVf+zCakQeaTdBdhnZTFbVIAVZIVVOg==",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/peek-readable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
+ "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readable-web-to-node-stream": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
+ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
+ "dependencies": {
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/strtok3": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz",
+ "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/token-types": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.0.tgz",
+ "integrity": "sha512-P0rrp4wUpefLncNamWIef62J0v0kQR/GfDVji9WKY7GDCWy5YbVSrKUTam07iWPZQGy0zWNOfstYTykMmPNR7w==",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/vscode-uri": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.0.0.tgz",
+ "integrity": "sha512-lWXWofDSYD8r/TIyu64MdwB4FaSirQ608PP/TzUyslyOeHGwQ0eTHUZeJrK1ILOmwUHaJtV693m2JoUYroUDpw=="
+ },
+ "node_modules/which": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
+ "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
+ }
+ }
+ }
+}
diff --git a/extensions/git/package.json b/extensions/git/package.json
index 4fc372e21f7..57e332a8d78 100644
--- a/extensions/git/package.json
+++ b/extensions/git/package.json
@@ -16,14 +16,15 @@
"contribMergeEditorMenus",
"contribMultiDiffEditorMenus",
"contribDiffEditorGutterToolBarMenus",
- "contribSourceControlHistoryItemGroupMenu",
"contribSourceControlHistoryItemMenu",
+ "contribSourceControlHistoryTitleMenu",
"contribSourceControlInputBoxMenu",
"contribSourceControlTitleMenu",
"contribViewsWelcome",
"diffCommand",
"editSessionIdentityProvider",
"quickDiffProvider",
+ "quickInputButtonLocation",
"quickPickSortByLabel",
"scmActionButton",
"scmHistoryProvider",
@@ -451,6 +452,12 @@
"category": "Git",
"enablement": "!operationInProgress"
},
+ {
+ "command": "git.checkoutRefDetached",
+ "title": "%command.checkoutRefDetached%",
+ "category": "Git",
+ "enablement": "!operationInProgress"
+ },
{
"command": "git.branch",
"title": "%command.branch%",
@@ -526,6 +533,7 @@
{
"command": "git.fetchAll",
"title": "%command.fetchAll%",
+ "icon": "$(git-fetch)",
"category": "Git",
"enablement": "!operationInProgress"
},
@@ -616,6 +624,12 @@
"category": "Git",
"enablement": "!operationInProgress"
},
+ {
+ "command": "git.cherryPickRef",
+ "title": "%command.cherryPickRef%",
+ "category": "Git",
+ "enablement": "!operationInProgress"
+ },
{
"command": "git.addRemote",
"title": "%command.addRemote%",
@@ -891,6 +905,16 @@
"icon": "$(diff-multiple)",
"category": "Git",
"enablement": "!operationInProgress"
+ },
+ {
+ "command": "git.copyCommitId",
+ "title": "%command.timelineCopyCommitId%",
+ "category": "Git"
+ },
+ {
+ "command": "git.copyCommitMessage",
+ "title": "%command.timelineCopyCommitMessage%",
+ "category": "Git"
}
],
"continueEditSession": [
@@ -1426,6 +1450,22 @@
{
"command": "git.pushRef",
"when": "false"
+ },
+ {
+ "command": "git.copyCommitId",
+ "when": "false"
+ },
+ {
+ "command": "git.copyCommitMessage",
+ "when": "false"
+ },
+ {
+ "command": "git.checkoutRefDetached",
+ "when": "false"
+ },
+ {
+ "command": "git.cherryPickRef",
+ "when": "false"
}
],
"scm/title": [
@@ -1915,100 +1955,43 @@
"group": "1_modification@3"
}
],
- "scm/incomingChanges": [
+ "scm/history/title": [
{
- "command": "git.fetchRef",
- "group": "navigation",
- "when": "scmProvider == git"
- },
- {
- "command": "git.pullRef",
- "group": "navigation",
- "when": "scmProvider == git"
- }
- ],
- "scm/incomingChanges/context": [
- {
- "command": "git.fetchRef",
- "group": "1_modification@1",
- "when": "scmProvider == git"
- },
- {
- "command": "git.pullRef",
- "group": "1_modification@2",
+ "command": "git.fetchAll",
+ "group": "navigation@999",
"when": "scmProvider == git"
}
],
- "scm/incomingChanges/allChanges/context": [
+ "scm/historyItem/context": [
{
- "command": "git.viewAllChanges",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "inline@1"
- },
- {
- "command": "git.viewAllChanges",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "1_view@1"
- }
- ],
- "scm/incomingChanges/historyItem/context": [
- {
- "command": "git.viewCommit",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "inline@1"
+ "command": "git.createTag",
+ "when": "scmProvider == git",
+ "group": "1_create@1"
},
{
- "command": "git.viewCommit",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "1_view@1"
- }
- ],
- "scm/outgoingChanges": [
- {
- "command": "git.pushRef",
- "group": "navigation",
- "when": "scmProvider == git && scmHistoryItemGroupHasRemote"
+ "command": "git.branch",
+ "when": "scmProvider == git",
+ "group": "1_create@2"
},
{
- "command": "git.publish",
- "group": "navigation",
- "when": "scmProvider == git && !scmHistoryItemGroupHasRemote"
- }
- ],
- "scm/outgoingChanges/context": [
- {
- "command": "git.pushRef",
- "when": "scmProvider == git && scmHistoryItemGroupHasRemote",
- "group": "1_modification@1"
+ "command": "git.cherryPickRef",
+ "when": "scmProvider == git",
+ "group": "2_modify@1"
},
{
- "command": "git.publish",
- "when": "scmProvider == git && !scmHistoryItemGroupHasRemote",
- "group": "1_modification@1"
- }
- ],
- "scm/outgoingChanges/allChanges/context": [
- {
- "command": "git.viewAllChanges",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "inline@1"
+ "command": "git.checkoutRefDetached",
+ "when": "scmProvider == git",
+ "group": "2_modify@2"
},
{
- "command": "git.viewAllChanges",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "1_view@1"
- }
- ],
- "scm/outgoingChanges/historyItem/context": [
- {
- "command": "git.viewCommit",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "inline@1"
+ "command": "git.copyCommitId",
+ "when": "scmProvider == git && !listMultiSelection",
+ "group": "9_copy@1"
},
{
- "command": "git.viewCommit",
- "when": "scmProvider == git && scmHistoryItemFileCount != 0 && config.multiDiffEditor.experimental.enabled",
- "group": "1_view@1"
+ "command": "git.copyCommitMessage",
+ "when": "scmProvider == git && !listMultiSelection",
+ "group": "9_copy@2"
}
],
"editor/title": [
@@ -3401,7 +3384,7 @@
"@vscode/iconv-lite-umd": "0.7.0",
"byline": "^5.0.0",
"file-type": "16.5.4",
- "jschardet": "3.1.2",
+ "jschardet": "3.1.3",
"picomatch": "2.3.1",
"vscode-uri": "^2.0.0",
"which": "4.0.0"
diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json
index c2f7c3d6cfb..bad361bcea7 100644
--- a/extensions/git/package.nls.json
+++ b/extensions/git/package.nls.json
@@ -62,15 +62,17 @@
"command.undoCommit": "Undo Last Commit",
"command.checkout": "Checkout to...",
"command.checkoutDetached": "Checkout to (Detached)...",
+ "command.checkoutRefDetached": "Checkout (Detached)",
"command.branch": "Create Branch...",
"command.branchFrom": "Create Branch From...",
"command.deleteBranch": "Delete Branch...",
"command.renameBranch": "Rename Branch...",
"command.cherryPick": "Cherry Pick...",
+ "command.cherryPickRef": "Cherry Pick",
"command.merge": "Merge...",
"command.mergeAbort": "Abort Merge",
"command.rebase": "Rebase Branch...",
- "command.createTag": "Create Tag",
+ "command.createTag": "Create Tag...",
"command.deleteTag": "Delete Tag...",
"command.deleteRemoteTag": "Delete Remote Tag...",
"command.fetch": "Fetch",
diff --git a/extensions/git/src/api/api1.ts b/extensions/git/src/api/api1.ts
index f94ecbab7b0..63139af2447 100644
--- a/extensions/git/src/api/api1.ts
+++ b/extensions/git/src/api/api1.ts
@@ -201,8 +201,8 @@ export class ApiRepository implements Repository {
return this.repository.getMergeBase(ref1, ref2);
}
- tag(name: string, upstream: string): Promise {
- return this.repository.tag(name, upstream);
+ tag(name: string, message: string, ref?: string | undefined): Promise {
+ return this.repository.tag({ name, message, ref });
}
deleteTag(name: string): Promise {
@@ -322,6 +322,10 @@ export class ApiImpl implements API {
}
async openRepository(root: Uri): Promise {
+ if (root.scheme !== 'file') {
+ return null;
+ }
+
await this._model.openRepository(root.fsPath);
return this.getRepository(root) || null;
}
diff --git a/extensions/git/src/api/git.d.ts b/extensions/git/src/api/git.d.ts
index ce27e914244..17dd192ed95 100644
--- a/extensions/git/src/api/git.d.ts
+++ b/extensions/git/src/api/git.d.ts
@@ -146,6 +146,8 @@ export interface LogOptions {
readonly shortStats?: boolean;
readonly author?: string;
readonly refNames?: string[];
+ readonly maxParents?: number;
+ readonly skip?: number;
}
export interface CommitOptions {
diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts
index 00045c14ea3..38c1db541bb 100644
--- a/extensions/git/src/commands.ts
+++ b/extensions/git/src/commands.ts
@@ -5,7 +5,7 @@
import * as os from 'os';
import * as path from 'path';
-import { Command, commands, Disposable, LineChange, MessageOptions, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder, TimelineItem, env, Selection, TextDocumentContentProvider, InputBoxValidationSeverity, TabInputText, TabInputTextMerge, QuickPickItemKind, TextDocument, LogOutputChannel, l10n, Memento, UIKind, QuickInputButton, ThemeIcon, SourceControlHistoryItem, SourceControl, InputBoxValidationMessage, Tab, TabInputNotebook } from 'vscode';
+import { Command, commands, Disposable, LineChange, MessageOptions, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder, TimelineItem, env, Selection, TextDocumentContentProvider, InputBoxValidationSeverity, TabInputText, TabInputTextMerge, QuickPickItemKind, TextDocument, LogOutputChannel, l10n, Memento, UIKind, QuickInputButton, ThemeIcon, SourceControlHistoryItem, SourceControl, InputBoxValidationMessage, Tab, TabInputNotebook, QuickInputButtonLocation, SourceControlHistoryItemRef } from 'vscode';
import TelemetryReporter from '@vscode/extension-telemetry';
import { uniqueNamesGenerator, adjectives, animals, colors, NumberDictionary } from '@joaomoreno/unique-names-generator';
import { ForcePushMode, GitErrorCodes, Ref, RefType, Status, CommitOptions, RemoteSourcePublisher, Remote } from './api/git';
@@ -525,9 +525,15 @@ class CheckoutItemsProcessor extends RefItemsProcessor {
// Button(s)
if (item.refRemote) {
const matchingRemote = this.repository.remotes.find((remote) => remote.name === item.refRemote);
- const remoteUrl = matchingRemote?.pushUrl ?? matchingRemote?.fetchUrl;
- if (remoteUrl) {
- item.buttons = this.buttons.get(item.refRemote);
+ const buttons = [];
+ if (matchingRemote?.pushUrl) {
+ buttons.push(...this.buttons.get(matchingRemote.pushUrl) ?? []);
+ }
+ if (matchingRemote?.fetchUrl && matchingRemote.fetchUrl !== matchingRemote.pushUrl) {
+ buttons.push(...this.buttons.get(matchingRemote.fetchUrl) ?? []);
+ }
+ if (buttons.length) {
+ item.buttons = buttons;
}
} else {
item.buttons = this.defaultButtons;
@@ -1339,14 +1345,14 @@ export class CommandCenter {
@command('git.stage')
async stage(...resourceStates: SourceControlResourceState[]): Promise {
- this.logger.debug(`git.stage ${resourceStates.length} `);
+ this.logger.debug(`[CommandCenter][stage] git.stage ${resourceStates.length} `);
resourceStates = resourceStates.filter(s => !!s);
if (resourceStates.length === 0 || (resourceStates[0] && !(resourceStates[0].resourceUri instanceof Uri))) {
const resource = this.getSCMResource();
- this.logger.debug(`git.stage.getSCMResource ${resource ? resource.resourceUri.toString() : null} `);
+ this.logger.debug(`[CommandCenter][stage] git.stage.getSCMResource ${resource ? resource.resourceUri.toString() : null} `);
if (!resource) {
return;
@@ -1389,7 +1395,7 @@ export class CommandCenter {
const untracked = selection.filter(s => s.resourceGroupType === ResourceGroupType.Untracked);
const scmResources = [...workingTree, ...untracked, ...resolved, ...unresolved];
- this.logger.debug(`git.stage.scmResources ${scmResources.length} `);
+ this.logger.debug(`[CommandCenter][stage] git.stage.scmResources ${scmResources.length} `);
if (!scmResources.length) {
return;
}
@@ -2063,7 +2069,7 @@ export class CommandCenter {
promptToSaveFilesBeforeCommit = 'never';
}
- const enableSmartCommit = config.get('enableSmartCommit') === true;
+ let enableSmartCommit = config.get('enableSmartCommit') === true;
const enableCommitSigning = config.get('enableCommitSigning') === true;
let noStagedChanges = repository.indexGroup.resourceStates.length === 0;
let noUnstagedChanges = repository.workingTreeGroup.resourceStates.length === 0;
@@ -2103,38 +2109,39 @@ export class CommandCenter {
}
}
- if (!opts.amend) {
- // no changes, and the user has not configured to commit all in this case
- if (!noUnstagedChanges && noStagedChanges && !enableSmartCommit && !opts.all) {
- const suggestSmartCommit = config.get('suggestSmartCommit') === true;
-
- if (!suggestSmartCommit) {
- return;
- }
+ // no changes, and the user has not configured to commit all in this case
+ if (!noUnstagedChanges && noStagedChanges && !enableSmartCommit && !opts.all && !opts.amend) {
+ const suggestSmartCommit = config.get('suggestSmartCommit') === true;
- // prompt the user if we want to commit all or not
- const message = l10n.t('There are no staged changes to commit.\n\nWould you like to stage all your changes and commit them directly?');
- const yes = l10n.t('Yes');
- const always = l10n.t('Always');
- const never = l10n.t('Never');
- const pick = await window.showWarningMessage(message, { modal: true }, yes, always, never);
-
- if (pick === always) {
- config.update('enableSmartCommit', true, true);
- } else if (pick === never) {
- config.update('suggestSmartCommit', false, true);
- return;
- } else if (pick !== yes) {
- return; // do not commit on cancel
- }
+ if (!suggestSmartCommit) {
+ return;
}
- if (opts.all === undefined) {
- opts = { ...opts, all: noStagedChanges };
- } else if (!opts.all && noStagedChanges) {
- opts = { ...opts, all: true };
+ // prompt the user if we want to commit all or not
+ const message = l10n.t('There are no staged changes to commit.\n\nWould you like to stage all your changes and commit them directly?');
+ const yes = l10n.t('Yes');
+ const always = l10n.t('Always');
+ const never = l10n.t('Never');
+ const pick = await window.showWarningMessage(message, { modal: true }, yes, always, never);
+
+ if (pick === always) {
+ enableSmartCommit = true;
+ config.update('enableSmartCommit', true, true);
+ } else if (pick === never) {
+ config.update('suggestSmartCommit', false, true);
+ return;
+ } else if (pick === yes) {
+ enableSmartCommit = true;
+ } else {
+ // Cancel
+ return;
}
}
+
+ // smart commit
+ if (enableSmartCommit && !opts.all) {
+ opts = { ...opts, all: noStagedChanges };
+ }
}
// enable signing of commits if configured
@@ -2494,6 +2501,14 @@ export class CommandCenter {
return this._checkout(repository, { detached: true, treeish });
}
+ @command('git.checkoutRefDetached', { repository: true })
+ async checkoutRefDetached(repository: Repository, historyItem?: SourceControlHistoryItemRef): Promise {
+ if (!historyItem) {
+ return false;
+ }
+ return this._checkout(repository, { detached: true, treeish: historyItem.id });
+ }
+
private async _checkout(repository: Repository, opts?: { detached?: boolean; treeish?: string }): Promise {
if (typeof opts?.treeish === 'string') {
await repository.checkout(opts?.treeish, opts);
@@ -2519,9 +2534,26 @@ export class CommandCenter {
: l10n.t('Select a branch or tag to checkout');
quickPick.show();
-
picks.push(... await createCheckoutItems(repository, opts?.detached));
- quickPick.items = [...commands, ...picks];
+
+ const setQuickPickItems = () => {
+ switch (true) {
+ case quickPick.value === '':
+ quickPick.items = [...commands, ...picks];
+ break;
+ case commands.length === 0:
+ quickPick.items = picks;
+ break;
+ case picks.length === 0:
+ quickPick.items = commands;
+ break;
+ default:
+ quickPick.items = [...picks, { label: '', kind: QuickPickItemKind.Separator }, ...commands];
+ break;
+ }
+ };
+
+ setQuickPickItems();
quickPick.busy = false;
const choice = await new Promise(c => {
@@ -2536,22 +2568,7 @@ export class CommandCenter {
c(undefined);
})));
- disposables.push(quickPick.onDidChangeValue(value => {
- switch (true) {
- case value === '':
- quickPick.items = [...commands, ...picks];
- break;
- case commands.length === 0:
- quickPick.items = picks;
- break;
- case picks.length === 0:
- quickPick.items = commands;
- break;
- default:
- quickPick.items = [...picks, { label: '', kind: QuickPickItemKind.Separator }, ...commands];
- break;
- }
- }));
+ disposables.push(quickPick.onDidChangeValue(() => setQuickPickItems()));
});
dispose(disposables);
@@ -2601,8 +2618,8 @@ export class CommandCenter {
}
@command('git.branch', { repository: true })
- async branch(repository: Repository): Promise {
- await this._branch(repository);
+ async branch(repository: Repository, historyItem?: SourceControlHistoryItem): Promise {
+ await this._branch(repository, undefined, false, historyItem?.id);
}
@command('git.branchFrom', { repository: true })
@@ -2700,6 +2717,7 @@ export class CommandCenter {
{
iconPath: new ThemeIcon('refresh'),
tooltip: l10n.t('Regenerate Branch Name'),
+ location: QuickInputButtonLocation.Inline
}
] : [];
@@ -2728,8 +2746,8 @@ export class CommandCenter {
return sanitizeBranchName(branchName || '', branchWhitespaceChar);
}
- private async _branch(repository: Repository, defaultName?: string, from = false): Promise {
- let target = 'HEAD';
+ private async _branch(repository: Repository, defaultName?: string, from = false, target?: string): Promise {
+ target = target ?? 'HEAD';
if (from) {
const getRefPicks = async () => {
@@ -2897,7 +2915,7 @@ export class CommandCenter {
}
@command('git.createTag', { repository: true })
- async createTag(repository: Repository): Promise {
+ async createTag(repository: Repository, historyItem?: SourceControlHistoryItem): Promise {
const inputTagName = await window.showInputBox({
placeHolder: l10n.t('Tag name'),
prompt: l10n.t('Please provide a tag name'),
@@ -2915,7 +2933,7 @@ export class CommandCenter {
});
const name = inputTagName.replace(/^\.|\/\.|\.\.|~|\^|:|\/$|\.lock$|\.lock\/|\\|\*|\s|^\s*$|\.$/g, '-');
- await repository.tag(name, inputMessage);
+ await repository.tag({ name, message: inputMessage, ref: historyItem?.id });
}
@command('git.deleteTag', { repository: true })
@@ -3048,7 +3066,8 @@ export class CommandCenter {
}
@command('git.fetchRef', { repository: true })
- async fetchRef(repository: Repository, ref: string): Promise {
+ async fetchRef(repository: Repository, ref?: string): Promise {
+ ref = ref ?? repository?.historyProvider.currentHistoryItemRemoteRef?.id;
if (!repository || !ref) {
return;
}
@@ -3120,7 +3139,8 @@ export class CommandCenter {
}
@command('git.pullRef', { repository: true })
- async pullRef(repository: Repository, ref: string): Promise {
+ async pullRef(repository: Repository, ref?: string): Promise {
+ ref = ref ?? repository?.historyProvider.currentHistoryItemRemoteRef?.id;
if (!repository || !ref) {
return;
}
@@ -3267,8 +3287,8 @@ export class CommandCenter {
}
@command('git.pushRef', { repository: true })
- async pushRef(repository: Repository, ref: string): Promise {
- if (!repository || !ref) {
+ async pushRef(repository: Repository): Promise {
+ if (!repository) {
return;
}
@@ -3290,6 +3310,14 @@ export class CommandCenter {
await repository.cherryPick(hash);
}
+ @command('git.cherryPickRef', { repository: true })
+ async cherryPickRef(repository: Repository, historyItem?: SourceControlHistoryItem): Promise {
+ if (!historyItem) {
+ return;
+ }
+ await repository.cherryPick(historyItem.id);
+ }
+
@command('git.pushTo', { repository: true })
async pushTo(repository: Repository, remote?: string, refspec?: string, setUpstream?: boolean): Promise {
await this._push(repository, { pushType: PushType.PushTo, pushTo: { remote: remote, refspec: refspec, setUpstream: setUpstream } });
@@ -4186,17 +4214,36 @@ export class CommandCenter {
}
@command('git.viewCommit', { repository: true })
- async viewCommit(repository: Repository, historyItem: SourceControlHistoryItem): Promise {
- if (!repository || !historyItem) {
+ async viewCommit(repository: Repository, historyItem1: SourceControlHistoryItem, historyItem2?: SourceControlHistoryItem): Promise {
+ if (!repository || !historyItem1) {
return;
}
- const commit = await repository.getCommit(historyItem.id);
- const title = `${historyItem.id.substring(0, 8)} - ${commit.message}`;
+ if (historyItem2) {
+ const mergeBase = await repository.getMergeBase(historyItem1.id, historyItem2.id);
+ if (!mergeBase || (mergeBase !== historyItem1.id && mergeBase !== historyItem2.id)) {
+ return;
+ }
+ }
+
+ let title: string | undefined;
+ let historyItemParentId: string | undefined;
+
+ // If historyItem2 is not provided, we are viewing a single commit. If historyItem2 is
+ // provided, we are viewing a range and we have to include both start and end commits.
+ // TODO@lszomoru - handle the case when historyItem2 is the first commit in the repository
+ if (!historyItem2) {
+ const commit = await repository.getCommit(historyItem1.id);
+ title = `${historyItem1.id.substring(0, 8)} - ${commit.message}`;
+ historyItemParentId = historyItem1.parentIds.length > 0 ? historyItem1.parentIds[0] : `${historyItem1.id}^`;
+ } else {
+ title = l10n.t('All Changes ({0} ↔ {1})', historyItem2.id.substring(0, 8), historyItem1.id.substring(0, 8));
+ historyItemParentId = historyItem2.parentIds.length > 0 ? historyItem2.parentIds[0] : `${historyItem2.id}^`;
+ }
- const multiDiffSourceUri = toGitUri(Uri.file(repository.root), historyItem.id, { scheme: 'git-commit' });
+ const multiDiffSourceUri = toGitUri(Uri.file(repository.root), `${historyItemParentId}..${historyItem1.id}`, { scheme: 'git-commit', });
- await this._viewChanges(repository, historyItem, multiDiffSourceUri, title);
+ await this._viewChanges(repository, historyItem1.id, historyItemParentId, multiDiffSourceUri, title);
}
@command('git.viewAllChanges', { repository: true })
@@ -4211,20 +4258,32 @@ export class CommandCenter {
const multiDiffSourceUri = toGitUri(Uri.file(repository.root), historyItem.id, { scheme: 'git-changes' });
- await this._viewChanges(repository, historyItem, multiDiffSourceUri, title);
+ await this._viewChanges(repository, modifiedShortRef, originalShortRef, multiDiffSourceUri, title);
}
- async _viewChanges(repository: Repository, historyItem: SourceControlHistoryItem, multiDiffSourceUri: Uri, title: string): Promise {
- const historyItemParentId = historyItem.parentIds.length > 0 ? historyItem.parentIds[0] : `${historyItem.id}^`;
- const changes = await repository.diffBetween(historyItemParentId, historyItem.id);
+ async _viewChanges(repository: Repository, historyItemId: string, historyItemParentId: string, multiDiffSourceUri: Uri, title: string): Promise {
+ const changes = await repository.diffBetween(historyItemParentId, historyItemId);
+ const resources = changes.map(c => toMultiFileDiffEditorUris(c, historyItemParentId, historyItemId));
+
+ await commands.executeCommand('_workbench.openMultiDiffEditor', { multiDiffSourceUri, title, resources });
+ }
- if (changes.length === 0) {
+ @command('git.copyCommitId', { repository: true })
+ async copyCommitId(repository: Repository, historyItem: SourceControlHistoryItem): Promise {
+ if (!repository || !historyItem) {
return;
}
- const resources = changes.map(c => toMultiFileDiffEditorUris(c, historyItemParentId, historyItem.id));
+ env.clipboard.writeText(historyItem.id);
+ }
- await commands.executeCommand('_workbench.openMultiDiffEditor', { multiDiffSourceUri, title, resources });
+ @command('git.copyCommitMessage', { repository: true })
+ async copyCommitMessage(repository: Repository, historyItem: SourceControlHistoryItem): Promise {
+ if (!repository || !historyItem) {
+ return;
+ }
+
+ env.clipboard.writeText(historyItem.message);
}
private createCommand(id: string, key: string, method: Function, options: ScmCommandOptions): (...args: any[]) => any {
@@ -4404,10 +4463,10 @@ export class CommandCenter {
private getSCMResource(uri?: Uri): Resource | undefined {
uri = uri ? uri : (window.activeTextEditor && window.activeTextEditor.document.uri);
- this.logger.debug(`git.getSCMResource.uri ${uri && uri.toString()}`);
+ this.logger.debug(`[CommandCenter][getSCMResource] git.getSCMResource.uri: ${uri && uri.toString()}`);
for (const r of this.model.repositories.map(r => r.root)) {
- this.logger.debug(`repo root ${r}`);
+ this.logger.debug(`[CommandCenter][getSCMResource] repo root: ${r}`);
}
if (!uri) {
diff --git a/extensions/git/src/decorationProvider.ts b/extensions/git/src/decorationProvider.ts
index ace68c22524..548f3aa2a1c 100644
--- a/extensions/git/src/decorationProvider.ts
+++ b/extensions/git/src/decorationProvider.ts
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { window, workspace, Uri, Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, ThemeColor, l10n } from 'vscode';
+import { window, workspace, Uri, Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, ThemeColor, l10n, SourceControlHistoryItemRef } from 'vscode';
import * as path from 'path';
import { Repository, GitResourceGroup } from './repository';
import { Model } from './model';
@@ -11,6 +11,16 @@ import { debounce } from './decorators';
import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource, combinedDisposable, runAndSubscribeEvent } from './util';
import { Change, GitErrorCodes, Status } from './api/git';
+function equalSourceControlHistoryItemRefs(ref1?: SourceControlHistoryItemRef, ref2?: SourceControlHistoryItemRef): boolean {
+ if (ref1 === ref2) {
+ return true;
+ }
+
+ return ref1?.id === ref2?.id &&
+ ref1?.name === ref2?.name &&
+ ref1?.revision === ref2?.revision;
+}
+
class GitIgnoreDecorationProvider implements FileDecorationProvider {
private static Decoration: FileDecoration = { color: new ThemeColor('gitDecoration.ignoredResourceForeground') };
@@ -158,22 +168,37 @@ class GitIncomingChangesFileDecorationProvider implements FileDecorationProvider
private readonly _onDidChangeDecorations = new EventEmitter();
readonly onDidChangeFileDecorations: Event = this._onDidChangeDecorations.event;
- private decorations = new Map();
+ private _currentHistoryItemRef: SourceControlHistoryItemRef | undefined;
+ private _currentHistoryItemRemoteRef: SourceControlHistoryItemRef | undefined;
+
+ private _decorations = new Map();
private readonly disposables: Disposable[] = [];
constructor(private readonly repository: Repository) {
this.disposables.push(
window.registerFileDecorationProvider(this),
- runAndSubscribeEvent(repository.historyProvider.onDidChangeCurrentHistoryItemGroup, () => this.onDidChangeCurrentHistoryItemGroup())
+ runAndSubscribeEvent(repository.historyProvider.onDidChangeCurrentHistoryItemRefs, () => this.onDidChangeCurrentHistoryItemRefs())
);
}
- private async onDidChangeCurrentHistoryItemGroup(): Promise {
- const newDecorations = new Map();
- await this.collectIncomingChangesFileDecorations(newDecorations);
- const uris = new Set([...this.decorations.keys()].concat([...newDecorations.keys()]));
+ private async onDidChangeCurrentHistoryItemRefs(): Promise {
+ const historyProvider = this.repository.historyProvider;
+ const currentHistoryItemRef = historyProvider.currentHistoryItemRef;
+ const currentHistoryItemRemoteRef = historyProvider.currentHistoryItemRemoteRef;
+
+ if (equalSourceControlHistoryItemRefs(this._currentHistoryItemRef, currentHistoryItemRef) &&
+ equalSourceControlHistoryItemRefs(this._currentHistoryItemRemoteRef, currentHistoryItemRemoteRef)) {
+ return;
+ }
+
+ const decorations = new Map();
+ await this.collectIncomingChangesFileDecorations(decorations);
+ const uris = new Set([...this._decorations.keys()].concat([...decorations.keys()]));
+
+ this._decorations = decorations;
+ this._currentHistoryItemRef = currentHistoryItemRef;
+ this._currentHistoryItemRemoteRef = currentHistoryItemRemoteRef;
- this.decorations = newDecorations;
this._onDidChangeDecorations.fire([...uris.values()].map(value => Uri.parse(value, true)));
}
@@ -218,18 +243,19 @@ class GitIncomingChangesFileDecorationProvider implements FileDecorationProvider
private async getIncomingChanges(): Promise {
try {
const historyProvider = this.repository.historyProvider;
- const currentHistoryItemGroup = historyProvider.currentHistoryItemGroup;
+ const currentHistoryItemRef = historyProvider.currentHistoryItemRef;
+ const currentHistoryItemRemoteRef = historyProvider.currentHistoryItemRemoteRef;
- if (!currentHistoryItemGroup?.remote) {
+ if (!currentHistoryItemRef || !currentHistoryItemRemoteRef) {
return [];
}
- const ancestor = await historyProvider.resolveHistoryItemGroupCommonAncestor(currentHistoryItemGroup.id, currentHistoryItemGroup.remote.id);
+ const ancestor = await historyProvider.resolveHistoryItemRefsCommonAncestor([currentHistoryItemRef.id, currentHistoryItemRemoteRef.id]);
if (!ancestor) {
return [];
}
- const changes = await this.repository.diffBetween(ancestor.id, currentHistoryItemGroup.remote.id);
+ const changes = await this.repository.diffBetween(ancestor, currentHistoryItemRemoteRef.id);
return changes;
} catch (err) {
return [];
@@ -237,7 +263,7 @@ class GitIncomingChangesFileDecorationProvider implements FileDecorationProvider
}
provideFileDecoration(uri: Uri): FileDecoration | undefined {
- return this.decorations.get(uri.toString());
+ return this._decorations.get(uri.toString());
}
dispose(): void {
diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts
index 0e2b37af5b7..4d28b74d14c 100644
--- a/extensions/git/src/git.ts
+++ b/extensions/git/src/git.ts
@@ -491,7 +491,6 @@ export class Git {
const repoUri = Uri.file(repositoryRootPath);
const pathUri = Uri.file(pathInsidePossibleRepository);
if (repoUri.authority.length !== 0 && pathUri.authority.length === 0) {
- // eslint-disable-next-line local/code-no-look-behind-regex
const match = /(?<=^\/?)([a-zA-Z])(?=:\/)/.exec(pathUri.path);
if (match !== null) {
const [, letter] = match;
@@ -1062,6 +1061,7 @@ export interface PullOptions {
}
export class Repository {
+ private _isUsingRefTable = false;
constructor(
private _git: Git,
@@ -1113,7 +1113,7 @@ export class Repository {
return result.stdout.trim();
}
catch (err) {
- this.logger.warn(`git config failed: ${err.message}`);
+ this.logger.warn(`[Git][config] git config failed: ${err.message}`);
return '';
}
}
@@ -1137,6 +1137,7 @@ export class Repository {
}
async log(options?: LogOptions): Promise {
+ const spawnOptions: SpawnOptions = {};
const args = ['log', `--format=${COMMIT_FORMAT}`, '-z'];
if (options?.shortStats) {
@@ -1165,17 +1166,30 @@ export class Repository {
args.push(`--author="${options.author}"`);
}
+ if (typeof options?.maxParents === 'number') {
+ args.push(`--max-parents=${options.maxParents}`);
+ }
+
+ if (typeof options?.skip === 'number') {
+ args.push(`--skip=${options.skip}`);
+ }
+
if (options?.refNames) {
args.push('--topo-order');
args.push('--decorate=full');
- args.push(...options.refNames);
+
+ // In order to avoid hitting the command line limit due to large number of reference
+ // names (can happen when the `all` filter is used in the Source Control Graph view),
+ // we are passing the reference names via stdin.
+ spawnOptions.input = options.refNames.join('\n');
+ args.push('--stdin');
}
if (options?.path) {
args.push('--', options.path);
}
- const result = await this.exec(args);
+ const result = await this.exec(args, spawnOptions);
if (result.exitCode) {
// An empty repo
return [];
@@ -1502,6 +1516,21 @@ export class Repository {
return parseGitChanges(this.repositoryRoot, gitResult.stdout);
}
+ async diffTrees(treeish1: string, treeish2?: string): Promise {
+ const args = ['diff-tree', '-r', '--name-status', '-z', '--diff-filter=ADMR', treeish1];
+
+ if (treeish2) {
+ args.push(treeish2);
+ }
+
+ const gitResult = await this.exec(args);
+ if (gitResult.exitCode) {
+ return [];
+ }
+
+ return parseGitChanges(this.repositoryRoot, gitResult.stdout);
+ }
+
async getMergeBase(ref1: string, ref2: string, ...refs: string[]): Promise {
try {
const args = ['merge-base'];
@@ -1781,13 +1810,17 @@ export class Repository {
await this.exec(['merge', '--abort']);
}
- async tag(name: string, message?: string): Promise {
+ async tag(options: { name: string; message?: string; ref?: string }): Promise {
let args = ['tag'];
- if (message) {
- args = [...args, '-a', name, '-m', message];
+ if (options.message) {
+ args = [...args, '-a', options.name, '-m', options.message];
} else {
- args = [...args, name];
+ args = [...args, options.name];
+ }
+
+ if (options.ref) {
+ args.push(options.ref);
}
await this.exec(args);
@@ -2311,13 +2344,25 @@ export class Repository {
}
async getHEAD(): Promise[ {
- try {
- // Attempt to parse the HEAD file
- const result = await this.getHEADFS();
- return result;
- }
- catch (err) {
- this.logger.warn(err.message);
+ if (!this._isUsingRefTable) {
+ try {
+ // Attempt to parse the HEAD file
+ const result = await this.getHEADFS();
+
+ // Git 2.45 adds support for a new reference storage backend called "reftable", promising
+ // faster lookups, reads, and writes for repositories with any number of references. For
+ // backwards compatibility the `.git/HEAD` file contains `ref: refs/heads/.invalid`. More
+ // details are available at https://git-scm.com/docs/reftable
+ if (result.name === '.invalid') {
+ this._isUsingRefTable = true;
+ this.logger.warn(`[Git][getHEAD] Failed to parse HEAD file: Repository is using reftable format.`);
+ } else {
+ return result;
+ }
+ }
+ catch (err) {
+ this.logger.warn(`[Git][getHEAD] Failed to parse HEAD file: ${err.message}`);
+ }
}
try {
@@ -2465,11 +2510,11 @@ export class Repository {
remotes.push(...await this.getRemotesFS());
if (remotes.length === 0) {
- this.logger.info('No remotes found in the git config file.');
+ this.logger.info('[Git][getRemotes] No remotes found in the git config file');
}
}
catch (err) {
- this.logger.warn(`getRemotes() - ${err.message}`);
+ this.logger.warn(`[Git][getRemotes] Error: ${err.message}`);
// Fallback to using git to get the remotes
remotes.push(...await this.getRemotesGit());
@@ -2605,13 +2650,13 @@ export class Repository {
return branch;
}
- this.logger.warn(`No such branch: ${name}.`);
+ this.logger.warn(`[Git][getBranch] No such branch: ${name}`);
return Promise.reject(new Error(`No such branch: ${name}.`));
}
async getDefaultBranch(): Promise {
const result = await this.exec(['symbolic-ref', '--short', 'refs/remotes/origin/HEAD']);
- if (!result.stdout) {
+ if (!result.stdout || result.stderr) {
throw new Error('No default branch');
}
@@ -2670,7 +2715,7 @@ export class Repository {
}
async getCommit(ref: string): Promise {
- const result = await this.exec(['show', '-s', `--format=${COMMIT_FORMAT}`, '-z', ref]);
+ const result = await this.exec(['show', '-s', '--decorate=full', '--shortstat', `--format=${COMMIT_FORMAT}`, '-z', ref]);
const commits = parseGitCommits(result.stdout);
if (commits.length === 0) {
return Promise.reject('bad commit format');
@@ -2678,30 +2723,12 @@ export class Repository {
return commits[0];
}
- async getCommitFiles(ref: string): Promise {
- const result = await this.exec(['diff-tree', '--no-commit-id', '--name-only', '-r', ref]);
- return result.stdout.split('\n').filter(l => !!l);
- }
-
- async getCommitCount(range: string): Promise<{ ahead: number; behind: number }> {
- const args = ['rev-list', '--count', '--left-right', range];
-
- if (isWindows) {
- args.splice(0, 0, '-c', 'core.longpaths=true');
- }
-
- const result = await this.exec(args);
- const [ahead, behind] = result.stdout.trim().split('\t');
-
- return { ahead: Number(ahead) || 0, behind: Number(behind) || 0 };
- }
-
async revParse(ref: string): Promise {
try {
const result = await fs.readFile(path.join(this.dotGit.path, ref), 'utf8');
return result.trim();
} catch (err) {
- this.logger.warn(err.message);
+ this.logger.warn(`[Git][revParse] Unable to read file: ${err.message}`);
}
try {
diff --git a/extensions/git/src/historyProvider.ts b/extensions/git/src/historyProvider.ts
index 22cbe9c493d..80d57a1beac 100644
--- a/extensions/git/src/historyProvider.ts
+++ b/extensions/git/src/historyProvider.ts
@@ -4,193 +4,256 @@
*--------------------------------------------------------------------------------------------*/
-import { Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, SourceControlHistoryItem, SourceControlHistoryItemChange, SourceControlHistoryItemGroup, SourceControlHistoryOptions, SourceControlHistoryProvider, ThemeIcon, Uri, window, LogOutputChannel, SourceControlHistoryItemLabel } from 'vscode';
+import { Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, SourceControlHistoryItem, SourceControlHistoryItemChange, SourceControlHistoryOptions, SourceControlHistoryProvider, ThemeIcon, Uri, window, LogOutputChannel, SourceControlHistoryItemRef, l10n, SourceControlHistoryItemRefsChangeEvent } from 'vscode';
import { Repository, Resource } from './repository';
-import { IDisposable, dispose, filterEvent } from './util';
+import { IDisposable, deltaHistoryItemRefs, dispose, filterEvent } from './util';
import { toGitUri } from './uri';
-import { Branch, RefType, UpstreamRef } from './api/git';
+import { Branch, LogOptions, Ref, RefType } from './api/git';
import { emojify, ensureEmojis } from './emoji';
-import { Operation } from './operation';
import { Commit } from './git';
+import { OperationKind, OperationResult } from './operation';
-export class GitHistoryProvider implements SourceControlHistoryProvider, FileDecorationProvider, IDisposable {
-
- private readonly _onDidChangeCurrentHistoryItemGroup = new EventEmitter();
- readonly onDidChangeCurrentHistoryItemGroup: Event = this._onDidChangeCurrentHistoryItemGroup.event;
+function toSourceControlHistoryItemRef(ref: Ref): SourceControlHistoryItemRef {
+ switch (ref.type) {
+ case RefType.RemoteHead:
+ return {
+ id: `refs/remotes/${ref.name}`,
+ name: ref.name ?? '',
+ description: ref.commit ? l10n.t('Remote branch at {0}', ref.commit.substring(0, 8)) : undefined,
+ revision: ref.commit,
+ icon: new ThemeIcon('cloud'),
+ category: l10n.t('remote branches')
+ };
+ case RefType.Tag:
+ return {
+ id: `refs/tags/${ref.name}`,
+ name: ref.name ?? '',
+ description: ref.commit ? l10n.t('Tag at {0}', ref.commit.substring(0, 8)) : undefined,
+ revision: ref.commit,
+ icon: new ThemeIcon('tag'),
+ category: l10n.t('tags')
+ };
+ default:
+ return {
+ id: `refs/heads/${ref.name}`,
+ name: ref.name ?? '',
+ description: ref.commit ? ref.commit.substring(0, 8) : undefined,
+ revision: ref.commit,
+ icon: new ThemeIcon('git-branch'),
+ category: l10n.t('branches')
+ };
+ }
+}
+export class GitHistoryProvider implements SourceControlHistoryProvider, FileDecorationProvider, IDisposable {
private readonly _onDidChangeDecorations = new EventEmitter();
readonly onDidChangeFileDecorations: Event = this._onDidChangeDecorations.event;
- private _HEAD: Branch | undefined;
- private _HEADMergeBase: Branch | undefined;
+ private _currentHistoryItemRef: SourceControlHistoryItemRef | undefined;
+ get currentHistoryItemRef(): SourceControlHistoryItemRef | undefined { return this._currentHistoryItemRef; }
- private _currentHistoryItemGroup: SourceControlHistoryItemGroup | undefined;
- get currentHistoryItemGroup(): SourceControlHistoryItemGroup | undefined { return this._currentHistoryItemGroup; }
- set currentHistoryItemGroup(value: SourceControlHistoryItemGroup | undefined) {
- this._currentHistoryItemGroup = value;
- this._onDidChangeCurrentHistoryItemGroup.fire();
- }
+ private _currentHistoryItemRemoteRef: SourceControlHistoryItemRef | undefined;
+ get currentHistoryItemRemoteRef(): SourceControlHistoryItemRef | undefined { return this._currentHistoryItemRemoteRef; }
+
+ private _currentHistoryItemBaseRef: SourceControlHistoryItemRef | undefined;
+ get currentHistoryItemBaseRef(): SourceControlHistoryItemRef | undefined { return this._currentHistoryItemBaseRef; }
+
+ private readonly _onDidChangeCurrentHistoryItemRefs = new EventEmitter();
+ readonly onDidChangeCurrentHistoryItemRefs: Event = this._onDidChangeCurrentHistoryItemRefs.event;
+
+ private readonly _onDidChangeHistoryItemRefs = new EventEmitter();
+ readonly onDidChangeHistoryItemRefs: Event = this._onDidChangeHistoryItemRefs.event;
+
+ private _HEAD: Branch | undefined;
+ private historyItemRefs: SourceControlHistoryItemRef[] = [];
private historyItemDecorations = new Map();
- private historyItemLabels = new Map([
- ['HEAD -> refs/heads/', 'target'],
- ['refs/heads/', 'git-branch'],
- ['refs/remotes/', 'cloud'],
- ['refs/tags/', 'tag']
- ]);
private disposables: Disposable[] = [];
constructor(protected readonly repository: Repository, private readonly logger: LogOutputChannel) {
- this.disposables.push(repository.onDidRunGitStatus(() => this.onDidRunGitStatus(), this));
- this.disposables.push(filterEvent(repository.onDidRunOperation, e => e.operation === Operation.Refresh)(() => this.onDidRunGitStatus(true), this));
+ const onDidRunWriteOperation = filterEvent(repository.onDidRunOperation, e => !e.operation.readOnly);
+ this.disposables.push(onDidRunWriteOperation(this.onDidRunWriteOperation, this));
this.disposables.push(window.registerFileDecorationProvider(this));
}
- private async onDidRunGitStatus(force = false): Promise {
- this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD:', JSON.stringify(this._HEAD));
- this.logger.trace('GitHistoryProvider:onDidRunGitStatus - repository.HEAD:', JSON.stringify(this.repository.HEAD));
-
- // Get the merge base of the current history item group
- const mergeBase = await this.resolveHEADMergeBase();
-
- // Check if HEAD has changed
- if (!force &&
- this._HEAD?.name === this.repository.HEAD?.name &&
- this._HEAD?.commit === this.repository.HEAD?.commit &&
- this._HEAD?.upstream?.name === this.repository.HEAD?.upstream?.name &&
- this._HEAD?.upstream?.remote === this.repository.HEAD?.upstream?.remote &&
- this._HEAD?.upstream?.commit === this.repository.HEAD?.upstream?.commit &&
- this._HEADMergeBase?.name === mergeBase?.name &&
- this._HEADMergeBase?.remote === mergeBase?.remote &&
- this._HEADMergeBase?.commit === mergeBase?.commit) {
- this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD has not changed');
+ private async onDidRunWriteOperation(result: OperationResult): Promise {
+ if (!this.repository.HEAD) {
+ this.logger.trace('[GitHistoryProvider][onDidRunWriteOperation] repository.HEAD is undefined');
+ this._currentHistoryItemRef = this._currentHistoryItemRemoteRef = this._currentHistoryItemBaseRef = undefined;
+ this._onDidChangeCurrentHistoryItemRefs.fire();
+
return;
}
- this._HEAD = this.repository.HEAD;
- this._HEADMergeBase = mergeBase;
-
- // Check if HEAD does not support incoming/outgoing (detached commit, tag)
- if (!this.repository.HEAD?.name || !this.repository.HEAD?.commit || this.repository.HEAD.type === RefType.Tag) {
- this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD does not support incoming/outgoing');
-
- this.currentHistoryItemGroup = undefined;
- return;
+ let historyItemRefId = '';
+ let historyItemRefName = '';
+
+ switch (this.repository.HEAD.type) {
+ case RefType.Head: {
+ if (this.repository.HEAD.name !== undefined) {
+ // Branch
+ historyItemRefId = `refs/heads/${this.repository.HEAD.name}`;
+ historyItemRefName = this.repository.HEAD.name;
+
+ // Remote
+ this._currentHistoryItemRemoteRef = this.repository.HEAD.upstream ? {
+ id: `refs/remotes/${this.repository.HEAD.upstream.remote}/${this.repository.HEAD.upstream.name}`,
+ name: `${this.repository.HEAD.upstream.remote}/${this.repository.HEAD.upstream.name}`,
+ revision: this.repository.HEAD.upstream.commit,
+ icon: new ThemeIcon('cloud')
+ } : undefined;
+
+ // Base - compute only if the branch has changed
+ if (this._HEAD?.name !== this.repository.HEAD.name) {
+ const mergeBase = await this.resolveHEADMergeBase();
+
+ this._currentHistoryItemBaseRef = mergeBase &&
+ (mergeBase.remote !== this.repository.HEAD.upstream?.remote ||
+ mergeBase.name !== this.repository.HEAD.upstream?.name) ? {
+ id: `refs/remotes/${mergeBase.remote}/${mergeBase.name}`,
+ name: `${mergeBase.remote}/${mergeBase.name}`,
+ revision: mergeBase.commit,
+ icon: new ThemeIcon('cloud')
+ } : undefined;
+ }
+ } else {
+ // Detached commit
+ historyItemRefId = this.repository.HEAD.commit ?? '';
+ historyItemRefName = this.repository.HEAD.commit ?? '';
+
+ this._currentHistoryItemRemoteRef = undefined;
+ this._currentHistoryItemBaseRef = undefined;
+ }
+ break;
+ }
+ case RefType.Tag: {
+ // Tag
+ historyItemRefId = `refs/tags/${this.repository.HEAD.name}`;
+ historyItemRefName = this.repository.HEAD.name ?? this.repository.HEAD.commit ?? '';
+
+ this._currentHistoryItemRemoteRef = undefined;
+ this._currentHistoryItemBaseRef = undefined;
+ break;
+ }
}
- this.currentHistoryItemGroup = {
- id: `refs/heads/${this.repository.HEAD.name ?? ''}`,
- name: this.repository.HEAD.name ?? '',
- remote: this.repository.HEAD.upstream ? {
- id: `refs/remotes/${this.repository.HEAD.upstream.remote}/${this.repository.HEAD.upstream.name}`,
- name: `${this.repository.HEAD.upstream.remote}/${this.repository.HEAD.upstream.name}`,
- } : undefined,
- base: mergeBase ? {
- id: `refs/remotes/${mergeBase.remote}/${mergeBase.name}`,
- name: `${mergeBase.remote}/${mergeBase.name}`,
- } : undefined
+ this._HEAD = this.repository.HEAD;
+
+ this._currentHistoryItemRef = {
+ id: historyItemRefId,
+ name: historyItemRefName,
+ revision: this.repository.HEAD.commit,
+ icon: new ThemeIcon('target'),
};
- this.logger.trace(`GitHistoryProvider:onDidRunGitStatus - currentHistoryItemGroup (${force}): ${JSON.stringify(this.currentHistoryItemGroup)}`);
- }
+ this._onDidChangeCurrentHistoryItemRefs.fire();
+ this.logger.trace(`[GitHistoryProvider][onDidRunWriteOperation] currentHistoryItemRef: ${JSON.stringify(this._currentHistoryItemRef)}`);
+ this.logger.trace(`[GitHistoryProvider][onDidRunWriteOperation] currentHistoryItemRemoteRef: ${JSON.stringify(this._currentHistoryItemRemoteRef)}`);
+ this.logger.trace(`[GitHistoryProvider][onDidRunWriteOperation] currentHistoryItemBaseRef: ${JSON.stringify(this._currentHistoryItemBaseRef)}`);
- async provideHistoryItems(historyItemGroupId: string, options: SourceControlHistoryOptions): Promise {
- //TODO@lszomoru - support limit and cursor
- if (typeof options.limit === 'number') {
- throw new Error('Unsupported options.');
- }
- if (typeof options.limit?.id !== 'string') {
- throw new Error('Unsupported options.');
- }
+ // Refs (alphabetically)
+ const historyItemRefs = this.repository.refs
+ .map(ref => toSourceControlHistoryItemRef(ref))
+ .sort((a, b) => a.id.localeCompare(b.id));
- const refParentId = options.limit.id;
- const refId = await this.repository.revParse(historyItemGroupId) ?? '';
+ // Auto-fetch
+ const silent = result.operation.kind === OperationKind.Fetch && result.operation.showProgress === false;
+ const delta = deltaHistoryItemRefs(this.historyItemRefs, historyItemRefs);
+ this._onDidChangeHistoryItemRefs.fire({ ...delta, silent });
- const historyItems: SourceControlHistoryItem[] = [];
- const commits = await this.repository.log({ range: `${refParentId}..${refId}`, shortStats: true, sortByAuthorDate: true });
+ this.historyItemRefs = historyItemRefs;
- await ensureEmojis();
+ const deltaLog = {
+ added: delta.added.map(ref => ref.id),
+ modified: delta.modified.map(ref => ref.id),
+ removed: delta.removed.map(ref => ref.id),
+ silent
+ };
+ this.logger.trace(`[GitHistoryProvider][onDidRunWriteOperation] historyItemRefs: ${JSON.stringify(deltaLog)}`);
+ }
- historyItems.push(...commits.map(commit => {
- const newLineIndex = commit.message.indexOf('\n');
- const subject = newLineIndex !== -1 ? commit.message.substring(0, newLineIndex) : commit.message;
+ async provideHistoryItemRefs(): Promise {
+ const refs = await this.repository.getRefs();
- return {
- id: commit.hash,
- parentIds: commit.parents,
- message: emojify(subject),
- author: commit.authorName,
- icon: new ThemeIcon('git-commit'),
- timestamp: commit.authorDate?.getTime(),
- statistics: commit.shortStat ?? { files: 0, insertions: 0, deletions: 0 },
- };
- }));
+ const branches: SourceControlHistoryItemRef[] = [];
+ const remoteBranches: SourceControlHistoryItemRef[] = [];
+ const tags: SourceControlHistoryItemRef[] = [];
+
+ for (const ref of refs) {
+ switch (ref.type) {
+ case RefType.RemoteHead:
+ remoteBranches.push(toSourceControlHistoryItemRef(ref));
+ break;
+ case RefType.Tag:
+ tags.push(toSourceControlHistoryItemRef(ref));
+ break;
+ default:
+ branches.push(toSourceControlHistoryItemRef(ref));
+ break;
+ }
+ }
- return historyItems;
+ return [...branches, ...remoteBranches, ...tags];
}
- async provideHistoryItems2(options: SourceControlHistoryOptions): Promise {
- if (!this.currentHistoryItemGroup || !options.historyItemGroupIds) {
+ async provideHistoryItems(options: SourceControlHistoryOptions): Promise {
+ if (!this.currentHistoryItemRef || !options.historyItemRefs) {
return [];
}
// Deduplicate refNames
- const refNames = Array.from(new Set(options.historyItemGroupIds));
+ const refNames = Array.from(new Set(options.historyItemRefs));
- // Get the merge base of the refNames
- const refsMergeBase = await this.resolveHistoryItemGroupsMergeBase(refNames);
- if (!refsMergeBase) {
- return [];
- }
+ let logOptions: LogOptions = { refNames, shortStats: true };
- // Get the commits
- const commits = await this.repository.log({ range: `${refsMergeBase}^..`, refNames });
+ try {
+ if (options.limit === undefined || typeof options.limit === 'number') {
+ logOptions = { ...logOptions, maxEntries: options.limit ?? 50 };
+ } else if (typeof options.limit.id === 'string') {
+ // Get the common ancestor commit, and commits
+ const commit = await this.repository.getCommit(options.limit.id);
+ const commitParentId = commit.parents.length > 0 ? commit.parents[0] : await this.repository.getEmptyTree();
+
+ logOptions = { ...logOptions, range: `${commitParentId}..` };
+ }
- await ensureEmojis();
+ if (typeof options.skip === 'number') {
+ logOptions = { ...logOptions, skip: options.skip };
+ }
- const historyItems: SourceControlHistoryItem[] = [];
- historyItems.push(...commits.map(commit => {
- const newLineIndex = commit.message.indexOf('\n');
- const subject = newLineIndex !== -1 ? commit.message.substring(0, newLineIndex) : commit.message;
+ const commits = await this.repository.log({ ...logOptions, silent: true });
- const labels = this.resolveHistoryItemLabels(commit, refNames);
+ await ensureEmojis();
- return {
- id: commit.hash,
- parentIds: commit.parents,
- message: emojify(subject),
- author: commit.authorName,
- icon: new ThemeIcon('git-commit'),
- timestamp: commit.authorDate?.getTime(),
- statistics: commit.shortStat ?? { files: 0, insertions: 0, deletions: 0 },
- labels: labels.length !== 0 ? labels : undefined
- };
- }));
+ return commits.map(commit => {
+ const references = this._resolveHistoryItemRefs(commit);
- return historyItems;
- }
-
- async provideHistoryItemSummary(historyItemId: string, historyItemParentId: string | undefined): Promise {
- if (!historyItemParentId) {
- const commit = await this.repository.getCommit(historyItemId);
- historyItemParentId = commit.parents.length > 0 ? commit.parents[0] : `${historyItemId}^`;
+ return {
+ id: commit.hash,
+ parentIds: commit.parents,
+ message: emojify(commit.message),
+ author: commit.authorName,
+ icon: new ThemeIcon('git-commit'),
+ displayId: commit.hash.substring(0, 8),
+ timestamp: commit.authorDate?.getTime(),
+ statistics: commit.shortStat ?? { files: 0, insertions: 0, deletions: 0 },
+ references: references.length !== 0 ? references : undefined
+ };
+ });
+ } catch (err) {
+ this.logger.error(`[GitHistoryProvider][provideHistoryItems] Failed to get history items with options '${JSON.stringify(options)}': ${err}`);
+ return [];
}
-
- const allChanges = await this.repository.diffBetweenShortStat(historyItemParentId, historyItemId);
- return { id: historyItemId, parentIds: [historyItemParentId], message: '', statistics: allChanges };
}
async provideHistoryItemChanges(historyItemId: string, historyItemParentId: string | undefined): Promise {
- if (!historyItemParentId) {
- const commit = await this.repository.getCommit(historyItemId);
- historyItemParentId = commit.parents.length > 0 ? commit.parents[0] : `${historyItemId}^`;
- }
+ historyItemParentId = historyItemParentId ?? await this.repository.getEmptyTree();
const historyItemChangesUri: Uri[] = [];
const historyItemChanges: SourceControlHistoryItemChange[] = [];
- const changes = await this.repository.diffBetween(historyItemParentId, historyItemId);
+ const changes = await this.repository.diffTrees(historyItemParentId, historyItemId);
for (const change of changes) {
const historyItemUri = change.uri.with({
@@ -219,29 +282,36 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
return historyItemChanges;
}
- async resolveHistoryItemGroupCommonAncestor(historyItemId1: string, historyItemId2: string | undefined): Promise<{ id: string; ahead: number; behind: number } | undefined> {
- if (!historyItemId2) {
- const upstreamRef = await this.resolveHistoryItemGroupMergeBase(historyItemId1);
- if (!upstreamRef) {
- this.logger.info(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Failed to resolve history item group base for '${historyItemId1}'`);
+ async resolveHistoryItemRefsCommonAncestor(historyItemRefs: string[]): Promise {
+ try {
+ if (historyItemRefs.length === 0) {
+ // TODO@lszomoru - log
return undefined;
- }
+ } else if (historyItemRefs.length === 1 && historyItemRefs[0] === this.currentHistoryItemRef?.id) {
+ // Remote
+ if (this.currentHistoryItemRemoteRef) {
+ const ancestor = await this.repository.getMergeBase(historyItemRefs[0], this.currentHistoryItemRemoteRef.id);
+ return ancestor;
+ }
- historyItemId2 = `refs/remotes/${upstreamRef.remote}/${upstreamRef.name}`;
- }
+ // Base
+ if (this.currentHistoryItemBaseRef) {
+ const ancestor = await this.repository.getMergeBase(historyItemRefs[0], this.currentHistoryItemBaseRef.id);
+ return ancestor;
+ }
- const ancestor = await this.repository.getMergeBase(historyItemId1, historyItemId2);
- if (!ancestor) {
- this.logger.info(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Failed to resolve common ancestor for '${historyItemId1}' and '${historyItemId2}'`);
- return undefined;
+ // First commit
+ const commits = await this.repository.log({ maxParents: 0, refNames: ['HEAD'] });
+ if (commits.length > 0) {
+ return commits[0].hash;
+ }
+ } else if (historyItemRefs.length > 1) {
+ const ancestor = await this.repository.getMergeBase(historyItemRefs[0], historyItemRefs[1], ...historyItemRefs.slice(2));
+ return ancestor;
+ }
}
-
- try {
- const commitCount = await this.repository.getCommitCount(`${historyItemId1}...${historyItemId2}`);
- this.logger.trace(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Resolved common ancestor for '${historyItemId1}' and '${historyItemId2}': ${JSON.stringify({ id: ancestor, ahead: commitCount.ahead, behind: commitCount.behind })}`);
- return { id: ancestor, ahead: commitCount.ahead, behind: commitCount.behind };
- } catch (err) {
- this.logger.error(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Failed to get ahead/behind for '${historyItemId1}...${historyItemId2}': ${err.message}`);
+ catch (err) {
+ this.logger.error(`[GitHistoryProvider][resolveHistoryItemRefsCommonAncestor] Failed to resolve common ancestor for ${historyItemRefs.join(',')}: ${err}`);
}
return undefined;
@@ -251,63 +321,47 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
return this.historyItemDecorations.get(uri.toString());
}
- private async resolveHistoryItemGroupsMergeBase(refNames: string[]): Promise {
- if (refNames.length < 2) {
- return undefined;
- }
-
- const refsMergeBase = await this.repository.getMergeBase(refNames[0], refNames[1], ...refNames.slice(2));
- return refsMergeBase;
- }
-
- private resolveHistoryItemLabels(commit: Commit, refNames: string[]): SourceControlHistoryItemLabel[] {
- const labels: SourceControlHistoryItemLabel[] = [];
-
- for (const label of commit.refNames) {
- if (!label.startsWith('HEAD -> ') && !refNames.includes(label)) {
- continue;
- }
-
- for (const [key, value] of this.historyItemLabels) {
- if (label.startsWith(key)) {
- labels.push({
- title: label.substring(key.length),
- icon: new ThemeIcon(value)
+ private _resolveHistoryItemRefs(commit: Commit): SourceControlHistoryItemRef[] {
+ const references: SourceControlHistoryItemRef[] = [];
+
+ for (const ref of commit.refNames) {
+ switch (true) {
+ case ref.startsWith('HEAD -> refs/heads/'):
+ references.push({
+ id: ref.substring('HEAD -> '.length),
+ name: ref.substring('HEAD -> refs/heads/'.length),
+ revision: commit.hash,
+ icon: new ThemeIcon('target')
+ });
+ break;
+ case ref.startsWith('tag: refs/tags/'):
+ references.push({
+ id: ref.substring('tag: '.length),
+ name: ref.substring('tag: refs/tags/'.length),
+ revision: commit.hash,
+ icon: new ThemeIcon('tag')
+ });
+ break;
+ case ref.startsWith('refs/heads/'):
+ references.push({
+ id: ref,
+ name: ref.substring('refs/heads/'.length),
+ revision: commit.hash,
+ icon: new ThemeIcon('git-branch')
+ });
+ break;
+ case ref.startsWith('refs/remotes/'):
+ references.push({
+ id: ref,
+ name: ref.substring('refs/remotes/'.length),
+ revision: commit.hash,
+ icon: new ThemeIcon('cloud')
});
break;
- }
- }
- }
-
- return labels;
- }
-
- private async resolveHistoryItemGroupMergeBase(historyItemId: string): Promise {
- try {
- // Upstream
- const branch = await this.repository.getBranch(historyItemId);
- if (branch.upstream) {
- return branch.upstream;
- }
-
- // Base (config -> reflog -> default)
- const remoteBranch = await this.repository.getBranchBase(historyItemId);
- if (!remoteBranch?.remote || !remoteBranch?.name || !remoteBranch?.commit || remoteBranch?.type !== RefType.RemoteHead) {
- this.logger.info(`GitHistoryProvider:resolveHistoryItemGroupUpstreamOrBase - Failed to resolve history item group base for '${historyItemId}'`);
- return undefined;
}
-
- return {
- name: remoteBranch.name,
- remote: remoteBranch.remote,
- commit: remoteBranch.commit
- };
- }
- catch (err) {
- this.logger.error(`GitHistoryProvider:resolveHistoryItemGroupUpstreamOrBase - Failed to get branch base for '${historyItemId}': ${err.message}`);
}
- return undefined;
+ return references;
}
private async resolveHEADMergeBase(): Promise {
diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts
index c2d9b974be7..aa4d98adc8b 100644
--- a/extensions/git/src/main.ts
+++ b/extensions/git/src/main.ts
@@ -20,7 +20,7 @@ import * as fs from 'fs';
import * as os from 'os';
import { GitTimelineProvider } from './timelineProvider';
import { registerAPICommands } from './api/api1';
-import { TerminalEnvironmentManager } from './terminal';
+import { TerminalEnvironmentManager, TerminalShellExecutionManager } from './terminal';
import { createIPCServer, IPCServer } from './ipc/ipcServer';
import { GitEditor } from './gitEditor';
import { GitPostCommitCommandsProvider } from './postCommitCommands';
@@ -48,7 +48,7 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel,
}
const info = await findGit(pathHints, gitPath => {
- logger.info(l10n.t('Validating found git in: "{0}"', gitPath));
+ logger.info(l10n.t('[main] Validating found git in: "{0}"', gitPath));
if (excludes.length === 0) {
return true;
}
@@ -56,7 +56,7 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel,
const normalized = path.normalize(gitPath).replace(/[\r\n]+$/, '');
const skip = excludes.some(e => normalized.startsWith(e));
if (skip) {
- logger.info(l10n.t('Skipped found git in: "{0}"', gitPath));
+ logger.info(l10n.t('[main] Skipped found git in: "{0}"', gitPath));
}
return !skip;
}, logger);
@@ -66,7 +66,7 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel,
try {
ipcServer = await createIPCServer(context.storagePath);
} catch (err) {
- logger.error(`Failed to create git IPC: ${err}`);
+ logger.error(`[main] Failed to create git IPC: ${err}`);
}
const askpass = new Askpass(ipcServer);
@@ -79,7 +79,7 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel,
const terminalEnvironmentManager = new TerminalEnvironmentManager(context, [askpass, gitEditor, ipcServer]);
disposables.push(terminalEnvironmentManager);
- logger.info(l10n.t('Using git "{0}" from "{1}"', info.version, info.path));
+ logger.info(l10n.t('[main] Using git "{0}" from "{1}"', info.version, info.path));
const git = new Git({
gitPath: info.path,
@@ -113,7 +113,8 @@ async function createModel(context: ExtensionContext, logger: LogOutputChannel,
new GitFileSystemProvider(model),
new GitDecorations(model),
new GitTimelineProvider(model, cc),
- new GitEditSessionIdentityProvider(model)
+ new GitEditSessionIdentityProvider(model),
+ new TerminalShellExecutionManager(model, logger)
);
const postCommitCommandsProvider = new GitPostCommitCommandsProvider();
@@ -187,7 +188,7 @@ export async function _activate(context: ExtensionContext): Promise {
- logger.appendLine(l10n.t('Log level: {0}', LogLevel[logLevel]));
+ logger.appendLine(l10n.t('[main] Log level: {0}', LogLevel[logLevel]));
};
disposables.push(logger.onDidChangeLogLevel(onDidChangeLogLevel));
onDidChangeLogLevel(logger.logLevel);
@@ -212,13 +213,13 @@ export async function _activate(context: ExtensionContext): Promise {
+ this.logger.info('[Model][doInitialScan] Initial repository scan started');
+
const config = workspace.getConfiguration('git');
const autoRepositoryDetection = config.get('autoRepositoryDetection');
const parentRepositoryConfig = config.get<'always' | 'never' | 'prompt'>('openRepositoryInParentFolders', 'prompt');
+ this.logger.trace(`[Model][doInitialScan] Settings: autoRepositoryDetection=${autoRepositoryDetection}, openRepositoryInParentFolders=${parentRepositoryConfig}`);
+
// Initial repository scan function
const initialScanFn = () => Promise.all([
this.onDidChangeWorkspaceFolders({ added: workspace.workspaceFolders || [], removed: [] }),
@@ -321,6 +325,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
*/
this.telemetryReporter.sendTelemetryEvent('git.repositoryInitialScan', { autoRepositoryDetection: String(autoRepositoryDetection) }, { repositoryCount: this.openRepositories.length });
+ this.logger.info(`[Model][doInitialScan] Initial repository scan completed - repositories (${this.repositories.length}), closed repositories (${this.closedRepositories.length}), parent repositories (${this.parentRepositories.length}), unsafe repositories (${this.unsafeRepositories.length})`);
}
/**
@@ -329,47 +334,51 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
* the git.repositoryScanMaxDepth setting.
*/
private async scanWorkspaceFolders(): Promise {
- const config = workspace.getConfiguration('git');
- const autoRepositoryDetection = config.get('autoRepositoryDetection');
- this.logger.trace(`[swsf] Scan workspace sub folders. autoRepositoryDetection=${autoRepositoryDetection}`);
+ try {
+ const config = workspace.getConfiguration('git');
+ const autoRepositoryDetection = config.get('autoRepositoryDetection');
- if (autoRepositoryDetection !== true && autoRepositoryDetection !== 'subFolders') {
- return;
- }
+ if (autoRepositoryDetection !== true && autoRepositoryDetection !== 'subFolders') {
+ return;
+ }
- await Promise.all((workspace.workspaceFolders || []).map(async folder => {
- const root = folder.uri.fsPath;
- this.logger.trace(`[swsf] Workspace folder: ${root}`);
+ await Promise.all((workspace.workspaceFolders || []).map(async folder => {
+ const root = folder.uri.fsPath;
+ this.logger.trace(`[Model][scanWorkspaceFolders] Workspace folder: ${root}`);
- // Workspace folder children
- const repositoryScanMaxDepth = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get('repositoryScanMaxDepth', 1);
- const repositoryScanIgnoredFolders = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get('repositoryScanIgnoredFolders', []);
+ // Workspace folder children
+ const repositoryScanMaxDepth = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get('repositoryScanMaxDepth', 1);
+ const repositoryScanIgnoredFolders = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get('repositoryScanIgnoredFolders', []);
- const subfolders = new Set(await this.traverseWorkspaceFolder(root, repositoryScanMaxDepth, repositoryScanIgnoredFolders));
+ const subfolders = new Set(await this.traverseWorkspaceFolder(root, repositoryScanMaxDepth, repositoryScanIgnoredFolders));
- // Repository scan folders
- const scanPaths = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get('scanRepositories') || [];
- this.logger.trace(`[swsf] Workspace scan settings: repositoryScanMaxDepth=${repositoryScanMaxDepth}; repositoryScanIgnoredFolders=[${repositoryScanIgnoredFolders.join(', ')}]; scanRepositories=[${scanPaths.join(', ')}]`);
+ // Repository scan folders
+ const scanPaths = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get('scanRepositories') || [];
+ this.logger.trace(`[Model][scanWorkspaceFolders] Workspace scan settings: repositoryScanMaxDepth=${repositoryScanMaxDepth}; repositoryScanIgnoredFolders=[${repositoryScanIgnoredFolders.join(', ')}]; scanRepositories=[${scanPaths.join(', ')}]`);
- for (const scanPath of scanPaths) {
- if (scanPath === '.git') {
- this.logger.trace('[swsf] \'.git\' not supported in \'git.scanRepositories\' setting.');
- continue;
- }
+ for (const scanPath of scanPaths) {
+ if (scanPath === '.git') {
+ this.logger.trace('[Model][scanWorkspaceFolders] \'.git\' not supported in \'git.scanRepositories\' setting.');
+ continue;
+ }
- if (path.isAbsolute(scanPath)) {
- const notSupportedMessage = l10n.t('Absolute paths not supported in "git.scanRepositories" setting.');
- this.logger.warn(notSupportedMessage);
- console.warn(notSupportedMessage);
- continue;
- }
+ if (path.isAbsolute(scanPath)) {
+ const notSupportedMessage = l10n.t('Absolute paths not supported in "git.scanRepositories" setting.');
+ this.logger.warn(`[Model][scanWorkspaceFolders] ${notSupportedMessage}`);
+ console.warn(notSupportedMessage);
+ continue;
+ }
- subfolders.add(path.join(root, scanPath));
- }
+ subfolders.add(path.join(root, scanPath));
+ }
- this.logger.trace(`[swsf] Workspace scan sub folders: [${[...subfolders].join(', ')}]`);
- await Promise.all([...subfolders].map(f => this.openRepository(f)));
- }));
+ this.logger.trace(`[Model][scanWorkspaceFolders] Workspace scan sub folders: [${[...subfolders].join(', ')}]`);
+ await Promise.all([...subfolders].map(f => this.openRepository(f)));
+ }));
+ }
+ catch (err) {
+ this.logger.warn(`[Model][scanWorkspaceFolders] Error: ${err}`);
+ }
}
private async traverseWorkspaceFolder(workspaceFolder: string, maxDepth: number, repositoryScanIgnoredFolders: string[]): Promise {
@@ -388,7 +397,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
}
catch (err) {
- this.logger.warn(`[swsf] Unable to read folder '${currentFolder.path}': ${err}`);
+ this.logger.warn(`[Model][traverseWorkspaceFolder] Unable to read workspace folder '${currentFolder.path}': ${err}`);
continue;
}
@@ -434,23 +443,28 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
private async onDidChangeWorkspaceFolders({ added, removed }: WorkspaceFoldersChangeEvent): Promise {
- const possibleRepositoryFolders = added
- .filter(folder => !this.getOpenRepository(folder.uri));
-
- const activeRepositoriesList = window.visibleTextEditors
- .map(editor => this.getRepository(editor.document.uri))
- .filter(repository => !!repository) as Repository[];
-
- const activeRepositories = new Set(activeRepositoriesList);
- const openRepositoriesToDispose = removed
- .map(folder => this.getOpenRepository(folder.uri))
- .filter(r => !!r)
- .filter(r => !activeRepositories.has(r!.repository))
- .filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
-
- openRepositoriesToDispose.forEach(r => r.dispose());
- this.logger.trace(`[swf] Scan workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
- await Promise.all(possibleRepositoryFolders.map(p => this.openRepository(p.uri.fsPath)));
+ try {
+ const possibleRepositoryFolders = added
+ .filter(folder => !this.getOpenRepository(folder.uri));
+
+ const activeRepositoriesList = window.visibleTextEditors
+ .map(editor => this.getRepository(editor.document.uri))
+ .filter(repository => !!repository) as Repository[];
+
+ const activeRepositories = new Set(activeRepositoriesList);
+ const openRepositoriesToDispose = removed
+ .map(folder => this.getOpenRepository(folder.uri))
+ .filter(r => !!r)
+ .filter(r => !activeRepositories.has(r!.repository))
+ .filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
+
+ openRepositoriesToDispose.forEach(r => r.dispose());
+ this.logger.trace(`[Model][onDidChangeWorkspaceFolders] Workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
+ await Promise.all(possibleRepositoryFolders.map(p => this.openRepository(p.uri.fsPath)));
+ }
+ catch (err) {
+ this.logger.warn(`[Model][onDidChangeWorkspaceFolders] Error: ${err}`);
+ }
}
private onDidChangeConfiguration(): void {
@@ -463,50 +477,54 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
.filter(({ root }) => workspace.getConfiguration('git', root).get('enabled') !== true)
.map(({ repository }) => repository);
- this.logger.trace(`[swf] Scan workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
+ this.logger.trace(`[Model][onDidChangeConfiguration] Workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
possibleRepositoryFolders.forEach(p => this.openRepository(p.uri.fsPath));
openRepositoriesToDispose.forEach(r => r.dispose());
}
private async onDidChangeVisibleTextEditors(editors: readonly TextEditor[]): Promise {
- if (!workspace.isTrusted) {
- this.logger.trace('[svte] Workspace is not trusted.');
- return;
- }
-
- const config = workspace.getConfiguration('git');
- const autoRepositoryDetection = config.get('autoRepositoryDetection');
- this.logger.trace(`[svte] Scan visible text editors. autoRepositoryDetection=${autoRepositoryDetection}`);
-
- if (autoRepositoryDetection !== true && autoRepositoryDetection !== 'openEditors') {
- return;
- }
-
- await Promise.all(editors.map(async editor => {
- const uri = editor.document.uri;
-
- if (uri.scheme !== 'file') {
+ try {
+ if (!workspace.isTrusted) {
+ this.logger.trace('[Model][onDidChangeVisibleTextEditors] Workspace is not trusted.');
return;
}
- const repository = this.getRepository(uri);
+ const config = workspace.getConfiguration('git');
+ const autoRepositoryDetection = config.get('autoRepositoryDetection');
- if (repository) {
- this.logger.trace(`[svte] Repository for editor resource ${uri.fsPath} already exists: ${repository.root}`);
+ if (autoRepositoryDetection !== true && autoRepositoryDetection !== 'openEditors') {
return;
}
- this.logger.trace(`[svte] Open repository for editor resource ${uri.fsPath}`);
- await this.openRepository(path.dirname(uri.fsPath));
- }));
+ await Promise.all(editors.map(async editor => {
+ const uri = editor.document.uri;
+
+ if (uri.scheme !== 'file') {
+ return;
+ }
+
+ const repository = this.getRepository(uri);
+
+ if (repository) {
+ this.logger.trace(`[Model][onDidChangeVisibleTextEditors] Repository for editor resource ${uri.fsPath} already exists: ${repository.root}`);
+ return;
+ }
+
+ this.logger.trace(`[Model][onDidChangeVisibleTextEditors] Open repository for editor resource ${uri.fsPath}`);
+ await this.openRepository(path.dirname(uri.fsPath));
+ }));
+ }
+ catch (err) {
+ this.logger.warn(`[Model][onDidChangeVisibleTextEditors] Error: ${err}`);
+ }
}
@sequentialize
async openRepository(repoPath: string, openIfClosed = false): Promise {
- this.logger.trace(`Opening repository: ${repoPath}`);
+ this.logger.trace(`[Model][openRepository] Repository: ${repoPath}`);
const existingRepository = await this.getRepositoryExact(repoPath);
if (existingRepository) {
- this.logger.trace(`Repository for path ${repoPath} already exists: ${existingRepository.root}`);
+ this.logger.trace(`[Model][openRepository] Repository for path ${repoPath} already exists: ${existingRepository.root}`);
return;
}
@@ -514,7 +532,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const enabled = config.get('enabled') === true;
if (!enabled) {
- this.logger.trace('Git is not enabled');
+ this.logger.trace('[Model][openRepository] Git is not enabled');
return;
}
@@ -524,7 +542,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
fs.accessSync(path.join(repoPath, 'HEAD'), fs.constants.F_OK);
const result = await this.git.exec(repoPath, ['-C', repoPath, 'rev-parse', '--show-cdup']);
if (result.stderr.trim() === '' && result.stdout.trim() === '') {
- this.logger.trace(`Bare repository: ${repoPath}`);
+ this.logger.trace(`[Model][openRepository] Bare repository: ${repoPath}`);
return;
}
} catch {
@@ -534,16 +552,16 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
try {
const { repositoryRoot, unsafeRepositoryMatch } = await this.getRepositoryRoot(repoPath);
- this.logger.trace(`Repository root for path ${repoPath} is: ${repositoryRoot}`);
+ this.logger.trace(`[Model][openRepository] Repository root for path ${repoPath} is: ${repositoryRoot}`);
const existingRepository = await this.getRepositoryExact(repositoryRoot);
if (existingRepository) {
- this.logger.trace(`Repository for path ${repositoryRoot} already exists: ${existingRepository.root}`);
+ this.logger.trace(`[Model][openRepository] Repository for path ${repositoryRoot} already exists: ${existingRepository.root}`);
return;
}
if (this.shouldRepositoryBeIgnored(repositoryRoot)) {
- this.logger.trace(`Repository for path ${repositoryRoot} is ignored`);
+ this.logger.trace(`[Model][openRepository] Repository for path ${repositoryRoot} is ignored`);
return;
}
@@ -552,7 +570,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
if (parentRepositoryConfig !== 'always' && this.globalState.get(`parentRepository:${repositoryRoot}`) !== true) {
const isRepositoryOutsideWorkspace = await this.isRepositoryOutsideWorkspace(repositoryRoot);
if (isRepositoryOutsideWorkspace) {
- this.logger.trace(`Repository in parent folder: ${repositoryRoot}`);
+ this.logger.trace(`[Model][openRepository] Repository in parent folder: ${repositoryRoot}`);
if (!this._parentRepositoriesManager.hasRepository(repositoryRoot)) {
// Show a notification if the parent repository is opened after the initial scan
@@ -569,7 +587,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Handle unsafe repositories
if (unsafeRepositoryMatch && unsafeRepositoryMatch.length === 3) {
- this.logger.trace(`Unsafe repository: ${repositoryRoot}`);
+ this.logger.trace(`[Model][openRepository] Unsafe repository: ${repositoryRoot}`);
// Show a notification if the unsafe repository is opened after the initial scan
if (this._state === 'initialized' && !this._unsafeRepositoriesManager.hasRepository(repositoryRoot)) {
@@ -583,7 +601,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Handle repositories that were closed by the user
if (!openIfClosed && this._closedRepositoriesManager.isRepositoryClosed(repositoryRoot)) {
- this.logger.trace(`Repository for path ${repositoryRoot} is closed`);
+ this.logger.trace(`[Model][openRepository] Repository for path ${repositoryRoot} is closed`);
return;
}
@@ -594,12 +612,14 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
this.open(repository);
this._closedRepositoriesManager.deleteRepository(repository.root);
+ this.logger.info(`[Model][openRepository] Opened repository: ${repository.root}`);
+
// Do not await this, we want SCM
// to know about the repo asap
repository.status();
} catch (err) {
// noop
- this.logger.trace(`Opening repository for path='${repoPath}' failed; ex=${err}`);
+ this.logger.trace(`[Model][openRepository] Opening repository for path='${repoPath}' failed. Error:${err}`);
}
}
@@ -631,7 +651,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const repositoryRootRealPath = await fs.promises.realpath(repositoryRoot);
return !pathEquals(repositoryRoot, repositoryRootRealPath) ? repositoryRootRealPath : undefined;
} catch (err) {
- this.logger.warn(`Failed to get repository realpath for: "${repositoryRoot}". ${err}`);
+ this.logger.warn(`[Model][getRepositoryRootRealPath] Failed to get repository realpath for "${repositoryRoot}": ${err}`);
return undefined;
}
}
@@ -658,7 +678,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
private open(repository: Repository): void {
- this.logger.info(`Open repository: ${repository.root}`);
+ this.logger.trace(`[Model][open] Repository: ${repository.root}`);
const onDidDisappearRepository = filterEvent(repository.onDidChangeState, state => state === RepositoryState.Disposed);
const disappearListener = onDidDisappearRepository(() => dispose());
@@ -675,7 +695,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const checkForSubmodules = () => {
if (!shouldDetectSubmodules) {
- this.logger.trace('Automatic detection of git submodules is not enabled.');
+ this.logger.trace('[Model][open] Automatic detection of git submodules is not enabled.');
return;
}
@@ -688,7 +708,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
.slice(0, submodulesLimit)
.map(r => path.join(repository.root, r.path))
.forEach(p => {
- this.logger.trace(`Opening submodule: '${p}'`);
+ this.logger.trace(`[Model][open] Opening submodule: '${p}'`);
this.eventuallyScanPossibleGitRepository(p);
});
};
@@ -750,7 +770,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
return;
}
- this.logger.info(`Close repository: ${repository.root}`);
+ this.logger.info(`[Model][close] Repository: ${repository.root}`);
this._closedRepositoriesManager.addRepository(openRepository.repository.root);
openRepository.dispose();
@@ -803,7 +823,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
return openRepositoryRealPath?.repository;
} catch (err) {
- this.logger.warn(`Failed to get repository realpath for: "${repoPath}". ${err}`);
+ this.logger.warn(`[Model][getRepositoryExact] Failed to get repository realpath for: "${repoPath}". Error:${err}`);
return undefined;
}
}
@@ -989,7 +1009,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
this._workspaceFolders.set(workspaceFolder.uri.fsPath, result);
} catch (err) {
// noop - Workspace folder does not exist
- this.logger.trace(`Failed to resolve workspace folder: "${workspaceFolder.uri.fsPath}". ${err}`);
+ this.logger.trace(`[Model][getWorkspaceFolderRealPath] Failed to resolve workspace folder "${workspaceFolder.uri.fsPath}". Error:${err}`);
}
}
diff --git a/extensions/git/src/operation.ts b/extensions/git/src/operation.ts
index 223f1945b02..d960cedfdbb 100644
--- a/extensions/git/src/operation.ts
+++ b/extensions/git/src/operation.ts
@@ -141,7 +141,7 @@ export const Operation = {
CheckoutTracking: (refLabel: string) => ({ kind: OperationKind.CheckoutTracking, blocking: true, readOnly: false, remote: false, retry: false, showProgress: true, refLabel } as CheckoutTrackingOperation),
Clean: (showProgress: boolean) => ({ kind: OperationKind.Clean, blocking: false, readOnly: false, remote: false, retry: false, showProgress } as CleanOperation),
Commit: { kind: OperationKind.Commit, blocking: true, readOnly: false, remote: false, retry: false, showProgress: true } as CommitOperation,
- Config: (readOnly: boolean) => ({ kind: OperationKind.Config, blocking: false, readOnly, remote: false, retry: false, showProgress: true } as ConfigOperation),
+ Config: (readOnly: boolean) => ({ kind: OperationKind.Config, blocking: false, readOnly, remote: false, retry: false, showProgress: false } as ConfigOperation),
DeleteBranch: { kind: OperationKind.DeleteBranch, blocking: false, readOnly: false, remote: false, retry: false, showProgress: true } as DeleteBranchOperation,
DeleteRef: { kind: OperationKind.DeleteRef, blocking: false, readOnly: false, remote: false, retry: false, showProgress: true } as DeleteRefOperation,
DeleteRemoteTag: { kind: OperationKind.DeleteRemoteTag, blocking: false, readOnly: false, remote: true, retry: false, showProgress: true } as DeleteRemoteTagOperation,
@@ -149,7 +149,7 @@ export const Operation = {
Diff: { kind: OperationKind.Diff, blocking: false, readOnly: true, remote: false, retry: false, showProgress: false } as DiffOperation,
Fetch: (showProgress: boolean) => ({ kind: OperationKind.Fetch, blocking: false, readOnly: false, remote: true, retry: true, showProgress } as FetchOperation),
FindTrackingBranches: { kind: OperationKind.FindTrackingBranches, blocking: false, readOnly: true, remote: false, retry: false, showProgress: true } as FindTrackingBranchesOperation,
- GetBranch: { kind: OperationKind.GetBranch, blocking: false, readOnly: true, remote: false, retry: false, showProgress: true } as GetBranchOperation,
+ GetBranch: { kind: OperationKind.GetBranch, blocking: false, readOnly: true, remote: false, retry: false, showProgress: false } as GetBranchOperation,
GetBranches: { kind: OperationKind.GetBranches, blocking: false, readOnly: true, remote: false, retry: false, showProgress: true } as GetBranchesOperation,
GetCommitTemplate: { kind: OperationKind.GetCommitTemplate, blocking: false, readOnly: true, remote: false, retry: false, showProgress: true } as GetCommitTemplateOperation,
GetObjectDetails: { kind: OperationKind.GetObjectDetails, blocking: false, readOnly: true, remote: false, retry: false, showProgress: false } as GetObjectDetailsOperation,
@@ -158,7 +158,7 @@ export const Operation = {
GetRemoteRefs: { kind: OperationKind.GetRemoteRefs, blocking: false, readOnly: true, remote: true, retry: false, showProgress: false } as GetRemoteRefsOperation,
HashObject: { kind: OperationKind.HashObject, blocking: false, readOnly: false, remote: false, retry: false, showProgress: true } as HashObjectOperation,
Ignore: { kind: OperationKind.Ignore, blocking: false, readOnly: false, remote: false, retry: false, showProgress: true } as IgnoreOperation,
- Log: { kind: OperationKind.Log, blocking: false, readOnly: true, remote: false, retry: false, showProgress: true } as LogOperation,
+ Log: (showProgress: boolean) => ({ kind: OperationKind.Log, blocking: false, readOnly: true, remote: false, retry: false, showProgress }) as LogOperation,
LogFile: { kind: OperationKind.LogFile, blocking: false, readOnly: true, remote: false, retry: false, showProgress: false } as LogFileOperation,
Merge: { kind: OperationKind.Merge, blocking: false, readOnly: false, remote: false, retry: false, showProgress: true } as MergeOperation,
MergeAbort: { kind: OperationKind.MergeAbort, blocking: false, readOnly: false, remote: false, retry: false, showProgress: true } as MergeAbortOperation,
@@ -214,7 +214,7 @@ export class OperationManager implements IOperationManager {
this.operations.set(operation.kind, new Set([operation]));
}
- this.logger.trace(`Operation start: ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
+ this.logger.trace(`[OperationManager][start] ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
}
end(operation: Operation): void {
@@ -226,7 +226,7 @@ export class OperationManager implements IOperationManager {
}
}
- this.logger.trace(`Operation end: ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
+ this.logger.trace(`[OperationManager][end] ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
}
getOperations(operationKind: OperationKind): Operation[] {
diff --git a/extensions/git/src/protocolHandler.ts b/extensions/git/src/protocolHandler.ts
index dc73fe39965..90491fecd50 100644
--- a/extensions/git/src/protocolHandler.ts
+++ b/extensions/git/src/protocolHandler.ts
@@ -22,7 +22,7 @@ export class GitProtocolHandler implements UriHandler {
}
handleUri(uri: Uri): void {
- this.logger.info(`GitProtocolHandler.handleUri(${uri.toString()})`);
+ this.logger.info(`[GitProtocolHandler][handleUri] URI:(${uri.toString()})`);
switch (uri.path) {
case '/clone': this.clone(uri);
@@ -34,17 +34,17 @@ export class GitProtocolHandler implements UriHandler {
const ref = data.ref;
if (!data.url) {
- this.logger.warn('Failed to open URI:' + uri.toString());
+ this.logger.warn('[GitProtocolHandler][clone] Failed to open URI:' + uri.toString());
return;
}
if (Array.isArray(data.url) && data.url.length === 0) {
- this.logger.warn('Failed to open URI:' + uri.toString());
+ this.logger.warn('[GitProtocolHandler][clone] Failed to open URI:' + uri.toString());
return;
}
if (ref !== undefined && typeof ref !== 'string') {
- this.logger.warn('Failed to open URI due to multiple references:' + uri.toString());
+ this.logger.warn('[GitProtocolHandler][clone] Failed to open URI due to multiple references:' + uri.toString());
return;
}
@@ -69,12 +69,12 @@ export class GitProtocolHandler implements UriHandler {
}
}
catch (ex) {
- this.logger.warn('Invalid URI:' + uri.toString());
+ this.logger.warn('[GitProtocolHandler][clone] Invalid URI:' + uri.toString());
return;
}
if (!(await commands.getCommands(true)).includes('git.clone')) {
- this.logger.error('Could not complete git clone operation as git installation was not found.');
+ this.logger.error('[GitProtocolHandler][clone] Could not complete git clone operation as git installation was not found.');
const errorMessage = l10n.t('Could not clone your repository as Git is not installed.');
const downloadGit = l10n.t('Download Git');
@@ -86,7 +86,7 @@ export class GitProtocolHandler implements UriHandler {
return;
} else {
const cloneTarget = cloneUri.toString(true);
- this.logger.info(`Executing git.clone for ${cloneTarget}`);
+ this.logger.info(`[GitProtocolHandler][clone] Executing git.clone for ${cloneTarget}`);
commands.executeCommand('git.clone', cloneTarget, undefined, { ref: ref });
}
}
diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index deec56f9eaa..cad93f799fb 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -426,8 +426,8 @@ class FileEventLogger {
}
this.eventDisposable = combinedDisposable([
- this.onWorkspaceWorkingTreeFileChange(uri => this.logger.debug(`[wt] Change: ${uri.fsPath}`)),
- this.onDotGitFileChange(uri => this.logger.debug(`[.git] Change: ${uri.fsPath}`))
+ this.onWorkspaceWorkingTreeFileChange(uri => this.logger.debug(`[FileEventLogger][onWorkspaceWorkingTreeFileChange] ${uri.fsPath}`)),
+ this.onDotGitFileChange(uri => this.logger.debug(`[FileEventLogger][onDotGitFileChange] ${uri.fsPath}`))
]);
}
@@ -478,7 +478,7 @@ class DotGitWatcher implements IFileWatcher {
this.transientDisposables.push(upstreamWatcher);
upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables);
} catch (err) {
- this.logger.warn(`Failed to watch ref '${upstreamPath}', is most likely packed.`);
+ this.logger.warn(`[DotGitWatcher][updateTransientWatchers] Failed to watch ref '${upstreamPath}', is most likely packed.`);
}
}
@@ -718,11 +718,18 @@ export class Repository implements Disposable {
private _untrackedGroup: SourceControlResourceGroup;
get untrackedGroup(): GitResourceGroup { return this._untrackedGroup as GitResourceGroup; }
+ private _EMPTY_TREE: string | undefined;
+
private _HEAD: Branch | undefined;
get HEAD(): Branch | undefined {
return this._HEAD;
}
+ private _refs: Ref[] = [];
+ get refs(): Ref[] {
+ return this._refs;
+ }
+
get headShortName(): string | undefined {
if (!this.HEAD) {
return;
@@ -1046,8 +1053,9 @@ export class Repository implements Disposable {
return this.run(Operation.Config(false), () => this.repository.config('local', key, value));
}
- log(options?: LogOptions): Promise {
- return this.run(Operation.Log, () => this.repository.log(options));
+ log(options?: LogOptions & { silent?: boolean }): Promise {
+ const showProgress = !options || options.silent !== true;
+ return this.run(Operation.Log(showProgress), () => this.repository.log(options));
}
logFile(uri: Uri, options?: LogFileOptions): Promise {
@@ -1112,6 +1120,10 @@ export class Repository implements Disposable {
return this.run(Operation.Diff, () => this.repository.diffBetweenShortStat(ref1, ref2));
}
+ diffTrees(treeish1: string, treeish2?: string): Promise {
+ return this.run(Operation.Diff, () => this.repository.diffTrees(treeish1, treeish2));
+ }
+
getMergeBase(ref1: string, ref2: string, ...refs: string[]): Promise {
return this.run(Operation.MergeBase, () => this.repository.getMergeBase(ref1, ref2, ...refs));
}
@@ -1501,16 +1513,13 @@ export class Repository implements Disposable {
private async getDefaultBranch(): Promise {
try {
- const defaultBranchResult = await this.repository.exec(['symbolic-ref', '--short', 'refs/remotes/origin/HEAD']);
- if (defaultBranchResult.stdout.trim() === '' || defaultBranchResult.stderr) {
- return undefined;
- }
-
- return this.getBranch(defaultBranchResult.stdout.trim());
+ const defaultBranch = await this.repository.getDefaultBranch();
+ return defaultBranch;
+ }
+ catch (err) {
+ this.logger.warn(`[Repository][getDefaultBranch] Failed to get default branch details: ${err.message}.`);
+ return undefined;
}
- catch (err) { }
-
- return undefined;
}
private async getUpstreamBranch(branch: Branch): Promise {
@@ -1523,7 +1532,7 @@ export class Repository implements Disposable {
return upstreamBranch;
}
catch (err) {
- this.logger.warn(`Failed to get branch details for 'refs/remotes/${branch.upstream.remote}/${branch.upstream.name}': ${err.message}.`);
+ this.logger.warn(`[Repository][getUpstreamBranch] Failed to get branch details for 'refs/remotes/${branch.upstream.remote}/${branch.upstream.name}': ${err.message}.`);
return undefined;
}
}
@@ -1559,8 +1568,8 @@ export class Repository implements Disposable {
await this.run(Operation.Rebase, () => this.repository.rebase(branch));
}
- async tag(name: string, message?: string): Promise {
- await this.run(Operation.Tag, () => this.repository.tag(name, message));
+ async tag(options: { name: string; message?: string; ref?: string }): Promise {
+ await this.run(Operation.Tag, () => this.repository.tag(options));
}
async deleteTag(name: string): Promise {
@@ -1602,12 +1611,13 @@ export class Repository implements Disposable {
return await this.repository.getCommit(ref);
}
- async getCommitCount(range: string): Promise<{ ahead: number; behind: number }> {
- return await this.run(Operation.RevList, () => this.repository.getCommitCount(range));
- }
+ async getEmptyTree(): Promise {
+ if (!this._EMPTY_TREE) {
+ const result = await this.repository.exec(['hash-object', '-t', 'tree', '/dev/null']);
+ this._EMPTY_TREE = result.stdout.trim();
+ }
- async revParse(ref: string): Promise {
- return await this.run(Operation.RevParse, () => this.repository.revParse(ref));
+ return this._EMPTY_TREE;
}
async reset(treeish: string, hard?: boolean): Promise {
@@ -1819,7 +1829,7 @@ export class Repository implements Disposable {
return true;
}
- const maybeRebased = await this.run(Operation.Log, async () => {
+ const maybeRebased = await this.run(Operation.Log(true), async () => {
try {
const result = await this.repository.exec(['log', '--oneline', '--cherry', `${currentBranch ?? ''}...${currentBranch ?? ''}@{upstream}`, '--']);
if (result.exitCode) {
@@ -1943,7 +1953,8 @@ export class Repository implements Disposable {
return await this.run(Operation.Ignore, async () => {
const ignoreFile = `${this.repository.root}${path.sep}.gitignore`;
const textToAppend = files
- .map(uri => relativePath(this.repository.root, uri.fsPath).replace(/\\/g, '/'))
+ .map(uri => relativePath(this.repository.root, uri.fsPath)
+ .replace(/\\|\[/g, match => match === '\\' ? '/' : `\\${match}`))
.join('\n');
const document = await new Promise(c => fs.exists(ignoreFile, c))
@@ -2170,7 +2181,12 @@ export class Repository implements Disposable {
this._sourceControl.commitTemplate = commitTemplate;
// Execute cancellable long-running operation
- const resourceGroups = await this.getStatus(cancellationToken);
+ const [resourceGroups, refs] =
+ await Promise.all([
+ this.getStatus(cancellationToken),
+ this.getRefs({}, cancellationToken)]);
+
+ this._refs = refs;
this._updateResourceGroupsState(resourceGroups);
this._onDidChangeStatus.fire();
@@ -2409,17 +2425,17 @@ export class Repository implements Disposable {
const autorefresh = config.get('autorefresh');
if (!autorefresh) {
- this.logger.trace('Skip running git status because autorefresh setting is disabled.');
+ this.logger.trace('[Repository][onFileChange] Skip running git status because autorefresh setting is disabled.');
return;
}
if (this.isRepositoryHuge) {
- this.logger.trace('Skip running git status because repository is huge.');
+ this.logger.trace('[Repository][onFileChange] Skip running git status because repository is huge.');
return;
}
if (!this.operations.isIdle()) {
- this.logger.trace('Skip running git status because an operation is running.');
+ this.logger.trace('[Repository][onFileChange] Skip running git status because an operation is running.');
return;
}
diff --git a/extensions/git/src/terminal.ts b/extensions/git/src/terminal.ts
index 4f6d95488bb..edf02693ccd 100644
--- a/extensions/git/src/terminal.ts
+++ b/extensions/git/src/terminal.ts
@@ -3,8 +3,9 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { ExtensionContext, l10n, workspace } from 'vscode';
-import { filterEvent, IDisposable } from './util';
+import { ExtensionContext, l10n, LogOutputChannel, TerminalShellExecutionEndEvent, window, workspace } from 'vscode';
+import { dispose, filterEvent, IDisposable } from './util';
+import { Model } from './model';
export interface ITerminalEnvironmentProvider {
featureDescription?: string;
@@ -50,3 +51,42 @@ export class TerminalEnvironmentManager {
this.disposable.dispose();
}
}
+
+export class TerminalShellExecutionManager {
+ private readonly subcommands = new Set([
+ 'add', 'branch', 'checkout', 'cherry-pick', 'clean', 'commit', 'fetch', 'merge',
+ 'mv', 'rebase', 'reset', 'restore', 'revert', 'rm', 'pull', 'push', 'stash', 'switch']);
+
+ private readonly disposables: IDisposable[] = [];
+
+ constructor(
+ private readonly model: Model,
+ private readonly logger: LogOutputChannel
+ ) {
+ window.onDidEndTerminalShellExecution(this.onDidEndTerminalShellExecution, this, this.disposables);
+ }
+
+ private onDidEndTerminalShellExecution(e: TerminalShellExecutionEndEvent): void {
+ const { execution, exitCode, shellIntegration } = e;
+ const [executable, subcommand] = execution.commandLine.value.split(/\s+/);
+ const cwd = execution.cwd ?? shellIntegration.cwd;
+
+ if (executable.toLowerCase() !== 'git' || !this.subcommands.has(subcommand?.toLowerCase()) || !cwd || exitCode !== 0) {
+ return;
+ }
+
+ this.logger.trace(`[TerminalShellExecutionManager][onDidEndTerminalShellExecution] Matched git subcommand: ${subcommand}`);
+
+ const repository = this.model.getRepository(cwd);
+ if (!repository) {
+ this.logger.trace(`[TerminalShellExecutionManager][onDidEndTerminalShellExecution] Unable to find repository for current working directory: ${cwd.toString()}`);
+ return;
+ }
+
+ repository.status();
+ }
+
+ dispose(): void {
+ dispose(this.disposables);
+ }
+}
diff --git a/extensions/git/src/util.ts b/extensions/git/src/util.ts
index eac6f0384b9..bf33411c3b3 100644
--- a/extensions/git/src/util.ts
+++ b/extensions/git/src/util.ts
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { Event, Disposable, EventEmitter } from 'vscode';
+import { Event, Disposable, EventEmitter, SourceControlHistoryItemRef } from 'vscode';
import { dirname, sep, relative } from 'path';
import { Readable } from 'stream';
import { promises as fs, createReadStream } from 'fs';
@@ -513,3 +513,58 @@ export namespace Versions {
return from(major, minor, patch, pre);
}
}
+
+export function deltaHistoryItemRefs(before: SourceControlHistoryItemRef[], after: SourceControlHistoryItemRef[]): {
+ added: SourceControlHistoryItemRef[];
+ modified: SourceControlHistoryItemRef[];
+ removed: SourceControlHistoryItemRef[];
+} {
+ if (before.length === 0) {
+ return { added: after, modified: [], removed: [] };
+ }
+
+ const added: SourceControlHistoryItemRef[] = [];
+ const modified: SourceControlHistoryItemRef[] = [];
+ const removed: SourceControlHistoryItemRef[] = [];
+
+ let beforeIdx = 0;
+ let afterIdx = 0;
+
+ while (true) {
+ if (beforeIdx === before.length) {
+ added.push(...after.slice(afterIdx));
+ break;
+ }
+ if (afterIdx === after.length) {
+ removed.push(...before.slice(beforeIdx));
+ break;
+ }
+
+ const beforeElement = before[beforeIdx];
+ const afterElement = after[afterIdx];
+
+ const result = beforeElement.id.localeCompare(afterElement.id);
+
+ if (result === 0) {
+ if (beforeElement.revision !== afterElement.revision) {
+ // modified
+ modified.push(afterElement);
+ }
+
+ beforeIdx += 1;
+ afterIdx += 1;
+ } else if (result < 0) {
+ // beforeElement is smaller -> before element removed
+ removed.push(beforeElement);
+
+ beforeIdx += 1;
+ } else if (result > 0) {
+ // beforeElement is greater -> after element added
+ added.push(afterElement);
+
+ afterIdx += 1;
+ }
+ }
+
+ return { added, modified, removed };
+}
diff --git a/extensions/git/tsconfig.json b/extensions/git/tsconfig.json
index 6ca99fecf1b..75fb8217df7 100644
--- a/extensions/git/tsconfig.json
+++ b/extensions/git/tsconfig.json
@@ -21,6 +21,7 @@
"../../src/vscode-dts/vscode.proposed.tabInputMultiDiff.d.ts",
"../../src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts",
"../../src/vscode-dts/vscode.proposed.timeline.d.ts",
+ "../../src/vscode-dts/vscode.proposed.quickInputButtonLocation.d.ts",
"../types/lib.textEncoder.d.ts"
]
}
diff --git a/extensions/git/yarn.lock b/extensions/git/yarn.lock
deleted file mode 100644
index 06023a61227..00000000000
--- a/extensions/git/yarn.lock
+++ /dev/null
@@ -1,264 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@joaomoreno/unique-names-generator@^5.1.0":
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/@joaomoreno/unique-names-generator/-/unique-names-generator-5.1.0.tgz#d577d425aed794c44c0e8863cddd5dea349f74f3"
- integrity sha512-KEVThTpUIKPb7dBKJ9mJ3WYnD1mJZZsEinCSp9CVEPlWbDagurFv1RKRjvvujrLfJzsGc0HkBHS9W8Bughao4A==
-
-"@microsoft/1ds-core-js@4.0.3", "@microsoft/1ds-core-js@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.0.3.tgz#c8a92c623745a9595e06558a866658480c33bdf9"
- integrity sha512-FrxNLVAPsAvD7+l63TlNS/Kodvpct2WulpDSn1dI4Xuy0kF4E2H867kHdwL/iY1Bj3zA3FSy/jvE4+OcDws7ug==
- dependencies:
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/1ds-post-js@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.0.3.tgz#cfcb20bb23fb6215d3f0732f60f5b7df3e624f86"
- integrity sha512-uewvmUtXKd7ttypiKQGdYI6i7UUpPkOznLayzIFrJ4r2xnG6jhPjpKRncHFXPQcM4XSWO3yf5PQ3xAbPq9t7ZQ==
- dependencies:
- "@microsoft/1ds-core-js" "4.0.3"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-channel-js@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.4.tgz#247b6fe2158fad9826cbcdf7304f885766b36624"
- integrity sha512-6TlfExmErQ8Y+/ChbkyWl+jyt4wg3T6p7lwXDsUCB0LgZmlEWMaCUS0YlT73JCWmE8j7vxW8yUm0lgsgmHns3A==
- dependencies:
- "@microsoft/applicationinsights-common" "3.0.4"
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-common@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.4.tgz#c4aa53ba343f5b3c7fbf54cddd3c86a5bdcd95dc"
- integrity sha512-r5gWaw/K9+tKfuo2GtDiDiKASgOkPOCrKW+wZzFvuR06uuwvWjbVQ6yW/YbnfuhRF5M65ksUiMi0eCMwEOGq7Q==
- dependencies:
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-core-js@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.4.tgz#008308b786930d94a1de8a1fbb4af0351b74653e"
- integrity sha512-anxy5kEkqBmVoEqJiJzaaXXA0wzqZi9U4zGd05xFJ04lWckP8dG3zyT3+GGdg7rDelqLTNGxndeYoFmDv63u1g==
- dependencies:
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-shims@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz#3865b73ace8405b9c4618cc5c571f2fe3876f06f"
- integrity sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==
- dependencies:
- "@nevware21/ts-utils" ">= 0.9.4 < 2.x"
-
-"@microsoft/applicationinsights-web-basic@^3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.4.tgz#9a23323276b4a5a0dc6a352e2de5d75e3c16b534"
- integrity sha512-KfoxPlLlf0JT12ADb23C5iGye/yFouoMgHEKULxkSQcYY9SsW/8rVrqqvoYKAL+u215CZU2A8Kc8sR3ehEaPCQ==
- dependencies:
- "@microsoft/applicationinsights-channel-js" "3.0.4"
- "@microsoft/applicationinsights-common" "3.0.4"
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/dynamicproto-js@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz#e57fbec2e7067d48b7e8e1e1c1d354028ef718a6"
- integrity sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==
- dependencies:
- "@nevware21/ts-utils" ">= 0.9.4 < 2.x"
-
-"@nevware21/ts-async@>= 0.3.0 < 2.x":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@nevware21/ts-async/-/ts-async-0.3.0.tgz#a8b97ba01065fc930de9a3f4dd4a05e862becc6c"
- integrity sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==
- dependencies:
- "@nevware21/ts-utils" ">= 0.10.0 < 2.x"
-
-"@nevware21/ts-utils@>= 0.10.0 < 2.x", "@nevware21/ts-utils@>= 0.10.1 < 2.x", "@nevware21/ts-utils@>= 0.9.4 < 2.x":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz#aa65abc71eba06749a396598f22263d26f796ac7"
- integrity sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg==
-
-"@tokenizer/token@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
- integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
-
-"@types/byline@4.2.31":
- version "4.2.31"
- resolved "https://registry.yarnpkg.com/@types/byline/-/byline-4.2.31.tgz#0e61fcb9c03e047d21c4496554c7116297ab60cd"
- integrity sha1-DmH8ucA+BH0hxEllVMcRYperYM0=
- dependencies:
- "@types/node" "*"
-
-"@types/mocha@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
- integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
-
-"@types/node@*":
- version "8.0.51"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb"
- integrity sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/picomatch@2.3.0":
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/@types/picomatch/-/picomatch-2.3.0.tgz#75db5e75a713c5a83d5b76780c3da84a82806003"
- integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==
-
-"@types/which@3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/which/-/which-3.0.0.tgz#849afdd9fdcb0b67339b9cfc80fa6ea4e0253fc5"
- integrity sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==
-
-"@vscode/extension-telemetry@^0.9.0":
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.9.0.tgz#8c6c61e253ff304f46045f04edd60059b144417a"
- integrity sha512-37RxGHXrs3GoXPgCUKQhghEu0gxs8j27RLjQwwtSf4WhPdJKz8UrqMYzpsXlliQ05zURYmtdGZst9C6+hfWXaQ==
- dependencies:
- "@microsoft/1ds-core-js" "^4.0.3"
- "@microsoft/1ds-post-js" "^4.0.3"
- "@microsoft/applicationinsights-web-basic" "^3.0.4"
-
-"@vscode/iconv-lite-umd@0.7.0":
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz#d2f1e0664ee6036408f9743fee264ea0699b0e48"
- integrity sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==
-
-byline@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
- integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=
-
-file-type@16.5.4:
- version "16.5.4"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd"
- integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==
- dependencies:
- readable-web-to-node-stream "^3.0.0"
- strtok3 "^6.2.4"
- token-types "^4.1.1"
-
-ieee754@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
-inherits@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-isexe@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d"
- integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==
-
-jschardet@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-3.1.2.tgz#9bf4364deba0677fe9e3bd9e29eda57febf2e9db"
- integrity sha512-mw3CBZGzW8nUBPYhFU2ztZ/kJ6NClQUQVpyzvFMfznZsoC///ZQ30J2RCUanNsr5yF22LqhgYr/lj807/ZleWA==
-
-peek-readable@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
- integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
-
-picomatch@2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-readable-stream@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readable-web-to-node-stream@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb"
- integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==
- dependencies:
- readable-stream "^3.6.0"
-
-safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-strtok3@^6.2.4:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0"
- integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==
- dependencies:
- "@tokenizer/token" "^0.3.0"
- peek-readable "^4.1.0"
-
-token-types@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.0.tgz#b66bc3d67420c6873222a424eee64a744f4c2f13"
- integrity sha512-P0rrp4wUpefLncNamWIef62J0v0kQR/GfDVji9WKY7GDCWy5YbVSrKUTam07iWPZQGy0zWNOfstYTykMmPNR7w==
- dependencies:
- "@tokenizer/token" "^0.3.0"
- ieee754 "^1.2.1"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-util-deprecate@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-vscode-uri@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.0.tgz#2df704222f72b8a71ff266ba0830ed6c51ac1542"
- integrity sha512-lWXWofDSYD8r/TIyu64MdwB4FaSirQ608PP/TzUyslyOeHGwQ0eTHUZeJrK1ILOmwUHaJtV693m2JoUYroUDpw==
-
-which@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a"
- integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==
- dependencies:
- isexe "^3.1.1"
diff --git a/extensions/github-authentication/.vscodeignore b/extensions/github-authentication/.vscodeignore
index f65bc15d839..0d0ea746e79 100644
--- a/extensions/github-authentication/.vscodeignore
+++ b/extensions/github-authentication/.vscodeignore
@@ -6,4 +6,4 @@ build/**
extension.webpack.config.js
extension-browser.webpack.config.js
tsconfig.json
-yarn.lock
+package-lock.json
diff --git a/extensions/github-authentication/package-lock.json b/extensions/github-authentication/package-lock.json
new file mode 100644
index 00000000000..c150fa7acc3
--- /dev/null
+++ b/extensions/github-authentication/package-lock.json
@@ -0,0 +1,300 @@
+{
+ "name": "github-authentication",
+ "version": "0.0.2",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "github-authentication",
+ "version": "0.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@vscode/extension-telemetry": "^0.9.0",
+ "node-fetch": "2.6.7",
+ "vscode-tas-client": "^0.1.84"
+ },
+ "devDependencies": {
+ "@types/mocha": "^9.1.1",
+ "@types/node": "20.x",
+ "@types/node-fetch": "^2.5.7"
+ },
+ "engines": {
+ "vscode": "^1.41.0"
+ }
+ },
+ "node_modules/@microsoft/1ds-core-js": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.0.3.tgz",
+ "integrity": "sha512-FrxNLVAPsAvD7+l63TlNS/Kodvpct2WulpDSn1dI4Xuy0kF4E2H867kHdwL/iY1Bj3zA3FSy/jvE4+OcDws7ug==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/1ds-post-js": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.0.3.tgz",
+ "integrity": "sha512-uewvmUtXKd7ttypiKQGdYI6i7UUpPkOznLayzIFrJ4r2xnG6jhPjpKRncHFXPQcM4XSWO3yf5PQ3xAbPq9t7ZQ==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "4.0.3",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-channel-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.4.tgz",
+ "integrity": "sha512-6TlfExmErQ8Y+/ChbkyWl+jyt4wg3T6p7lwXDsUCB0LgZmlEWMaCUS0YlT73JCWmE8j7vxW8yUm0lgsgmHns3A==",
+ "dependencies": {
+ "@microsoft/applicationinsights-common": "3.0.4",
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-common": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.4.tgz",
+ "integrity": "sha512-r5gWaw/K9+tKfuo2GtDiDiKASgOkPOCrKW+wZzFvuR06uuwvWjbVQ6yW/YbnfuhRF5M65ksUiMi0eCMwEOGq7Q==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.4.tgz",
+ "integrity": "sha512-anxy5kEkqBmVoEqJiJzaaXXA0wzqZi9U4zGd05xFJ04lWckP8dG3zyT3+GGdg7rDelqLTNGxndeYoFmDv63u1g==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-web-basic": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.4.tgz",
+ "integrity": "sha512-KfoxPlLlf0JT12ADb23C5iGye/yFouoMgHEKULxkSQcYY9SsW/8rVrqqvoYKAL+u215CZU2A8Kc8sR3ehEaPCQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-channel-js": "3.0.4",
+ "@microsoft/applicationinsights-common": "3.0.4",
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "node_modules/@types/mocha": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
+ "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz",
+ "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^3.0.0"
+ }
+ },
+ "node_modules/@vscode/extension-telemetry": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.9.0.tgz",
+ "integrity": "sha512-37RxGHXrs3GoXPgCUKQhghEu0gxs8j27RLjQwwtSf4WhPdJKz8UrqMYzpsXlliQ05zURYmtdGZst9C6+hfWXaQ==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "^4.0.3",
+ "@microsoft/1ds-post-js": "^4.0.3",
+ "@microsoft/applicationinsights-web-basic": "^3.0.4"
+ },
+ "engines": {
+ "vscode": "^1.75.0"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k= sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk= sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
+ "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.27",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.44.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tas-client": {
+ "version": "0.2.33",
+ "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz",
+ "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg=="
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/vscode-tas-client": {
+ "version": "0.1.84",
+ "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz",
+ "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==",
+ "dependencies": {
+ "tas-client": "0.2.33"
+ },
+ "engines": {
+ "vscode": "^1.85.0"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0= sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ }
+ }
+}
diff --git a/extensions/github-authentication/package.json b/extensions/github-authentication/package.json
index 2d2bea56277..7fcbc7f151c 100644
--- a/extensions/github-authentication/package.json
+++ b/extensions/github-authentication/package.json
@@ -38,7 +38,7 @@
"id": "github-enterprise"
}
],
- "configuration": {
+ "configuration": [{
"title": "GitHub Enterprise Server Authentication Provider",
"properties": {
"github-enterprise.uri": {
@@ -46,7 +46,17 @@
"description": "GitHub Enterprise Server URI"
}
}
+ },
+ {
+ "title": "GitHub Authentication",
+ "properties": {
+ "github.experimental.multipleAccounts": {
+ "type": "boolean",
+ "description": "Experimental support for multiple GitHub accounts"
+ }
+ }
}
+ ]
},
"aiKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255",
"main": "./out/extension.js",
diff --git a/extensions/github-authentication/src/flows.ts b/extensions/github-authentication/src/flows.ts
index 7498a2b2202..a2497b2b0b2 100644
--- a/extensions/github-authentication/src/flows.ts
+++ b/extensions/github-authentication/src/flows.ts
@@ -173,6 +173,8 @@ const allFlows: IFlow[] = [
]);
if (existingLogin) {
searchParams.append('login', existingLogin);
+ } else {
+ searchParams.append('prompt', 'select_account');
}
// The extra toString, parse is apparently needed for env.openExternal
@@ -240,6 +242,8 @@ const allFlows: IFlow[] = [
]);
if (existingLogin) {
searchParams.append('login', existingLogin);
+ } else {
+ searchParams.append('prompt', 'select_account');
}
const loginUrl = baseUri.with({
diff --git a/extensions/github-authentication/src/github.ts b/extensions/github-authentication/src/github.ts
index 15fe2ef04f8..231c793e6a4 100644
--- a/extensions/github-authentication/src/github.ts
+++ b/extensions/github-authentication/src/github.ts
@@ -18,7 +18,9 @@ interface SessionData {
account?: {
label?: string;
displayName?: string;
- id: string;
+ // Unfortunately, for some time the id was a number, so we need to support both.
+ // This can be removed once we are confident that all users have migrated to the new id.
+ id: string | number;
};
scopes: string[];
accessToken: string;
@@ -97,6 +99,7 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
private readonly _keychain: Keychain;
private readonly _accountsSeen = new Set();
private readonly _disposable: vscode.Disposable | undefined;
+ private _supportsMultipleAccounts = false;
private _sessionsPromise: Promise;
@@ -133,10 +136,24 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
return sessions;
});
+ this._supportsMultipleAccounts = vscode.workspace.getConfiguration('github.experimental').get('multipleAccounts', false);
+
this._disposable = vscode.Disposable.from(
this._telemetryReporter,
- vscode.authentication.registerAuthenticationProvider(type, this._githubServer.friendlyName, this, { supportsMultipleAccounts: false }),
- this.context.secrets.onDidChange(() => this.checkForUpdates())
+ vscode.authentication.registerAuthenticationProvider(type, this._githubServer.friendlyName, this, { supportsMultipleAccounts: this._supportsMultipleAccounts }),
+ this.context.secrets.onDidChange(() => this.checkForUpdates()),
+ vscode.workspace.onDidChangeConfiguration(async e => {
+ if (e.affectsConfiguration('github.experimental.multipleAccounts')) {
+ const newValue = vscode.workspace.getConfiguration('github.experimental').get('multipleAccounts', false);
+ if (newValue === this._supportsMultipleAccounts) {
+ return;
+ }
+ const result = await vscode.window.showInformationMessage(vscode.l10n.t('Please reload the window to apply the new setting.'), { modal: true }, vscode.l10n.t('Reload Window'));
+ if (result) {
+ vscode.commands.executeCommand('workbench.action.reloadWindow');
+ }
+ }
+ })
);
}
@@ -148,14 +165,17 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
return this._sessionChangeEmitter.event;
}
- async getSessions(scopes?: string[]): Promise {
+ async getSessions(scopes: string[] | undefined, options?: vscode.AuthenticationProviderSessionOptions): Promise {
// For GitHub scope list, order doesn't matter so we immediately sort the scopes
const sortedScopes = scopes?.sort() || [];
this._logger.info(`Getting sessions for ${sortedScopes.length ? sortedScopes.join(',') : 'all scopes'}...`);
const sessions = await this._sessionsPromise;
- const finalSessions = sortedScopes.length
- ? sessions.filter(session => arrayEquals([...session.scopes].sort(), sortedScopes))
+ const accountFilteredSessions = options?.account
+ ? sessions.filter(session => session.account.label === options.account?.label)
: sessions;
+ const finalSessions = sortedScopes.length
+ ? accountFilteredSessions.filter(session => arrayEquals([...session.scopes].sort(), sortedScopes))
+ : accountFilteredSessions;
this._logger.info(`Got ${finalSessions.length} sessions for ${sortedScopes?.join(',') ?? 'all scopes'}...`);
return finalSessions;
@@ -221,12 +241,17 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
return [];
}
+ // Unfortunately, we were using a number secretly for the account id for some time... this is due to a bad `any`.
+ // AuthenticationSession's account id is a string, so we need to detect when there is a number accountId and re-store
+ // the sessions to migrate away from the bad number usage.
+ // TODO@TylerLeonhardt: Remove this after we are confident that all users have migrated to the new id.
+ let seenNumberAccountId: boolean = false;
// TODO: eventually remove this Set because we should only have one session per set of scopes.
const scopesSeen = new Set();
- const sessionPromises = sessionData.map(async (session: SessionData) => {
+ const sessionPromises = sessionData.map(async (session: SessionData): Promise => {
// For GitHub scope list, order doesn't matter so we immediately sort the scopes
const scopesStr = [...session.scopes].sort().join(' ');
- if (scopesSeen.has(scopesStr)) {
+ if (!this._supportsMultipleAccounts && scopesSeen.has(scopesStr)) {
return undefined;
}
let userInfo: { id: string; accountName: string } | undefined;
@@ -244,13 +269,23 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
this._logger.trace(`Read the following session from the keychain with the following scopes: ${scopesStr}`);
scopesSeen.add(scopesStr);
+
+ let accountId: string;
+ if (session.account?.id) {
+ if (typeof session.account.id === 'number') {
+ seenNumberAccountId = true;
+ }
+ accountId = `${session.account.id}`;
+ } else {
+ accountId = userInfo?.id ?? '';
+ }
return {
id: session.id,
account: {
label: session.account
? session.account.label ?? session.account.displayName ?? ''
: userInfo?.accountName ?? '',
- id: session.account?.id ?? userInfo?.id ?? ''
+ id: accountId
},
// we set this to session.scopes to maintain the original order of the scopes requested
// by the extension that called getSession()
@@ -265,7 +300,7 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
.filter((p?: T): p is T => Boolean(p));
this._logger.info(`Got ${verifiedSessions.length} verified sessions.`);
- if (verifiedSessions.length !== sessionData.length) {
+ if (seenNumberAccountId || verifiedSessions.length !== sessionData.length) {
await this.storeSessions(verifiedSessions);
}
@@ -279,7 +314,7 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
this._logger.info(`Stored ${sessions.length} sessions!`);
}
- public async createSession(scopes: string[]): Promise {
+ public async createSession(scopes: string[], options?: vscode.AuthenticationProviderSessionOptions): Promise {
try {
// For GitHub scope list, order doesn't matter so we use a sorted scope to determine
// if we've got a session already.
@@ -298,14 +333,20 @@ export class GitHubAuthenticationProvider implements vscode.AuthenticationProvid
const sessions = await this._sessionsPromise;
- const accounts = new Set(sessions.map(session => session.account.label));
- const existingLogin = accounts.size <= 1 ? sessions[0]?.account.label : await vscode.window.showQuickPick([...accounts], { placeHolder: 'Choose an account that you would like to log in to' });
+ // First we use the account specified in the options, otherwise we use the first account we have to seed auth.
+ const loginWith = options?.account?.label ?? sessions[0]?.account.label;
+ this._logger.info(`Logging in with '${loginWith ? loginWith : 'any'}' account...`);
+
const scopeString = sortedScopes.join(' ');
- const token = await this._githubServer.login(scopeString, existingLogin);
+ const token = await this._githubServer.login(scopeString, loginWith);
const session = await this.tokenToSession(token, scopes);
this.afterSessionLoad(session);
- const sessionIndex = sessions.findIndex(s => s.id === session.id || arrayEquals([...s.scopes].sort(), sortedScopes));
+ const sessionIndex = sessions.findIndex(
+ this._supportsMultipleAccounts
+ ? s => s.account.id === session.account.id && arrayEquals([...s.scopes].sort(), sortedScopes)
+ : s => s.id === session.id || arrayEquals([...s.scopes].sort(), sortedScopes)
+ );
const removed = new Array();
if (sessionIndex > -1) {
removed.push(...sessions.splice(sessionIndex, 1, session));
diff --git a/extensions/github-authentication/src/githubServer.ts b/extensions/github-authentication/src/githubServer.ts
index af2cf22724f..a9f94ccf65d 100644
--- a/extensions/github-authentication/src/githubServer.ts
+++ b/extensions/github-authentication/src/githubServer.ts
@@ -197,7 +197,7 @@ export class GitHubServer implements IGitHubServer {
throw new Error(`${result.status} ${result.statusText}`);
}
} catch (e) {
- this._logger.warn('Failed to delete token from server.' + e.message ?? e);
+ this._logger.warn('Failed to delete token from server.' + (e.message ?? e));
}
}
@@ -228,9 +228,9 @@ export class GitHubServer implements IGitHubServer {
if (result.ok) {
try {
- const json = await result.json();
+ const json = await result.json() as { id: number; login: string };
this._logger.info('Got account info!');
- return { id: json.id, accountName: json.login };
+ return { id: `${json.id}`, accountName: json.login };
} catch (e) {
this._logger.error(`Unexpected error parsing response from GitHub: ${e.message ?? e}`);
throw e;
diff --git a/extensions/github-authentication/yarn.lock b/extensions/github-authentication/yarn.lock
deleted file mode 100644
index 8ef2192404a..00000000000
--- a/extensions/github-authentication/yarn.lock
+++ /dev/null
@@ -1,210 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@microsoft/1ds-core-js@4.0.3", "@microsoft/1ds-core-js@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.0.3.tgz#c8a92c623745a9595e06558a866658480c33bdf9"
- integrity sha512-FrxNLVAPsAvD7+l63TlNS/Kodvpct2WulpDSn1dI4Xuy0kF4E2H867kHdwL/iY1Bj3zA3FSy/jvE4+OcDws7ug==
- dependencies:
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/1ds-post-js@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.0.3.tgz#cfcb20bb23fb6215d3f0732f60f5b7df3e624f86"
- integrity sha512-uewvmUtXKd7ttypiKQGdYI6i7UUpPkOznLayzIFrJ4r2xnG6jhPjpKRncHFXPQcM4XSWO3yf5PQ3xAbPq9t7ZQ==
- dependencies:
- "@microsoft/1ds-core-js" "4.0.3"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-channel-js@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.4.tgz#247b6fe2158fad9826cbcdf7304f885766b36624"
- integrity sha512-6TlfExmErQ8Y+/ChbkyWl+jyt4wg3T6p7lwXDsUCB0LgZmlEWMaCUS0YlT73JCWmE8j7vxW8yUm0lgsgmHns3A==
- dependencies:
- "@microsoft/applicationinsights-common" "3.0.4"
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-common@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.4.tgz#c4aa53ba343f5b3c7fbf54cddd3c86a5bdcd95dc"
- integrity sha512-r5gWaw/K9+tKfuo2GtDiDiKASgOkPOCrKW+wZzFvuR06uuwvWjbVQ6yW/YbnfuhRF5M65ksUiMi0eCMwEOGq7Q==
- dependencies:
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-core-js@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.4.tgz#008308b786930d94a1de8a1fbb4af0351b74653e"
- integrity sha512-anxy5kEkqBmVoEqJiJzaaXXA0wzqZi9U4zGd05xFJ04lWckP8dG3zyT3+GGdg7rDelqLTNGxndeYoFmDv63u1g==
- dependencies:
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-shims@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz#3865b73ace8405b9c4618cc5c571f2fe3876f06f"
- integrity sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==
- dependencies:
- "@nevware21/ts-utils" ">= 0.9.4 < 2.x"
-
-"@microsoft/applicationinsights-web-basic@^3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.4.tgz#9a23323276b4a5a0dc6a352e2de5d75e3c16b534"
- integrity sha512-KfoxPlLlf0JT12ADb23C5iGye/yFouoMgHEKULxkSQcYY9SsW/8rVrqqvoYKAL+u215CZU2A8Kc8sR3ehEaPCQ==
- dependencies:
- "@microsoft/applicationinsights-channel-js" "3.0.4"
- "@microsoft/applicationinsights-common" "3.0.4"
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/dynamicproto-js@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz#e57fbec2e7067d48b7e8e1e1c1d354028ef718a6"
- integrity sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==
- dependencies:
- "@nevware21/ts-utils" ">= 0.9.4 < 2.x"
-
-"@nevware21/ts-async@>= 0.3.0 < 2.x":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@nevware21/ts-async/-/ts-async-0.3.0.tgz#a8b97ba01065fc930de9a3f4dd4a05e862becc6c"
- integrity sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==
- dependencies:
- "@nevware21/ts-utils" ">= 0.10.0 < 2.x"
-
-"@nevware21/ts-utils@>= 0.10.0 < 2.x", "@nevware21/ts-utils@>= 0.10.1 < 2.x", "@nevware21/ts-utils@>= 0.9.4 < 2.x":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz#aa65abc71eba06749a396598f22263d26f796ac7"
- integrity sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg==
-
-"@types/mocha@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
- integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
-
-"@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"
- integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==
- dependencies:
- "@types/node" "*"
- form-data "^3.0.0"
-
-"@types/node@*":
- version "14.0.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b"
- integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@vscode/extension-telemetry@^0.9.0":
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.9.0.tgz#8c6c61e253ff304f46045f04edd60059b144417a"
- integrity sha512-37RxGHXrs3GoXPgCUKQhghEu0gxs8j27RLjQwwtSf4WhPdJKz8UrqMYzpsXlliQ05zURYmtdGZst9C6+hfWXaQ==
- dependencies:
- "@microsoft/1ds-core-js" "^4.0.3"
- "@microsoft/1ds-post-js" "^4.0.3"
- "@microsoft/applicationinsights-web-basic" "^3.0.4"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-
-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"
-
-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=
-
-form-data@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
- integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-mime-db@1.44.0:
- version "1.44.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
- integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
-
-mime-types@^2.1.12:
- version "2.1.27"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
- integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
- dependencies:
- mime-db "1.44.0"
-
-node-fetch@2.6.7:
- version "2.6.7"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
- integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
- dependencies:
- whatwg-url "^5.0.0"
-
-tas-client@0.2.33:
- version "0.2.33"
- resolved "https://registry.yarnpkg.com/tas-client/-/tas-client-0.2.33.tgz#451bf114a8a64748030ce4068ab7d079958402e6"
- integrity sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg==
-
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-vscode-tas-client@^0.1.84:
- version "0.1.84"
- resolved "https://registry.yarnpkg.com/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz#906bdcfd8c9e1dc04321d6bc0335184f9119968e"
- integrity sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==
- dependencies:
- tas-client "0.2.33"
-
-webidl-conversions@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-
-whatwg-url@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
- dependencies:
- tr46 "~0.0.3"
- webidl-conversions "^3.0.0"
diff --git a/extensions/github/.vscodeignore b/extensions/github/.vscodeignore
index ed8fa3a7e38..24b1bd4e73a 100644
--- a/extensions/github/.vscodeignore
+++ b/extensions/github/.vscodeignore
@@ -4,4 +4,4 @@ out/**
build/**
extension.webpack.config.js
tsconfig.json
-yarn.lock
+package-lock.json
diff --git a/extensions/github/package-lock.json b/extensions/github/package-lock.json
new file mode 100644
index 00000000000..41de66d1a9b
--- /dev/null
+++ b/extensions/github/package-lock.json
@@ -0,0 +1,524 @@
+{
+ "name": "github",
+ "version": "0.0.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "github",
+ "version": "0.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@octokit/graphql": "5.0.5",
+ "@octokit/graphql-schema": "14.4.0",
+ "@octokit/rest": "19.0.4",
+ "@vscode/extension-telemetry": "^0.9.0",
+ "tunnel": "^0.0.6"
+ },
+ "devDependencies": {
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "^1.41.0"
+ }
+ },
+ "node_modules/@microsoft/1ds-core-js": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.0.3.tgz",
+ "integrity": "sha512-FrxNLVAPsAvD7+l63TlNS/Kodvpct2WulpDSn1dI4Xuy0kF4E2H867kHdwL/iY1Bj3zA3FSy/jvE4+OcDws7ug==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/1ds-post-js": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.0.3.tgz",
+ "integrity": "sha512-uewvmUtXKd7ttypiKQGdYI6i7UUpPkOznLayzIFrJ4r2xnG6jhPjpKRncHFXPQcM4XSWO3yf5PQ3xAbPq9t7ZQ==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "4.0.3",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-channel-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.4.tgz",
+ "integrity": "sha512-6TlfExmErQ8Y+/ChbkyWl+jyt4wg3T6p7lwXDsUCB0LgZmlEWMaCUS0YlT73JCWmE8j7vxW8yUm0lgsgmHns3A==",
+ "dependencies": {
+ "@microsoft/applicationinsights-common": "3.0.4",
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-common": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.4.tgz",
+ "integrity": "sha512-r5gWaw/K9+tKfuo2GtDiDiKASgOkPOCrKW+wZzFvuR06uuwvWjbVQ6yW/YbnfuhRF5M65ksUiMi0eCMwEOGq7Q==",
+ "dependencies": {
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-core-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.4.tgz",
+ "integrity": "sha512-anxy5kEkqBmVoEqJiJzaaXXA0wzqZi9U4zGd05xFJ04lWckP8dG3zyT3+GGdg7rDelqLTNGxndeYoFmDv63u1g==",
+ "dependencies": {
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-shims": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
+ "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@microsoft/applicationinsights-web-basic": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.4.tgz",
+ "integrity": "sha512-KfoxPlLlf0JT12ADb23C5iGye/yFouoMgHEKULxkSQcYY9SsW/8rVrqqvoYKAL+u215CZU2A8Kc8sR3ehEaPCQ==",
+ "dependencies": {
+ "@microsoft/applicationinsights-channel-js": "3.0.4",
+ "@microsoft/applicationinsights-common": "3.0.4",
+ "@microsoft/applicationinsights-core-js": "3.0.4",
+ "@microsoft/applicationinsights-shims": "3.0.1",
+ "@microsoft/dynamicproto-js": "^2.0.2",
+ "@nevware21/ts-async": ">= 0.3.0 < 2.x",
+ "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ },
+ "peerDependencies": {
+ "tslib": "*"
+ }
+ },
+ "node_modules/@microsoft/dynamicproto-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
+ "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-async": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.3.0.tgz",
+ "integrity": "sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==",
+ "dependencies": {
+ "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ }
+ },
+ "node_modules/@nevware21/ts-utils": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
+ "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.1.tgz",
+ "integrity": "sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==",
+ "dependencies": {
+ "@octokit/types": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/auth-token/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/auth-token/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.0.5.tgz",
+ "integrity": "sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==",
+ "dependencies": {
+ "@octokit/auth-token": "^3.0.0",
+ "@octokit/graphql": "^5.0.0",
+ "@octokit/request": "^6.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^7.0.0",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/core/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/core/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.1.tgz",
+ "integrity": "sha512-/wTXAJwt0HzJ2IeE4kQXO+mBScfzyCkI0hMtkIaqyXd9zg76OpOfNQfHL9FlaxAV2RsNiOXZibVWloy8EexENg==",
+ "dependencies": {
+ "@octokit/types": "^7.0.0",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/endpoint/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz",
+ "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==",
+ "dependencies": {
+ "@octokit/request": "^6.0.0",
+ "@octokit/types": "^9.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/graphql-schema": {
+ "version": "14.4.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql-schema/-/graphql-schema-14.4.0.tgz",
+ "integrity": "sha512-+O6/dsLlR6V9gv+t1lqsN+x73TLwyQWZpd3M8/eYnuny7VaznV9TAyUxf18tX8WBBS5IqtlLDk1nG+aSTPRZzQ==",
+ "dependencies": {
+ "graphql": "^16.0.0",
+ "graphql-tag": "^2.10.3"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "17.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.1.0.tgz",
+ "integrity": "sha512-rnI26BAITDZTo5vqFOmA7oX4xRd18rO+gcK4MiTpJmsRMxAw0JmevNjPsjpry1bb9SVNo56P/0kbiyXXa4QluA=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.2.0.tgz",
+ "integrity": "sha512-8otLCIK9esfmOCY14CBnG/xPqv0paf14rc+s9tHpbOpeFwrv5CnECKW1qdqMAT60ngAa9eB1bKQ+l2YCpi0HPQ==",
+ "dependencies": {
+ "@octokit/types": "^7.2.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=4"
+ }
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/plugin-request-log": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
+ "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.4.0.tgz",
+ "integrity": "sha512-YP4eUqZ6vORy/eZOTdil1ZSrMt0kv7i/CVw+HhC2C0yJN+IqTc/rot957JQ7JfyeJD6HZOjLg6Jp1o9cPhI9KA==",
+ "dependencies": {
+ "@octokit/types": "^7.2.0",
+ "deprecation": "^2.3.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.1.tgz",
+ "integrity": "sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==",
+ "dependencies": {
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^7.0.0",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.1.tgz",
+ "integrity": "sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==",
+ "dependencies": {
+ "@octokit/types": "^7.0.0",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/request-error/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/request/node_modules/@octokit/openapi-types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-13.6.0.tgz",
+ "integrity": "sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ=="
+ },
+ "node_modules/@octokit/request/node_modules/@octokit/types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-7.2.0.tgz",
+ "integrity": "sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^13.6.0"
+ }
+ },
+ "node_modules/@octokit/rest": {
+ "version": "19.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.4.tgz",
+ "integrity": "sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==",
+ "dependencies": {
+ "@octokit/core": "^4.0.0",
+ "@octokit/plugin-paginate-rest": "^4.0.0",
+ "@octokit/plugin-request-log": "^1.0.4",
+ "@octokit/plugin-rest-endpoint-methods": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.0.tgz",
+ "integrity": "sha512-xySzJG4noWrIBFyMu4lg4tu9vAgNg9S0aoLRONhAEz6ueyi1evBzb40HitIosaYS4XOexphG305IVcLrIX/30g==",
+ "dependencies": {
+ "@octokit/openapi-types": "^17.1.0"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@vscode/extension-telemetry": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-0.9.0.tgz",
+ "integrity": "sha512-37RxGHXrs3GoXPgCUKQhghEu0gxs8j27RLjQwwtSf4WhPdJKz8UrqMYzpsXlliQ05zURYmtdGZst9C6+hfWXaQ==",
+ "dependencies": {
+ "@microsoft/1ds-core-js": "^4.0.3",
+ "@microsoft/1ds-post-js": "^4.0.3",
+ "@microsoft/applicationinsights-web-basic": "^3.0.4"
+ },
+ "engines": {
+ "vscode": "^1.75.0"
+ }
+ },
+ "node_modules/before-after-hook": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
+ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
+ },
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
+ },
+ "node_modules/graphql": {
+ "version": "16.8.1",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz",
+ "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
+ "node_modules/graphql-tag": {
+ "version": "2.12.6",
+ "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz",
+ "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/universal-user-agent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0= sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ }
+ }
+}
diff --git a/extensions/github/yarn.lock b/extensions/github/yarn.lock
deleted file mode 100644
index 912a28439be..00000000000
--- a/extensions/github/yarn.lock
+++ /dev/null
@@ -1,326 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@microsoft/1ds-core-js@4.0.3", "@microsoft/1ds-core-js@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.0.3.tgz#c8a92c623745a9595e06558a866658480c33bdf9"
- integrity sha512-FrxNLVAPsAvD7+l63TlNS/Kodvpct2WulpDSn1dI4Xuy0kF4E2H867kHdwL/iY1Bj3zA3FSy/jvE4+OcDws7ug==
- dependencies:
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/1ds-post-js@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.0.3.tgz#cfcb20bb23fb6215d3f0732f60f5b7df3e624f86"
- integrity sha512-uewvmUtXKd7ttypiKQGdYI6i7UUpPkOznLayzIFrJ4r2xnG6jhPjpKRncHFXPQcM4XSWO3yf5PQ3xAbPq9t7ZQ==
- dependencies:
- "@microsoft/1ds-core-js" "4.0.3"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-channel-js@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.4.tgz#247b6fe2158fad9826cbcdf7304f885766b36624"
- integrity sha512-6TlfExmErQ8Y+/ChbkyWl+jyt4wg3T6p7lwXDsUCB0LgZmlEWMaCUS0YlT73JCWmE8j7vxW8yUm0lgsgmHns3A==
- dependencies:
- "@microsoft/applicationinsights-common" "3.0.4"
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-common@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.4.tgz#c4aa53ba343f5b3c7fbf54cddd3c86a5bdcd95dc"
- integrity sha512-r5gWaw/K9+tKfuo2GtDiDiKASgOkPOCrKW+wZzFvuR06uuwvWjbVQ6yW/YbnfuhRF5M65ksUiMi0eCMwEOGq7Q==
- dependencies:
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-core-js@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.4.tgz#008308b786930d94a1de8a1fbb4af0351b74653e"
- integrity sha512-anxy5kEkqBmVoEqJiJzaaXXA0wzqZi9U4zGd05xFJ04lWckP8dG3zyT3+GGdg7rDelqLTNGxndeYoFmDv63u1g==
- dependencies:
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/applicationinsights-shims@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz#3865b73ace8405b9c4618cc5c571f2fe3876f06f"
- integrity sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==
- dependencies:
- "@nevware21/ts-utils" ">= 0.9.4 < 2.x"
-
-"@microsoft/applicationinsights-web-basic@^3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.0.4.tgz#9a23323276b4a5a0dc6a352e2de5d75e3c16b534"
- integrity sha512-KfoxPlLlf0JT12ADb23C5iGye/yFouoMgHEKULxkSQcYY9SsW/8rVrqqvoYKAL+u215CZU2A8Kc8sR3ehEaPCQ==
- dependencies:
- "@microsoft/applicationinsights-channel-js" "3.0.4"
- "@microsoft/applicationinsights-common" "3.0.4"
- "@microsoft/applicationinsights-core-js" "3.0.4"
- "@microsoft/applicationinsights-shims" "3.0.1"
- "@microsoft/dynamicproto-js" "^2.0.2"
- "@nevware21/ts-async" ">= 0.3.0 < 2.x"
- "@nevware21/ts-utils" ">= 0.10.1 < 2.x"
-
-"@microsoft/dynamicproto-js@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz#e57fbec2e7067d48b7e8e1e1c1d354028ef718a6"
- integrity sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==
- dependencies:
- "@nevware21/ts-utils" ">= 0.9.4 < 2.x"
-
-"@nevware21/ts-async@>= 0.3.0 < 2.x":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@nevware21/ts-async/-/ts-async-0.3.0.tgz#a8b97ba01065fc930de9a3f4dd4a05e862becc6c"
- integrity sha512-ZUcgUH12LN/F6nzN0cYd0F/rJaMLmXr0EHVTyYfaYmK55bdwE4338uue4UiVoRqHVqNW4KDUrJc49iGogHKeWA==
- dependencies:
- "@nevware21/ts-utils" ">= 0.10.0 < 2.x"
-
-"@nevware21/ts-utils@>= 0.10.0 < 2.x", "@nevware21/ts-utils@>= 0.10.1 < 2.x", "@nevware21/ts-utils@>= 0.9.4 < 2.x":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz#aa65abc71eba06749a396598f22263d26f796ac7"
- integrity sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg==
-
-"@octokit/auth-token@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.1.tgz#88bc2baf5d706cb258474e722a720a8365dff2ec"
- integrity sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==
- dependencies:
- "@octokit/types" "^7.0.0"
-
-"@octokit/core@^4.0.0":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.0.5.tgz#589e68c0a35d2afdcd41dafceab072c2fbc6ab5f"
- integrity sha512-4R3HeHTYVHCfzSAi0C6pbGXV8UDI5Rk+k3G7kLVNckswN9mvpOzW9oENfjfH3nEmzg8y3AmKmzs8Sg6pLCeOCA==
- dependencies:
- "@octokit/auth-token" "^3.0.0"
- "@octokit/graphql" "^5.0.0"
- "@octokit/request" "^6.0.0"
- "@octokit/request-error" "^3.0.0"
- "@octokit/types" "^7.0.0"
- before-after-hook "^2.2.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/endpoint@^7.0.0":
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.1.tgz#cb0d03e62e8762f3c80e52b025179de81899a823"
- integrity sha512-/wTXAJwt0HzJ2IeE4kQXO+mBScfzyCkI0hMtkIaqyXd9zg76OpOfNQfHL9FlaxAV2RsNiOXZibVWloy8EexENg==
- dependencies:
- "@octokit/types" "^7.0.0"
- is-plain-object "^5.0.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/graphql-schema@14.4.0":
- version "14.4.0"
- resolved "https://registry.yarnpkg.com/@octokit/graphql-schema/-/graphql-schema-14.4.0.tgz#9336f64c3103a2e82ee3ce060c3ccf99d177d7f0"
- integrity sha512-+O6/dsLlR6V9gv+t1lqsN+x73TLwyQWZpd3M8/eYnuny7VaznV9TAyUxf18tX8WBBS5IqtlLDk1nG+aSTPRZzQ==
- dependencies:
- graphql "^16.0.0"
- graphql-tag "^2.10.3"
-
-"@octokit/graphql@5.0.5":
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2"
- integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==
- dependencies:
- "@octokit/request" "^6.0.0"
- "@octokit/types" "^9.0.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/graphql@^5.0.0":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.1.tgz#a06982514ad131fb6fbb9da968653b2233fade9b"
- integrity sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==
- dependencies:
- "@octokit/request" "^6.0.0"
- "@octokit/types" "^7.0.0"
- universal-user-agent "^6.0.0"
-
-"@octokit/openapi-types@^13.6.0":
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-13.6.0.tgz#381884008e23fd82fd444553f6b4dcd24a5c4a4d"
- integrity sha512-bxftLwoZ2J6zsU1rzRvk0O32j7lVB0NWWn+P5CDHn9zPzytasR3hdAeXlTngRDkqv1LyEeuy5psVnDkmOSwrcQ==
-
-"@octokit/openapi-types@^17.1.0":
- version "17.1.0"
- resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-17.1.0.tgz#9a712b5bb9d644940d8a1f24115c798c317a64a5"
- integrity sha512-rnI26BAITDZTo5vqFOmA7oX4xRd18rO+gcK4MiTpJmsRMxAw0JmevNjPsjpry1bb9SVNo56P/0kbiyXXa4QluA==
-
-"@octokit/plugin-paginate-rest@^4.0.0":
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.2.0.tgz#41fc6ca312446a85a4275aca698b4d9c4c5e06ab"
- integrity sha512-8otLCIK9esfmOCY14CBnG/xPqv0paf14rc+s9tHpbOpeFwrv5CnECKW1qdqMAT60ngAa9eB1bKQ+l2YCpi0HPQ==
- dependencies:
- "@octokit/types" "^7.2.0"
-
-"@octokit/plugin-request-log@^1.0.4":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
- integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
-
-"@octokit/plugin-rest-endpoint-methods@^6.0.0":
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.4.0.tgz#09584dd4e85fc4fe04ade45620b105af582c20ba"
- integrity sha512-YP4eUqZ6vORy/eZOTdil1ZSrMt0kv7i/CVw+HhC2C0yJN+IqTc/rot957JQ7JfyeJD6HZOjLg6Jp1o9cPhI9KA==
- dependencies:
- "@octokit/types" "^7.2.0"
- deprecation "^2.3.1"
-
-"@octokit/request-error@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.1.tgz#3fd747913c06ab2195e52004a521889dadb4b295"
- integrity sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==
- dependencies:
- "@octokit/types" "^7.0.0"
- deprecation "^2.0.0"
- once "^1.4.0"
-
-"@octokit/request@^6.0.0":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.1.tgz#3ceeb22dab09a29595d96594b6720fc14495cf4e"
- integrity sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==
- dependencies:
- "@octokit/endpoint" "^7.0.0"
- "@octokit/request-error" "^3.0.0"
- "@octokit/types" "^7.0.0"
- is-plain-object "^5.0.0"
- node-fetch "^2.6.7"
- universal-user-agent "^6.0.0"
-
-"@octokit/rest@19.0.4":
- version "19.0.4"
- resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.4.tgz#fd8bed1cefffa486e9ae46a9dc608ce81bcfcbdd"
- integrity sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA==
- dependencies:
- "@octokit/core" "^4.0.0"
- "@octokit/plugin-paginate-rest" "^4.0.0"
- "@octokit/plugin-request-log" "^1.0.4"
- "@octokit/plugin-rest-endpoint-methods" "^6.0.0"
-
-"@octokit/types@^7.0.0", "@octokit/types@^7.2.0":
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-7.2.0.tgz#7ee0fc27f9f463d7ccf12ca5956988d498b3c6c4"
- integrity sha512-pYQ/a1U6mHptwhGyp6SvsiM4bWP2s3V95olUeTxas85D/2kN78yN5C8cGN+P4LwJSWUqIEyvq0Qn2WUn6NQRjw==
- dependencies:
- "@octokit/openapi-types" "^13.6.0"
-
-"@octokit/types@^9.0.0":
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.2.0.tgz#0358e3de070b1d43c5a8af63b9951c88a09fc9ed"
- integrity sha512-xySzJG4noWrIBFyMu4lg4tu9vAgNg9S0aoLRONhAEz6ueyi1evBzb40HitIosaYS4XOexphG305IVcLrIX/30g==
- dependencies:
- "@octokit/openapi-types" "^17.1.0"
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-"@vscode/extension-telemetry@^0.9.0":
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/@vscode/extension-telemetry/-/extension-telemetry-0.9.0.tgz#8c6c61e253ff304f46045f04edd60059b144417a"
- integrity sha512-37RxGHXrs3GoXPgCUKQhghEu0gxs8j27RLjQwwtSf4WhPdJKz8UrqMYzpsXlliQ05zURYmtdGZst9C6+hfWXaQ==
- dependencies:
- "@microsoft/1ds-core-js" "^4.0.3"
- "@microsoft/1ds-post-js" "^4.0.3"
- "@microsoft/applicationinsights-web-basic" "^3.0.4"
-
-before-after-hook@^2.2.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
- integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
-
-deprecation@^2.0.0, deprecation@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
- integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
-
-graphql-tag@^2.10.3:
- version "2.12.6"
- resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1"
- integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==
- dependencies:
- tslib "^2.1.0"
-
-graphql@^16.0.0:
- version "16.8.1"
- resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07"
- integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==
-
-is-plain-object@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
- integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
-
-node-fetch@^2.6.7:
- version "2.6.7"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
- integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
- dependencies:
- whatwg-url "^5.0.0"
-
-once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-
-tslib@^2.1.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
- integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
-
-tunnel@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
- integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-universal-user-agent@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
- integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
-
-webidl-conversions@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-
-whatwg-url@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
- dependencies:
- tr46 "~0.0.3"
- webidl-conversions "^3.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
diff --git a/extensions/go/cgmanifest.json b/extensions/go/cgmanifest.json
index d27352e1339..39db8ac979f 100644
--- a/extensions/go/cgmanifest.json
+++ b/extensions/go/cgmanifest.json
@@ -6,12 +6,12 @@
"git": {
"name": "go-syntax",
"repositoryUrl": "https://github.com/worlpaker/go-syntax",
- "commitHash": "092c45ec9a51fe40188408d1371f123eaa4796fa"
+ "commitHash": "b40fb01f2cf48bc24e6f4030373311b0402b158e"
}
},
"license": "MIT",
"description": "The file syntaxes/go.tmLanguage.json is from https://github.com/worlpaker/go-syntax, which in turn was derived from https://github.com/jeff-hykin/better-go-syntax.",
- "version": "0.6.8"
+ "version": "0.7.6"
}
],
"version": 1
diff --git a/extensions/go/syntaxes/go.tmLanguage.json b/extensions/go/syntaxes/go.tmLanguage.json
index 21b370514d0..bc56a1b97ee 100644
--- a/extensions/go/syntaxes/go.tmLanguage.json
+++ b/extensions/go/syntaxes/go.tmLanguage.json
@@ -4,7 +4,7 @@
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
- "version": "https://github.com/worlpaker/go-syntax/commit/092c45ec9a51fe40188408d1371f123eaa4796fa",
+ "version": "https://github.com/worlpaker/go-syntax/commit/b40fb01f2cf48bc24e6f4030373311b0402b158e",
"name": "Go",
"scopeName": "source.go",
"patterns": [
@@ -321,7 +321,7 @@
"name": "punctuation.definition.begin.bracket.square.go"
}
},
- "end": "(?:(\\])((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?!(?:[\\[\\]\\*]+)?\\b(?:func|struct|map)\\b)(?:[\\*\\[\\]]+)?(?:[\\w\\.]+))?)",
+ "end": "(?:(\\])((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?!(?:[\\[\\]\\*]+)?\\b(?:func|struct|map)\\b)(?:[\\*\\[\\]]+)?(?:[\\w\\.]+)(?:\\[(?:(?:[\\w\\.\\*\\[\\]\\{\\}]+)(?:(?:\\,\\s*(?:[\\w\\.\\*\\[\\]\\{\\}]+))*))?\\])?)?)",
"endCaptures": {
"1": {
"name": "punctuation.definition.end.bracket.square.go"
@@ -1845,7 +1845,7 @@
},
{
"comment": "one type only",
- "match": "(?:((?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?\\|\\&]+))(\\.\\(\\btype\\b\\)\\s*)(\\{)",
"beginCaptures": {
"1": {
"patterns": [
@@ -2770,7 +2773,7 @@
},
"slice_index_variables": {
"comment": "slice index and capacity variables, to not scope them as property variables",
- "match": "(?<=\\w\\[)((?:(?:\\b[\\w\\.\\*\\+/\\-\\*\\%\\<\\>\\|\\&]+\\:)|(?:\\:\\b[\\w\\.\\*\\+/\\-\\*\\%\\<\\>\\|\\&]+))(?:\\b[\\w\\.\\*\\+/\\-\\*\\%\\<\\>\\|\\&]+)?(?:\\:\\b[\\w\\.\\*\\+/\\-\\*\\%\\<\\>\\|\\&]+)?)(?=\\])",
+ "match": "(?<=\\w\\[)((?:(?:\\b[\\w\\.\\*\\+/\\-\\%\\<\\>\\|\\&]+\\:)|(?:\\:\\b[\\w\\.\\*\\+/\\-\\%\\<\\>\\|\\&]+))(?:\\b[\\w\\.\\*\\+/\\-\\%\\<\\>\\|\\&]+)?(?:\\:\\b[\\w\\.\\*\\+/\\-\\%\\<\\>\\|\\&]+)?)(?=\\])",
"captures": {
"1": {
"patterns": [
@@ -2786,8 +2789,8 @@
}
},
"property_variables": {
- "comment": "Property variables in struct | parameter field in struct initialization",
- "match": "(?:(?:((?:\\b[\\w\\.]+)(?:\\:(?!\\=))))(?:(?:\\s*([\\w\\.\\*\\&\\[\\]]+)(\\.\\w+)(?![\\w\\.\\*\\&\\[\\]]*(?:\\{|\\()))((?:\\s*(?:\\<|\\>|\\<\\=|\\>\\=|\\=\\=|\\!\\=|\\|\\||\\&\\&|\\+|/|\\-|\\*|\\%|\\||\\&)\\s*(?:[\\w\\.\\*\\&\\[\\]]+)(?:\\.\\w+)(?![\\w\\.\\*\\&\\[\\]]*(?:\\{|\\()))*))?)",
+ "comment": "Property variables in struct",
+ "match": "((?:\\b[\\w\\.]+)(?:\\:(?!\\=)))",
"captures": {
"1": {
"patterns": [
@@ -2799,68 +2802,6 @@
"name": "variable.other.property.go"
}
]
- },
- "2": {
- "patterns": [
- {
- "include": "#type-declarations"
- },
- {
- "match": "\\w+",
- "name": "variable.other.go"
- },
- {
- "include": "$self"
- }
- ]
- },
- "3": {
- "patterns": [
- {
- "include": "#type-declarations"
- },
- {
- "match": "\\w+",
- "name": "variable.other.property.field.go"
- },
- {
- "include": "$self"
- }
- ]
- },
- "4": {
- "patterns": [
- {
- "match": "([\\w\\.\\*\\&\\[\\]]+)(\\.\\w+)",
- "captures": {
- "1": {
- "patterns": [
- {
- "include": "#type-declarations"
- },
- {
- "match": "\\w+",
- "name": "variable.other.go"
- }
- ]
- },
- "2": {
- "patterns": [
- {
- "include": "#type-declarations"
- },
- {
- "match": "\\w+",
- "name": "variable.other.property.field.go"
- }
- ]
- }
- }
- },
- {
- "include": "$self"
- }
- ]
}
}
},
@@ -2931,13 +2872,16 @@
},
"2": {
"patterns": [
- {
- "include": "#type-declarations"
- },
{
"match": "\\binvalid\\b\\s+\\btype\\b",
"name": "invalid.field.go"
},
+ {
+ "include": "#type-declarations-without-brackets"
+ },
+ {
+ "include": "#parameter-variable-types"
+ },
{
"match": "\\w+",
"name": "entity.name.type.go"
diff --git a/extensions/go/yarn.lock b/extensions/go/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/go/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/groovy/yarn.lock b/extensions/groovy/yarn.lock
deleted file mode 100644
index fb57ccd13af..00000000000
--- a/extensions/groovy/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/extensions/grunt/.vscodeignore b/extensions/grunt/.vscodeignore
index 9d384dd9061..698898bf9df 100644
--- a/extensions/grunt/.vscodeignore
+++ b/extensions/grunt/.vscodeignore
@@ -3,4 +3,4 @@ src/**
tsconfig.json
out/**
extension.webpack.config.js
-yarn.lock
\ No newline at end of file
+package-lock.json
diff --git a/extensions/grunt/package-lock.json b/extensions/grunt/package-lock.json
new file mode 100644
index 00000000000..f0431ef8c85
--- /dev/null
+++ b/extensions/grunt/package-lock.json
@@ -0,0 +1,34 @@
+{
+ "name": "grunt",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "grunt",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ }
+ }
+}
diff --git a/extensions/grunt/src/main.ts b/extensions/grunt/src/main.ts
index 886e7e27e71..fd99ba335c4 100644
--- a/extensions/grunt/src/main.ts
+++ b/extensions/grunt/src/main.ts
@@ -316,7 +316,7 @@ class TaskDetector {
if (this.detectors.size === 0) {
return Promise.resolve([]);
} else if (this.detectors.size === 1) {
- return this.detectors.values().next().value.getTasks();
+ return this.detectors.values().next().value!.getTasks();
} else {
const promises: Promise[] = [];
for (const detector of this.detectors.values()) {
@@ -338,7 +338,7 @@ class TaskDetector {
if (this.detectors.size === 0) {
return undefined;
} else if (this.detectors.size === 1) {
- return this.detectors.values().next().value.getTask(task);
+ return this.detectors.values().next().value!.getTask(task);
} else {
if ((task.scope === vscode.TaskScope.Workspace) || (task.scope === vscode.TaskScope.Global)) {
return undefined;
diff --git a/extensions/grunt/yarn.lock b/extensions/grunt/yarn.lock
deleted file mode 100644
index 1f4b6c2e8b4..00000000000
--- a/extensions/grunt/yarn.lock
+++ /dev/null
@@ -1,15 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@types/node@20.x":
- version "20.11.24"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.24.tgz#cc207511104694e84e9fb17f9a0c4c42d4517792"
- integrity sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==
- dependencies:
- undici-types "~5.26.4"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
diff --git a/extensions/gulp/.vscodeignore b/extensions/gulp/.vscodeignore
index 36e8b0714fa..360fcfd1c99 100644
--- a/extensions/gulp/.vscodeignore
+++ b/extensions/gulp/.vscodeignore
@@ -2,4 +2,4 @@ src/**
tsconfig.json
out/**
extension.webpack.config.js
-yarn.lock
\ No newline at end of file
+package-lock.json
diff --git a/extensions/gulp/package-lock.json b/extensions/gulp/package-lock.json
new file mode 100644
index 00000000000..9311609f962
--- /dev/null
+++ b/extensions/gulp/package-lock.json
@@ -0,0 +1,34 @@
+{
+ "name": "gulp",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "gulp",
+ "version": "1.0.0",
+ "license": "MIT",
+ "devDependencies": {
+ "@types/node": "20.x"
+ },
+ "engines": {
+ "vscode": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ }
+ }
+}
diff --git a/extensions/gulp/src/main.ts b/extensions/gulp/src/main.ts
index 284175741a5..b0b85ca29b9 100644
--- a/extensions/gulp/src/main.ts
+++ b/extensions/gulp/src/main.ts
@@ -357,7 +357,7 @@ class TaskDetector {
if (this.detectors.size === 0) {
return Promise.resolve([]);
} else if (this.detectors.size === 1) {
- return this.detectors.values().next().value.getTasks();
+ return this.detectors.values().next().value!.getTasks();
} else {
const promises: Promise]