diff --git a/.devcontainer/README.md b/.devcontainer/README.md
index 3d1e15e5d55..19a85b4692d 100644
--- a/.devcontainer/README.md
+++ b/.devcontainer/README.md
@@ -99,7 +99,7 @@ Next, let's try debugging.
2. Go to your local VS Code client, and use the **Run / Debug** view to launch the **VS Code** configuration. (Typically the default, so you can likely just press F5).
- > **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../../.vscode/launch.json). However, running `./scripts/code.sh` first will set up Electron which will usually solve timeout issues.
+ > **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../.vscode/launch.json). However, running `./scripts/code.sh` first will set up Electron which will usually solve timeout issues.
3. After a bit, Code - OSS will appear with the debugger attached!
diff --git a/.eslint-plugin-local/code-import-patterns.ts b/.eslint-plugin-local/code-import-patterns.ts
index ed14fa35d5a..e4beb9a4738 100644
--- a/.eslint-plugin-local/code-import-patterns.ts
+++ b/.eslint-plugin-local/code-import-patterns.ts
@@ -18,7 +18,7 @@ interface ConditionalPattern {
interface RawImportPatternsConfig {
target: string;
- layer?: 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-utility' | 'electron-main';
+ layer?: 'common' | 'worker' | 'browser' | 'electron-browser' | 'node' | 'electron-utility' | 'electron-main';
test?: boolean;
restrictions: string | (string | ConditionalPattern)[];
}
@@ -80,7 +80,7 @@ export = new class implements eslint.Rule.RuleModule {
return this._optionsCache.get(options)!;
}
- type Layer = 'common' | 'worker' | 'browser' | 'electron-sandbox' | 'node' | 'electron-utility' | 'electron-main';
+ type Layer = 'common' | 'worker' | 'browser' | 'electron-browser' | 'node' | 'electron-utility' | 'electron-main';
interface ILayerRule {
layer: Layer;
@@ -98,7 +98,7 @@ export = new class implements eslint.Rule.RuleModule {
{ layer: 'common', deps: orSegment(['common']) },
{ layer: 'worker', deps: orSegment(['common', 'worker']) },
{ layer: 'browser', deps: orSegment(['common', 'browser']), isBrowser: true },
- { layer: 'electron-sandbox', deps: orSegment(['common', 'browser', 'electron-sandbox']), isBrowser: true },
+ { layer: 'electron-browser', deps: orSegment(['common', 'browser', 'electron-browser']), isBrowser: true },
{ layer: 'node', deps: orSegment(['common', 'node']), 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 },
diff --git a/.github/commands.json b/.github/commands.json
index 38da97915a2..57aeb77bd9f 100644
--- a/.github/commands.json
+++ b/.github/commands.json
@@ -538,5 +538,62 @@
"addLabel": "info-needed",
"removeLabel": "~confirmation-needed",
"comment": "Please diagnose the root cause of the issue by running the command `F1 > Help: Troubleshoot Issue` and following the instructions. Once you have done that, please update the issue with the results.\n\nHappy Coding!"
+ },
+ {
+ "type": "label",
+ "name": "~chat-rate-limiting",
+ "removeLabel": "~chat-rate-limiting",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "This issue is a duplicate of https://github.com/microsoft/vscode-copilot-release/issues/2627. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem."
+ },
+ {
+ "type": "label",
+ "name": "~chat-request-failed",
+ "removeLabel": "~chat-request-failed",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "This issue is a duplicate of https://github.com/microsoft/vscode-copilot-release/issues/4332. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem."
+ },
+ {
+ "type": "label",
+ "name": "~chat-rai-content-filters",
+ "removeLabel": "~chat-rai-content-filters",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "This issue is a duplicate of https://github.com/microsoft/vscode-copilot-release/issues/2625. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem."
+ },
+ {
+ "type": "label",
+ "name": "~chat-public-code-blocking",
+ "removeLabel": "~chat-public-code-blocking",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "This issue is a duplicate of https://github.com/microsoft/vscode-copilot-release/issues/2626. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem."
+ },
+ {
+ "type": "label",
+ "name": "~chat-lm-unavailable",
+ "removeLabel": "~chat-lm-unavailable",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "This issue is a duplicate of https://github.com/microsoft/vscode-copilot-release/issues/2116. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem."
+ },
+ {
+ "type": "label",
+ "name": "~chat-authentication",
+ "removeLabel": "~chat-authentication",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "Please look at the following meta issue: https://github.com/microsoft/vscode-copilot-release/issues/11078, if the bug you are experiencing is not there, please comment on this closed issue thread so we can re-open it.",
+ "assign": ["TylerLeonhardt"]
+ },
+ {
+ "type": "label",
+ "name": "~chat-no-response-returned",
+ "removeLabel": "~chat-no-response-returned",
+ "action": "close",
+ "reason": "not_planned",
+ "comment": "Please look at the following meta issue: https://github.com/microsoft/vscode-copilot-release/issues/7034. Please refer to that issue for updates and discussions. Feel free to open a new issue if you think this is a different problem."
}
]
diff --git a/.npmrc b/.npmrc
index 98fd4adc9e0..3d79d10ff8f 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,7 +1,8 @@
disturl="https://electronjs.org/headers"
target="35.5.1"
-ms_build_id="11708675"
+ms_build_id="11727614"
runtime="electron"
build_from_source="true"
legacy-peer-deps="true"
timeout=180000
+npm_config_node_gyp="node build/npm/gyp/node_modules/node-gyp/bin/node-gyp.js"
diff --git a/.vscode/launch.json b/.vscode/launch.json
index f922b5d9c80..6b95eed617f 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -254,6 +254,7 @@
"VSCODE_SKIP_PRELAUNCH": "1",
},
"cleanUp": "wholeBrowser",
+ "killBehavior": "polite",
"runtimeArgs": [
"--inspect-brk=5875",
"--no-cached-data",
diff --git a/.vscode/notebooks/api.github-issues b/.vscode/notebooks/api.github-issues
index cc9420281ed..ed5ae1cf8a2 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:\"May 2025\""
+ "value": "$REPO=repo:microsoft/vscode\n$MILESTONE=milestone:\"June 2025\""
},
{
"kind": 1,
diff --git a/build/.cachesalt b/build/.cachesalt
index 2d02e2ba768..a3213b850c3 100644
--- a/build/.cachesalt
+++ b/build/.cachesalt
@@ -1 +1 @@
-2025-05-14T16:33:46.494Z
+2025-06-09T07:16:15.626Z
diff --git a/build/buildfile.js b/build/buildfile.js
index b1ce1186d4e..b5e8f6e7e6c 100644
--- a/build/buildfile.js
+++ b/build/buildfile.js
@@ -18,7 +18,7 @@ exports.workerExtensionHost = createModuleDescription('vs/workbench/api/worker/e
exports.workerNotebook = createModuleDescription('vs/workbench/contrib/notebook/common/services/notebookWebWorkerMain');
exports.workerLanguageDetection = createModuleDescription('vs/workbench/services/languageDetection/browser/languageDetectionWebWorkerMain');
exports.workerLocalFileSearch = createModuleDescription('vs/workbench/services/search/worker/localFileSearchMain');
-exports.workerProfileAnalysis = createModuleDescription('vs/platform/profiling/electron-sandbox/profileAnalysisWorkerMain');
+exports.workerProfileAnalysis = createModuleDescription('vs/platform/profiling/electron-browser/profileAnalysisWorkerMain');
exports.workerOutputLinks = createModuleDescription('vs/workbench/contrib/output/common/outputLinkComputerMain');
exports.workerBackgroundTokenization = createModuleDescription('vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.workerMain');
@@ -43,7 +43,7 @@ exports.code = [
// 'vs/code/node/cli' is not included here because it comes in via ./src/cli.js
createModuleDescription('vs/code/node/cliProcessMain'),
createModuleDescription('vs/code/electron-utility/sharedProcess/sharedProcessMain'),
- createModuleDescription('vs/code/electron-sandbox/workbench/workbench'),
+ createModuleDescription('vs/code/electron-browser/workbench/workbench'),
createModuleDescription('vs/workbench/contrib/webview/browser/pre/service-worker')
];
diff --git a/build/checker/layersChecker.js b/build/checker/layersChecker.js
new file mode 100644
index 00000000000..b2e319b5ecb
--- /dev/null
+++ b/build/checker/layersChecker.js
@@ -0,0 +1,136 @@
+"use strict";
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const typescript_1 = __importDefault(require("typescript"));
+const fs_1 = require("fs");
+const path_1 = require("path");
+const minimatch_1 = require("minimatch");
+//
+// #############################################################################################
+//
+// A custom typescript checker for the specific task of detecting the use of certain types in a
+// layer that does not allow such use.
+//
+// Make changes to below RULES to lift certain files from these checks only if absolutely needed
+//
+// NOTE: Most layer checks are done via tsconfig..json files.
+//
+// #############################################################################################
+//
+// Types that are defined in a common layer but are known to be only
+// available in native environments should not be allowed in browser
+const NATIVE_TYPES = [
+ 'NativeParsedArgs',
+ 'INativeEnvironmentService',
+ 'AbstractNativeEnvironmentService',
+ 'INativeWindowConfiguration',
+ 'ICommonNativeHostService',
+ 'INativeHostService',
+ 'IMainProcessService',
+ 'INativeBrowserElementsService',
+];
+const RULES = [
+ // Tests: skip
+ {
+ target: '**/vs/**/test/**',
+ skip: true // -> skip all test files
+ },
+ // Common: vs/platform services that can access native types
+ {
+ target: `**/vs/platform/{${[
+ 'environment/common/*.ts',
+ 'window/common/window.ts',
+ 'native/common/native.ts',
+ 'native/common/nativeHostService.ts',
+ 'browserElements/common/browserElements.ts',
+ 'browserElements/common/nativeBrowserElementsService.ts'
+ ].join(',')}}`,
+ disallowedTypes: [ /* Ignore native types that are defined from here */],
+ },
+ // Common: vs/base/parts/sandbox/electron-browser/preload{,-aux}.ts
+ {
+ target: '**/vs/base/parts/sandbox/electron-browser/preload{,-aux}.ts',
+ disallowedTypes: NATIVE_TYPES,
+ },
+ // Common
+ {
+ target: '**/vs/**/common/**',
+ disallowedTypes: NATIVE_TYPES,
+ },
+ // Common
+ {
+ target: '**/vs/**/worker/**',
+ disallowedTypes: NATIVE_TYPES,
+ },
+ // Browser
+ {
+ target: '**/vs/**/browser/**',
+ disallowedTypes: NATIVE_TYPES,
+ },
+ // Electron (main, utility)
+ {
+ target: '**/vs/**/{electron-main,electron-utility}/**',
+ disallowedTypes: [
+ 'ipcMain' // not allowed, use validatedIpcMain instead
+ ]
+ }
+];
+const TS_CONFIG_PATH = (0, path_1.join)(__dirname, '../../', 'src', 'tsconfig.json');
+let hasErrors = false;
+function checkFile(program, sourceFile, rule) {
+ checkNode(sourceFile);
+ function checkNode(node) {
+ if (node.kind !== typescript_1.default.SyntaxKind.Identifier) {
+ return typescript_1.default.forEachChild(node, checkNode); // recurse down
+ }
+ const checker = program.getTypeChecker();
+ const symbol = checker.getSymbolAtLocation(node);
+ if (!symbol) {
+ return;
+ }
+ let text = symbol.getName();
+ let _parentSymbol = symbol;
+ while (_parentSymbol.parent) {
+ _parentSymbol = _parentSymbol.parent;
+ }
+ const parentSymbol = _parentSymbol;
+ text = parentSymbol.getName();
+ if (rule.disallowedTypes?.some(disallowed => disallowed === text)) {
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
+ console.log(`[build/checker/layersChecker.ts]: Reference to type '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1}). Learn more about our source code organization at https://github.com/microsoft/vscode/wiki/Source-Code-Organization.`);
+ hasErrors = true;
+ return;
+ }
+ }
+}
+function createProgram(tsconfigPath) {
+ const tsConfig = typescript_1.default.readConfigFile(tsconfigPath, typescript_1.default.sys.readFile);
+ const configHostParser = { fileExists: fs_1.existsSync, readDirectory: typescript_1.default.sys.readDirectory, readFile: file => (0, fs_1.readFileSync)(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
+ const tsConfigParsed = typescript_1.default.parseJsonConfigFileContent(tsConfig.config, configHostParser, (0, path_1.resolve)((0, path_1.dirname)(tsconfigPath)), { noEmit: true });
+ const compilerHost = typescript_1.default.createCompilerHost(tsConfigParsed.options, true);
+ return typescript_1.default.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
+}
+//
+// Create program and start checking
+//
+const program = createProgram(TS_CONFIG_PATH);
+for (const sourceFile of program.getSourceFiles()) {
+ for (const rule of RULES) {
+ if ((0, minimatch_1.match)([sourceFile.fileName], rule.target).length > 0) {
+ if (!rule.skip) {
+ checkFile(program, sourceFile, rule);
+ }
+ break;
+ }
+ }
+}
+if (hasErrors) {
+ process.exit(1);
+}
+//# sourceMappingURL=layersChecker.js.map
\ No newline at end of file
diff --git a/build/checker/layersChecker.ts b/build/checker/layersChecker.ts
new file mode 100644
index 00000000000..68e12e61c40
--- /dev/null
+++ b/build/checker/layersChecker.ts
@@ -0,0 +1,166 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import ts from 'typescript';
+import { readFileSync, existsSync } from 'fs';
+import { resolve, dirname, join } from 'path';
+import { match } from 'minimatch';
+
+//
+// #############################################################################################
+//
+// A custom typescript checker for the specific task of detecting the use of certain types in a
+// layer that does not allow such use.
+//
+// Make changes to below RULES to lift certain files from these checks only if absolutely needed
+//
+// NOTE: Most layer checks are done via tsconfig..json files.
+//
+// #############################################################################################
+//
+
+// Types that are defined in a common layer but are known to be only
+// available in native environments should not be allowed in browser
+const NATIVE_TYPES = [
+ 'NativeParsedArgs',
+ 'INativeEnvironmentService',
+ 'AbstractNativeEnvironmentService',
+ 'INativeWindowConfiguration',
+ 'ICommonNativeHostService',
+ 'INativeHostService',
+ 'IMainProcessService',
+ 'INativeBrowserElementsService',
+];
+
+const RULES: IRule[] = [
+
+ // Tests: skip
+ {
+ target: '**/vs/**/test/**',
+ skip: true // -> skip all test files
+ },
+
+ // Common: vs/platform services that can access native types
+ {
+ target: `**/vs/platform/{${[
+ 'environment/common/*.ts',
+ 'window/common/window.ts',
+ 'native/common/native.ts',
+ 'native/common/nativeHostService.ts',
+ 'browserElements/common/browserElements.ts',
+ 'browserElements/common/nativeBrowserElementsService.ts'
+ ].join(',')}}`,
+ disallowedTypes: [/* Ignore native types that are defined from here */],
+ },
+
+ // Common: vs/base/parts/sandbox/electron-browser/preload{,-aux}.ts
+ {
+ target: '**/vs/base/parts/sandbox/electron-browser/preload{,-aux}.ts',
+ disallowedTypes: NATIVE_TYPES,
+ },
+
+ // Common
+ {
+ target: '**/vs/**/common/**',
+ disallowedTypes: NATIVE_TYPES,
+ },
+
+ // Common
+ {
+ target: '**/vs/**/worker/**',
+ disallowedTypes: NATIVE_TYPES,
+ },
+
+ // Browser
+ {
+ target: '**/vs/**/browser/**',
+ disallowedTypes: NATIVE_TYPES,
+ },
+
+ // Electron (main, utility)
+ {
+ target: '**/vs/**/{electron-main,electron-utility}/**',
+ disallowedTypes: [
+ 'ipcMain' // not allowed, use validatedIpcMain instead
+ ]
+ }
+];
+
+const TS_CONFIG_PATH = join(__dirname, '../../', 'src', 'tsconfig.json');
+
+interface IRule {
+ target: string;
+ skip?: boolean;
+ disallowedTypes?: string[];
+}
+
+let hasErrors = false;
+
+function checkFile(program: ts.Program, sourceFile: ts.SourceFile, rule: IRule) {
+ checkNode(sourceFile);
+
+ function checkNode(node: ts.Node): void {
+ if (node.kind !== ts.SyntaxKind.Identifier) {
+ return ts.forEachChild(node, checkNode); // recurse down
+ }
+
+ const checker = program.getTypeChecker();
+ const symbol = checker.getSymbolAtLocation(node);
+
+ if (!symbol) {
+ return;
+ }
+
+ let text = symbol.getName();
+ let _parentSymbol: any = symbol;
+
+ while (_parentSymbol.parent) {
+ _parentSymbol = _parentSymbol.parent;
+ }
+
+ const parentSymbol = _parentSymbol as ts.Symbol;
+ text = parentSymbol.getName();
+
+ if (rule.disallowedTypes?.some(disallowed => disallowed === text)) {
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
+ console.log(`[build/checker/layersChecker.ts]: Reference to type '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1}). Learn more about our source code organization at https://github.com/microsoft/vscode/wiki/Source-Code-Organization.`);
+
+ hasErrors = true;
+ return;
+ }
+ }
+}
+
+function createProgram(tsconfigPath: string): ts.Program {
+ const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
+
+ const configHostParser: ts.ParseConfigHost = { fileExists: existsSync, readDirectory: ts.sys.readDirectory, readFile: file => readFileSync(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
+ const tsConfigParsed = ts.parseJsonConfigFileContent(tsConfig.config, configHostParser, resolve(dirname(tsconfigPath)), { noEmit: true });
+
+ const compilerHost = ts.createCompilerHost(tsConfigParsed.options, true);
+
+ return ts.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
+}
+
+//
+// Create program and start checking
+//
+const program = createProgram(TS_CONFIG_PATH);
+
+for (const sourceFile of program.getSourceFiles()) {
+ for (const rule of RULES) {
+ if (match([sourceFile.fileName], rule.target).length > 0) {
+ if (!rule.skip) {
+ checkFile(program, sourceFile, rule);
+ }
+
+ break;
+ }
+ }
+}
+
+if (hasErrors) {
+ process.exit(1);
+}
diff --git a/build/checker/tsconfig.browser.json b/build/checker/tsconfig.browser.json
new file mode 100644
index 00000000000..67868ef7575
--- /dev/null
+++ b/build/checker/tsconfig.browser.json
@@ -0,0 +1,29 @@
+{
+ "extends": "../../src/tsconfig.base.json",
+ "compilerOptions": {
+ "lib": [
+ "ES2022",
+ "DOM",
+ "DOM.Iterable"
+ ],
+ "types": [],
+ "noEmit": true,
+ "skipLibCheck": true
+ },
+ "include": [
+ "../../src/*.ts",
+ "../../src/**/common/**/*.ts",
+ "../../src/**/browser/**/*.ts",
+ "../../src/typings/*.d.ts",
+ "../../src/vs/monaco.d.ts",
+ "../../src/vscode-dts/vscode.proposed.*.d.ts",
+ "../../src/vscode-dts/vscode.d.ts",
+ "../../node_modules/@webgpu/types/dist/index.d.ts",
+ "../../node_modules/@types/trusted-types/index.d.ts",
+ "../../node_modules/@types/wicg-file-system-access/index.d.ts"
+ ],
+ "exclude": [
+ "../../src/**/test/**",
+ "../../src/**/fixtures/**"
+ ]
+}
diff --git a/build/checker/tsconfig.electron-browser.json b/build/checker/tsconfig.electron-browser.json
new file mode 100644
index 00000000000..2cbe3d3bd33
--- /dev/null
+++ b/build/checker/tsconfig.electron-browser.json
@@ -0,0 +1,21 @@
+{
+ "extends": "./tsconfig.browser.json",
+ "include": [
+ "../../src/**/common/**/*.ts",
+ "../../src/**/browser/**/*.ts",
+ "../../src/**/electron-browser/**/*.ts",
+ "../../src/typings/*.d.ts",
+ "../../src/vs/monaco.d.ts",
+ "../../src/vscode-dts/vscode.proposed.*.d.ts",
+ "../../src/vscode-dts/vscode.d.ts",
+ "../../node_modules/@webgpu/types/dist/index.d.ts",
+ "../../node_modules/@types/trusted-types/index.d.ts",
+ "../../node_modules/@types/wicg-file-system-access/index.d.ts"
+ ],
+ "exclude": [
+ "../../src/**/test/**",
+ "../../src/**/fixtures/**",
+ "../../src/vs/base/parts/sandbox/electron-browser/preload.ts", // Preload scripts for Electron sandbox
+ "../../src/vs/base/parts/sandbox/electron-browser/preload-aux.ts" // have limited access to node.js APIs
+ ]
+}
diff --git a/build/checker/tsconfig.electron-main.json b/build/checker/tsconfig.electron-main.json
new file mode 100644
index 00000000000..a275f65d9e5
--- /dev/null
+++ b/build/checker/tsconfig.electron-main.json
@@ -0,0 +1,17 @@
+{
+ "extends": "./tsconfig.node.json",
+ "include": [
+ "../../src/**/common/**/*.ts",
+ "../../src/**/node/**/*.ts",
+ "../../src/**/electron-main/**/*.ts",
+ "../../src/typings/*.d.ts",
+ "../../src/vs/monaco.d.ts",
+ "../../src/vscode-dts/vscode.proposed.*.d.ts",
+ "../../src/vscode-dts/vscode.d.ts",
+ "../../node_modules/@types/trusted-types/index.d.ts",
+ ],
+ "exclude": [
+ "../../src/**/test/**",
+ "../../src/**/fixtures/**",
+ ]
+}
diff --git a/build/checker/tsconfig.electron-utility.json b/build/checker/tsconfig.electron-utility.json
new file mode 100644
index 00000000000..25b33be427d
--- /dev/null
+++ b/build/checker/tsconfig.electron-utility.json
@@ -0,0 +1,17 @@
+{
+ "extends": "./tsconfig.node.json",
+ "include": [
+ "../../src/**/common/**/*.ts",
+ "../../src/**/node/**/*.ts",
+ "../../src/**/electron-utility/**/*.ts",
+ "../../src/typings/*.d.ts",
+ "../../src/vs/monaco.d.ts",
+ "../../src/vscode-dts/vscode.proposed.*.d.ts",
+ "../../src/vscode-dts/vscode.d.ts",
+ "../../node_modules/@types/trusted-types/index.d.ts",
+ ],
+ "exclude": [
+ "../../src/**/test/**",
+ "../../src/**/fixtures/**",
+ ]
+}
diff --git a/build/checker/tsconfig.node.json b/build/checker/tsconfig.node.json
new file mode 100644
index 00000000000..2e483136e08
--- /dev/null
+++ b/build/checker/tsconfig.node.json
@@ -0,0 +1,27 @@
+{
+ "extends": "../../src/tsconfig.base.json",
+ "compilerOptions": {
+ "lib": [
+ "ES2022"
+ ],
+ "types": [
+ "node"
+ ],
+ "noEmit": true,
+ "skipLibCheck": true
+ },
+ "include": [
+ "../../src/*.ts",
+ "../../src/**/common/**/*.ts",
+ "../../src/**/node/**/*.ts",
+ "../../src/typings/*.d.ts",
+ "../../src/vs/monaco.d.ts",
+ "../../src/vscode-dts/vscode.proposed.*.d.ts",
+ "../../src/vscode-dts/vscode.d.ts",
+ "../../node_modules/@types/trusted-types/index.d.ts",
+ ],
+ "exclude": [
+ "../../src/**/test/**",
+ "../../src/**/fixtures/**"
+ ]
+}
diff --git a/build/checker/tsconfig.worker.json b/build/checker/tsconfig.worker.json
new file mode 100644
index 00000000000..ebb919bf0f2
--- /dev/null
+++ b/build/checker/tsconfig.worker.json
@@ -0,0 +1,28 @@
+{
+ "extends": "../../src/tsconfig.base.json",
+ "compilerOptions": {
+ "lib": [
+ "ES2022",
+ "WebWorker",
+ "Webworker.Iterable",
+ "WebWorker.AsyncIterable"
+ ],
+ "types": [],
+ "noEmit": true,
+ "skipLibCheck": true
+ },
+ "include": [
+ "../../src/**/common/**/*.ts",
+ "../../src/**/worker/**/*.ts",
+ "../../src/typings/*.d.ts",
+ "../../src/vs/monaco.d.ts",
+ "../../src/vscode-dts/vscode.proposed.*.d.ts",
+ "../../src/vscode-dts/vscode.d.ts",
+ "../../node_modules/@types/trusted-types/index.d.ts",
+ "../../node_modules/@types/wicg-file-system-access/index.d.ts"
+ ],
+ "exclude": [
+ "../../src/**/test/**",
+ "../../src/**/fixtures/**"
+ ]
+}
diff --git a/build/filters.js b/build/filters.js
index 4f18bf6607a..035bd3ddb91 100644
--- a/build/filters.js
+++ b/build/filters.js
@@ -103,6 +103,7 @@ module.exports.indentationFilter = [
'!extensions/vscode-api-tests/testWorkspace2/**',
'!build/monaco/**',
'!build/win32/**',
+ '!build/checker/**',
// except multiple specific files
'!**/package.json',
diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
index c1d64c00338..ba9f0e46ff0 100644
--- a/build/gulpfile.reh.js
+++ b/build/gulpfile.reh.js
@@ -80,7 +80,7 @@ const serverResourceIncludes = [
];
const serverResourceExcludes = [
- '!out-build/vs/**/{electron-sandbox,electron-main,electron-utility}/**',
+ '!out-build/vs/**/{electron-browser,electron-main,electron-utility}/**',
'!out-build/vs/editor/standalone/**',
'!out-build/vs/workbench/**/*-tb.png',
'!**/test/**'
@@ -257,7 +257,7 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }))
.pipe(util.setExecutableBit(['**/*.sh']))
- .pipe(filter(['**', '!**/*.js.map']));
+ .pipe(filter(['**', '!**/*.{js,css}.map']));
const workspaceExtensionPoints = ['debuggers', 'jsonValidation'];
const isUIExtension = (manifest) => {
@@ -298,7 +298,7 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
const extensions = gulp.src(extensionPaths, { base: '.build', dot: true });
const extensionsCommonDependencies = gulp.src('.build/extensions/node_modules/**', { base: '.build', dot: true });
const sources = es.merge(src, extensions, extensionsCommonDependencies)
- .pipe(filter(['**', '!**/*.js.map'], { dot: true }));
+ .pipe(filter(['**', '!**/*.{js,css}.map'], { dot: true }));
let version = packageJson.version;
const quality = product.quality;
@@ -333,7 +333,7 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
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', '!**/*.js.map']))
+ .pipe(filter(['**', '!**/package-lock.json', '!**/*.{js,css}.map']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore')))
.pipe(util.cleanNodeModules(path.join(__dirname, `.moduleignore.${process.platform}`)))
.pipe(jsFilter)
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
index 2e5ef5277f8..f819cd6a1c2 100644
--- a/build/gulpfile.vscode.js
+++ b/build/gulpfile.vscode.js
@@ -57,11 +57,11 @@ const vscodeResourceIncludes = [
'out-build/nls.keys.json',
// Workbench
- 'out-build/vs/code/electron-sandbox/workbench/workbench.html',
+ 'out-build/vs/code/electron-browser/workbench/workbench.html',
// Electron Preload
- 'out-build/vs/base/parts/sandbox/electron-sandbox/preload.js',
- 'out-build/vs/base/parts/sandbox/electron-sandbox/preload-aux.js',
+ 'out-build/vs/base/parts/sandbox/electron-browser/preload.js',
+ 'out-build/vs/base/parts/sandbox/electron-browser/preload-aux.js',
// Node Scripts
'out-build/vs/base/node/{terminateProcess.sh,cpuUsage.sh,ps.sh}',
@@ -138,7 +138,7 @@ const bundleVSCodeTask = task.define('bundle-vscode', task.series(
...bootstrapEntryPoints
],
resources: vscodeResources,
- skipTSBoilerplateRemoval: entryPoint => entryPoint === 'vs/code/electron-sandbox/workbench/workbench'
+ skipTSBoilerplateRemoval: entryPoint => entryPoint === 'vs/code/electron-browser/workbench/workbench'
}
}
)
@@ -220,12 +220,12 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const out = sourceFolderName;
const checksums = computeChecksums(out, [
- 'vs/base/parts/sandbox/electron-sandbox/preload.js',
+ 'vs/base/parts/sandbox/electron-browser/preload.js',
'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',
- 'vs/code/electron-sandbox/workbench/workbench.js'
+ 'vs/code/electron-browser/workbench/workbench.html',
+ 'vs/code/electron-browser/workbench/workbench.js'
]);
const src = gulp.src(out + '/**', { base: '.' })
@@ -244,7 +244,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const extensions = gulp.src(['.build/extensions/**', ...platformSpecificBuiltInExtensionsExclusions], { base: '.build', dot: true });
const sources = es.merge(src, extensions)
- .pipe(filter(['**', '!**/*.js.map'], { dot: true }));
+ .pipe(filter(['**', '!**/*.{js,css}.map'], { dot: true }));
let version = packageJson.version;
const quality = product.quality;
@@ -289,7 +289,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const dependenciesSrc = productionDependencies.map(d => path.relative(root, d)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]).flat().concat('!**/*.mk');
const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
- .pipe(filter(['**', `!**/${config.version}/**`, '!**/bin/darwin-arm64-87/**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.js.map']))
+ .pipe(filter(['**', `!**/${config.version}/**`, '!**/bin/darwin-arm64-87/**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.{js,css}.map']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore')))
.pipe(util.cleanNodeModules(path.join(__dirname, `.moduleignore.${process.platform}`)))
.pipe(jsFilter)
diff --git a/build/gulpfile.vscode.web.js b/build/gulpfile.vscode.web.js
index e1072c1e665..08dfcfd0cd9 100644
--- a/build/gulpfile.vscode.web.js
+++ b/build/gulpfile.vscode.web.js
@@ -66,7 +66,7 @@ const vscodeWebResources = [
...vscodeWebResourceIncludes,
// Excludes
- '!out-build/vs/**/{node,electron-sandbox,electron-main,electron-utility}/**',
+ '!out-build/vs/**/{node,electron-browser,electron-main,electron-utility}/**',
'!out-build/vs/editor/standalone/**',
'!out-build/vs/workbench/**/*-tb.png',
'!out-build/vs/code/**/*-dev.html',
@@ -152,7 +152,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
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(src, extensions, loader)
- .pipe(filter(['**', '!**/*.js.map'], { dot: true }))
+ .pipe(filter(['**', '!**/*.{js,css}.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') {
diff --git a/build/lib/compilation.js b/build/lib/compilation.js
index 55fb148097c..f4202f8677a 100644
--- a/build/lib/compilation.js
+++ b/build/lib/compilation.js
@@ -59,7 +59,6 @@ const os_1 = __importDefault(require("os"));
const vinyl_1 = __importDefault(require("vinyl"));
const task = __importStar(require("./task"));
const index_1 = require("./mangle/index");
-const postcss_1 = require("./postcss");
const ts = require("typescript");
const watch = require('./watch');
// --- gulp-tsb: compile and transpile --------------------------------
@@ -96,14 +95,11 @@ function createCompile(src, { build, emitError, transpileOnly, preserveEnglish }
const tsFilter = util.filter(data => /\.ts$/.test(data.path));
const isUtf8Test = (f) => /(\/|\\)test(\/|\\).*utf8/.test(f.path);
const isRuntimeJs = (f) => f.path.endsWith('.js') && !f.path.includes('fixtures');
- const isCSS = (f) => f.path.endsWith('.css') && !f.path.includes('fixtures');
const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path)));
- const postcssNesting = require('postcss-nesting');
const input = event_stream_1.default.through();
const output = input
.pipe(util.$if(isUtf8Test, bom())) // this is required to preserve BOM in test files that loose it otherwise
.pipe(util.$if(!build && isRuntimeJs, util.appendOwnPathSourceURL()))
- .pipe(util.$if(isCSS, (0, postcss_1.gulpPostcss)([postcssNesting()], err => reporter(String(err)))))
.pipe(tsFilter)
.pipe(util.loadSourcemaps())
.pipe(compilation(token))
diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
index 625fc430a94..88f5237d820 100644
--- a/build/lib/compilation.ts
+++ b/build/lib/compilation.ts
@@ -18,7 +18,6 @@ import File from 'vinyl';
import * as task from './task';
import { Mangler } from './mangle/index';
import { RawSourceMap } from 'source-map';
-import { gulpPostcss } from './postcss';
import ts = require('typescript');
const watch = require('./watch');
@@ -72,16 +71,12 @@ export function createCompile(src: string, { build, emitError, transpileOnly, pr
const tsFilter = util.filter(data => /\.ts$/.test(data.path));
const isUtf8Test = (f: File) => /(\/|\\)test(\/|\\).*utf8/.test(f.path);
const isRuntimeJs = (f: File) => f.path.endsWith('.js') && !f.path.includes('fixtures');
- const isCSS = (f: File) => f.path.endsWith('.css') && !f.path.includes('fixtures');
const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path)));
- const postcssNesting = require('postcss-nesting');
-
const input = es.through();
const output = input
.pipe(util.$if(isUtf8Test, bom())) // this is required to preserve BOM in test files that loose it otherwise
.pipe(util.$if(!build && isRuntimeJs, util.appendOwnPathSourceURL()))
- .pipe(util.$if(isCSS, gulpPostcss([postcssNesting()], err => reporter(String(err)))))
.pipe(tsFilter)
.pipe(util.loadSourcemaps())
.pipe(compilation(token))
diff --git a/build/lib/layersChecker.js b/build/lib/layersChecker.js
deleted file mode 100644
index f916e9bf5b2..00000000000
--- a/build/lib/layersChecker.js
+++ /dev/null
@@ -1,343 +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.
- *--------------------------------------------------------------------------------------------*/
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const typescript_1 = __importDefault(require("typescript"));
-const fs_1 = require("fs");
-const path_1 = require("path");
-const minimatch_1 = require("minimatch");
-//
-// #############################################################################################
-//
-// A custom typescript checker for the specific task of detecting the use of certain types in a
-// layer that does not allow such use. For example:
-// - using DOM globals in common/node/electron-main layer (e.g. HTMLElement)
-// - using node.js globals in common/browser layer (e.g. process)
-//
-// Make changes to below RULES to lift certain files from these checks only if absolutely needed
-//
-// #############################################################################################
-//
-// Types we assume are present in all implementations of JS VMs (node.js, browsers)
-// Feel free to add more core types as you see needed if present in node.js and browsers
-const CORE_TYPES = [
- 'setTimeout',
- 'clearTimeout',
- 'setInterval',
- 'clearInterval',
- 'console',
- 'Console',
- 'Error',
- 'ErrorConstructor',
- 'String',
- 'TextDecoder',
- 'TextEncoder',
- 'self',
- 'queueMicrotask',
- 'Array',
- 'Uint8Array',
- 'Uint16Array',
- 'Uint32Array',
- 'Int8Array',
- 'Int16Array',
- 'Int32Array',
- 'Float32Array',
- 'Float64Array',
- 'Uint8ClampedArray',
- 'BigUint64Array',
- 'BigInt64Array',
- 'btoa',
- 'atob',
- 'AbortController',
- 'AbortSignal',
- 'MessageChannel',
- 'MessagePort',
- 'URL',
- 'URLSearchParams',
- 'ReadonlyArray',
- 'Event',
- 'EventTarget',
- 'BroadcastChannel',
- 'performance',
- 'Blob',
- 'crypto',
- 'File',
- 'fetch',
- 'RequestInit',
- 'Headers',
- 'Request',
- 'Response',
- 'Body',
- 'any',
- 'timeout',
- 'Performance',
- 'PerformanceMark',
- 'PerformanceObserver',
- 'ImportMeta',
- 'structuredClone',
- 'stackTraceLimit',
- 'captureStackTrace',
- // webcrypto has been available since Node.js 19, but still live in dom.d.ts
- 'Crypto',
- 'SubtleCrypto',
- 'JsonWebKey',
- 'MessageEvent',
- // node web types
- 'ReadableStream',
- 'ReadableStreamReadResult',
- 'ReadableStreamGenericReader',
- 'ReadableStreamDefaultReader',
- 'value',
- 'done',
- 'DOMException',
- 'WebSocket',
-];
-// Types that are defined in a common layer but are known to be only
-// available in native environments should not be allowed in browser
-const NATIVE_TYPES = [
- 'NativeParsedArgs',
- 'INativeEnvironmentService',
- 'AbstractNativeEnvironmentService',
- 'INativeWindowConfiguration',
- 'ICommonNativeHostService',
- 'INativeHostService',
- 'IMainProcessService',
- 'INativeBrowserElementsService',
-];
-const RULES = [
- // Tests: skip
- {
- target: '**/vs/**/test/**',
- skip: true // -> skip all test files
- },
- // Common: vs/base/common/async.ts
- {
- target: '**/vs/base/common/async.ts',
- allowedTypes: [
- ...CORE_TYPES,
- // Safe access to requestIdleCallback & cancelIdleCallback
- 'requestIdleCallback',
- 'cancelIdleCallback'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
- // Common: vs/base/common/performance.ts
- {
- target: '**/vs/base/common/performance.ts',
- allowedTypes: [
- ...CORE_TYPES,
- // Safe access to Performance
- 'Performance',
- 'PerformanceEntry',
- 'PerformanceTiming'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
- // Common: vs/platform services that can access native types
- {
- target: `**/vs/platform/{${[
- 'environment/common/*.ts',
- 'window/common/window.ts',
- 'native/common/native.ts',
- 'native/common/nativeHostService.ts',
- 'browserElements/common/browserElements.ts',
- 'browserElements/common/nativeBrowserElementsService.ts'
- ].join(',')}}`,
- allowedTypes: CORE_TYPES,
- disallowedTypes: [ /* Ignore native types that are defined from here */],
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
- // Common: vs/workbench/api/common/extHostExtensionService.ts
- {
- target: '**/vs/workbench/api/common/extHostExtensionService.ts',
- allowedTypes: [
- ...CORE_TYPES,
- // Safe access to global
- 'global'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
- // Common: vs/base/parts/sandbox/electron-sandbox/preload{,-aux}.ts
- {
- target: '**/vs/base/parts/sandbox/electron-sandbox/preload{,-aux}.ts',
- allowedTypes: [
- ...CORE_TYPES,
- // Safe access to a very small subset of node.js
- 'process',
- 'NodeJS',
- '__global'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // Common
- {
- target: '**/vs/**/common/**',
- allowedTypes: CORE_TYPES,
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
- // Browser
- {
- target: '**/vs/**/browser/**',
- allowedTypes: [
- ...CORE_TYPES,
- 'localStorage'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // Browser (editor contrib)
- {
- target: '**/src/vs/editor/contrib/**',
- allowedTypes: CORE_TYPES,
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // node.js
- {
- target: '**/vs/**/node/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts' // no DOM
- ]
- },
- // Electron (sandbox)
- {
- target: '**/vs/**/electron-sandbox/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // Electron (main, utility)
- {
- target: '**/vs/**/{electron-main,electron-utility}/**',
- allowedTypes: CORE_TYPES,
- disallowedTypes: [
- 'ipcMain' // not allowed, use validatedIpcMain instead
- ],
- disallowedDefinitions: [
- 'lib.dom.d.ts' // no DOM
- ]
- }
-];
-const TS_CONFIG_PATH = (0, path_1.join)(__dirname, '../../', 'src', 'tsconfig.json');
-let hasErrors = false;
-function checkFile(program, sourceFile, rule) {
- checkNode(sourceFile);
- function checkNode(node) {
- if (node.kind !== typescript_1.default.SyntaxKind.Identifier) {
- return typescript_1.default.forEachChild(node, checkNode); // recurse down
- }
- const checker = program.getTypeChecker();
- const symbol = checker.getSymbolAtLocation(node);
- if (!symbol) {
- return;
- }
- let text = symbol.getName();
- if (rule.allowedTypes?.some(allowed => allowed === text)) {
- return; // override
- }
- let _parentSymbol = symbol;
- while (_parentSymbol.parent) {
- _parentSymbol = _parentSymbol.parent;
- }
- const parentSymbol = _parentSymbol;
- text = parentSymbol.getName();
- if (rule.allowedTypes?.some(allowed => allowed === text)) {
- return; // override
- }
- if (rule.disallowedTypes?.some(disallowed => disallowed === text)) {
- const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
- console.log(`[build/lib/layersChecker.ts]: Reference to type '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1}). Learn more about our source code organization at https://github.com/microsoft/vscode/wiki/Source-Code-Organization.`);
- hasErrors = true;
- return;
- }
- const declarations = symbol.declarations;
- if (Array.isArray(declarations)) {
- DeclarationLoop: for (const declaration of declarations) {
- if (declaration) {
- const parent = declaration.parent;
- if (parent) {
- const parentSourceFile = parent.getSourceFile();
- if (parentSourceFile) {
- const definitionFileName = parentSourceFile.fileName;
- if (rule.allowedDefinitions) {
- for (const allowedDefinition of rule.allowedDefinitions) {
- if (definitionFileName.indexOf(allowedDefinition) >= 0) {
- continue DeclarationLoop;
- }
- }
- }
- if (rule.disallowedDefinitions) {
- for (const disallowedDefinition of rule.disallowedDefinitions) {
- if (definitionFileName.indexOf(disallowedDefinition) >= 0) {
- const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
- console.log(`[build/lib/layersChecker.ts]: Reference to symbol '${text}' from '${disallowedDefinition}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1}) Learn more about our source code organization at https://github.com/microsoft/vscode/wiki/Source-Code-Organization.`);
- hasErrors = true;
- return;
- }
- }
- }
- }
- }
- }
- }
- }
- }
-}
-function createProgram(tsconfigPath) {
- const tsConfig = typescript_1.default.readConfigFile(tsconfigPath, typescript_1.default.sys.readFile);
- const configHostParser = { fileExists: fs_1.existsSync, readDirectory: typescript_1.default.sys.readDirectory, readFile: file => (0, fs_1.readFileSync)(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
- const tsConfigParsed = typescript_1.default.parseJsonConfigFileContent(tsConfig.config, configHostParser, (0, path_1.resolve)((0, path_1.dirname)(tsconfigPath)), { noEmit: true });
- const compilerHost = typescript_1.default.createCompilerHost(tsConfigParsed.options, true);
- return typescript_1.default.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
-}
-//
-// Create program and start checking
-//
-const program = createProgram(TS_CONFIG_PATH);
-for (const sourceFile of program.getSourceFiles()) {
- for (const rule of RULES) {
- if ((0, minimatch_1.match)([sourceFile.fileName], rule.target).length > 0) {
- if (!rule.skip) {
- checkFile(program, sourceFile, rule);
- }
- break;
- }
- }
-}
-if (hasErrors) {
- process.exit(1);
-}
-//# sourceMappingURL=layersChecker.js.map
\ No newline at end of file
diff --git a/build/lib/layersChecker.ts b/build/lib/layersChecker.ts
deleted file mode 100644
index df3a3ef0e63..00000000000
--- a/build/lib/layersChecker.ts
+++ /dev/null
@@ -1,393 +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 ts from 'typescript';
-import { readFileSync, existsSync } from 'fs';
-import { resolve, dirname, join } from 'path';
-import { match } from 'minimatch';
-
-//
-// #############################################################################################
-//
-// A custom typescript checker for the specific task of detecting the use of certain types in a
-// layer that does not allow such use. For example:
-// - using DOM globals in common/node/electron-main layer (e.g. HTMLElement)
-// - using node.js globals in common/browser layer (e.g. process)
-//
-// Make changes to below RULES to lift certain files from these checks only if absolutely needed
-//
-// #############################################################################################
-//
-
-// Types we assume are present in all implementations of JS VMs (node.js, browsers)
-// Feel free to add more core types as you see needed if present in node.js and browsers
-const CORE_TYPES = [
- 'setTimeout',
- 'clearTimeout',
- 'setInterval',
- 'clearInterval',
- 'console',
- 'Console',
- 'Error',
- 'ErrorConstructor',
- 'String',
- 'TextDecoder',
- 'TextEncoder',
- 'self',
- 'queueMicrotask',
- 'Array',
- 'Uint8Array',
- 'Uint16Array',
- 'Uint32Array',
- 'Int8Array',
- 'Int16Array',
- 'Int32Array',
- 'Float32Array',
- 'Float64Array',
- 'Uint8ClampedArray',
- 'BigUint64Array',
- 'BigInt64Array',
- 'btoa',
- 'atob',
- 'AbortController',
- 'AbortSignal',
- 'MessageChannel',
- 'MessagePort',
- 'URL',
- 'URLSearchParams',
- 'ReadonlyArray',
- 'Event',
- 'EventTarget',
- 'BroadcastChannel',
- 'performance',
- 'Blob',
- 'crypto',
- 'File',
- 'fetch',
- 'RequestInit',
- 'Headers',
- 'Request',
- 'Response',
- 'Body',
- 'any',
- 'timeout',
- 'Performance',
- 'PerformanceMark',
- 'PerformanceObserver',
- 'ImportMeta',
- 'structuredClone',
- 'stackTraceLimit',
- 'captureStackTrace',
-
- // webcrypto has been available since Node.js 19, but still live in dom.d.ts
- 'Crypto',
- 'SubtleCrypto',
- 'JsonWebKey',
- 'MessageEvent',
-
- // node web types
- 'ReadableStream',
- 'ReadableStreamReadResult',
- 'ReadableStreamGenericReader',
- 'ReadableStreamDefaultReader',
- 'value',
- 'done',
- 'DOMException',
- 'WebSocket',
-];
-
-// Types that are defined in a common layer but are known to be only
-// available in native environments should not be allowed in browser
-const NATIVE_TYPES = [
- 'NativeParsedArgs',
- 'INativeEnvironmentService',
- 'AbstractNativeEnvironmentService',
- 'INativeWindowConfiguration',
- 'ICommonNativeHostService',
- 'INativeHostService',
- 'IMainProcessService',
- 'INativeBrowserElementsService',
-];
-
-const RULES: IRule[] = [
-
- // Tests: skip
- {
- target: '**/vs/**/test/**',
- skip: true // -> skip all test files
- },
-
- // Common: vs/base/common/async.ts
- {
- target: '**/vs/base/common/async.ts',
- allowedTypes: [
- ...CORE_TYPES,
-
- // Safe access to requestIdleCallback & cancelIdleCallback
- 'requestIdleCallback',
- 'cancelIdleCallback'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
-
- // Common: vs/base/common/performance.ts
- {
- target: '**/vs/base/common/performance.ts',
- allowedTypes: [
- ...CORE_TYPES,
-
- // Safe access to Performance
- 'Performance',
- 'PerformanceEntry',
- 'PerformanceTiming'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
-
- // Common: vs/platform services that can access native types
- {
- target: `**/vs/platform/{${[
- 'environment/common/*.ts',
- 'window/common/window.ts',
- 'native/common/native.ts',
- 'native/common/nativeHostService.ts',
- 'browserElements/common/browserElements.ts',
- 'browserElements/common/nativeBrowserElementsService.ts'
- ].join(',')}}`,
- allowedTypes: CORE_TYPES,
- disallowedTypes: [/* Ignore native types that are defined from here */],
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
-
- // Common: vs/workbench/api/common/extHostExtensionService.ts
- {
- target: '**/vs/workbench/api/common/extHostExtensionService.ts',
- allowedTypes: [
- ...CORE_TYPES,
-
- // Safe access to global
- 'global'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
-
- // Common: vs/base/parts/sandbox/electron-sandbox/preload{,-aux}.ts
- {
- target: '**/vs/base/parts/sandbox/electron-sandbox/preload{,-aux}.ts',
- allowedTypes: [
- ...CORE_TYPES,
-
- // Safe access to a very small subset of node.js
- 'process',
- 'NodeJS',
- '__global'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
-
- // Common
- {
- target: '**/vs/**/common/**',
- allowedTypes: CORE_TYPES,
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts', // no DOM
- '@types/node' // no node.js
- ]
- },
-
- // Browser
- {
- target: '**/vs/**/browser/**',
- allowedTypes: [
- ...CORE_TYPES,
- 'localStorage'
- ],
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
-
- // Browser (editor contrib)
- {
- target: '**/src/vs/editor/contrib/**',
- allowedTypes: CORE_TYPES,
- disallowedTypes: NATIVE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
-
- // node.js
- {
- target: '**/vs/**/node/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts' // no DOM
- ]
- },
-
- // Electron (sandbox)
- {
- target: '**/vs/**/electron-sandbox/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
-
- // Electron (main, utility)
- {
- target: '**/vs/**/{electron-main,electron-utility}/**',
- allowedTypes: CORE_TYPES,
- disallowedTypes: [
- 'ipcMain' // not allowed, use validatedIpcMain instead
- ],
- disallowedDefinitions: [
- 'lib.dom.d.ts' // no DOM
- ]
- }
-];
-
-const TS_CONFIG_PATH = join(__dirname, '../../', 'src', 'tsconfig.json');
-
-interface IRule {
- target: string;
- skip?: boolean;
- allowedTypes?: string[];
- allowedDefinitions?: string[];
- disallowedDefinitions?: string[];
- disallowedTypes?: string[];
-}
-
-let hasErrors = false;
-
-function checkFile(program: ts.Program, sourceFile: ts.SourceFile, rule: IRule) {
- checkNode(sourceFile);
-
- function checkNode(node: ts.Node): void {
- if (node.kind !== ts.SyntaxKind.Identifier) {
- return ts.forEachChild(node, checkNode); // recurse down
- }
-
- const checker = program.getTypeChecker();
- const symbol = checker.getSymbolAtLocation(node);
-
- if (!symbol) {
- return;
- }
-
- let text = symbol.getName();
- if (rule.allowedTypes?.some(allowed => allowed === text)) {
- return; // override
- }
-
- let _parentSymbol: any = symbol;
-
- while (_parentSymbol.parent) {
- _parentSymbol = _parentSymbol.parent;
- }
-
- const parentSymbol = _parentSymbol as ts.Symbol;
- text = parentSymbol.getName();
-
- if (rule.allowedTypes?.some(allowed => allowed === text)) {
- return; // override
- }
-
- if (rule.disallowedTypes?.some(disallowed => disallowed === text)) {
- const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
- console.log(`[build/lib/layersChecker.ts]: Reference to type '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1}). Learn more about our source code organization at https://github.com/microsoft/vscode/wiki/Source-Code-Organization.`);
-
- hasErrors = true;
- return;
- }
-
- const declarations = symbol.declarations;
- if (Array.isArray(declarations)) {
- DeclarationLoop: for (const declaration of declarations) {
- if (declaration) {
- const parent = declaration.parent;
- if (parent) {
- const parentSourceFile = parent.getSourceFile();
- if (parentSourceFile) {
- const definitionFileName = parentSourceFile.fileName;
- if (rule.allowedDefinitions) {
- for (const allowedDefinition of rule.allowedDefinitions) {
- if (definitionFileName.indexOf(allowedDefinition) >= 0) {
- continue DeclarationLoop;
- }
- }
- }
- if (rule.disallowedDefinitions) {
- for (const disallowedDefinition of rule.disallowedDefinitions) {
- if (definitionFileName.indexOf(disallowedDefinition) >= 0) {
- const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
-
- console.log(`[build/lib/layersChecker.ts]: Reference to symbol '${text}' from '${disallowedDefinition}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1}) Learn more about our source code organization at https://github.com/microsoft/vscode/wiki/Source-Code-Organization.`);
-
- hasErrors = true;
- return;
- }
- }
- }
- }
- }
- }
- }
- }
- }
-}
-
-function createProgram(tsconfigPath: string): ts.Program {
- const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
-
- const configHostParser: ts.ParseConfigHost = { fileExists: existsSync, readDirectory: ts.sys.readDirectory, readFile: file => readFileSync(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
- const tsConfigParsed = ts.parseJsonConfigFileContent(tsConfig.config, configHostParser, resolve(dirname(tsconfigPath)), { noEmit: true });
-
- const compilerHost = ts.createCompilerHost(tsConfigParsed.options, true);
-
- return ts.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
-}
-
-//
-// Create program and start checking
-//
-const program = createProgram(TS_CONFIG_PATH);
-
-for (const sourceFile of program.getSourceFiles()) {
- for (const rule of RULES) {
- if (match([sourceFile.fileName], rule.target).length > 0) {
- if (!rule.skip) {
- checkFile(program, sourceFile, rule);
- }
-
- break;
- }
- }
-}
-
-if (hasErrors) {
- process.exit(1);
-}
diff --git a/build/lib/mangle/index.js b/build/lib/mangle/index.js
index ce744642551..fa729052f7c 100644
--- a/build/lib/mangle/index.js
+++ b/build/lib/mangle/index.js
@@ -251,8 +251,6 @@ function isNameTakenInFile(node, name) {
return false;
}
const skippedExportMangledFiles = [
- // Build
- 'css.build',
// Monaco
'editorCommon',
'editorOptions',
diff --git a/build/lib/mangle/index.ts b/build/lib/mangle/index.ts
index 4cbbd3cdadd..2edc27ff55a 100644
--- a/build/lib/mangle/index.ts
+++ b/build/lib/mangle/index.ts
@@ -280,8 +280,6 @@ function isNameTakenInFile(node: ts.Node, name: string): boolean {
}
const skippedExportMangledFiles = [
- // Build
- 'css.build',
// Monaco
'editorCommon',
diff --git a/build/lib/optimize.js b/build/lib/optimize.js
index 105dc02a79d..2a87c239c94 100644
--- a/build/lib/optimize.js
+++ b/build/lib/optimize.js
@@ -50,7 +50,6 @@ const fs_1 = __importDefault(require("fs"));
const pump_1 = __importDefault(require("pump"));
const vinyl_1 = __importDefault(require("vinyl"));
const bundle = __importStar(require("./bundle"));
-const postcss_1 = require("./postcss");
const esbuild_1 = __importDefault(require("esbuild"));
const gulp_sourcemaps_1 = __importDefault(require("gulp-sourcemaps"));
const fancy_log_1 = __importDefault(require("fancy-log"));
@@ -187,12 +186,10 @@ function bundleTask(opts) {
function minifyTask(src, sourceMapBaseUrl) {
const sourceMappingURL = sourceMapBaseUrl ? ((f) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
return cb => {
- const cssnano = require('cssnano');
const svgmin = require('gulp-svgmin');
- const jsFilter = (0, gulp_filter_1.default)('**/*.js', { restore: true });
- const cssFilter = (0, gulp_filter_1.default)('**/*.css', { restore: true });
+ const esbuildFilter = (0, gulp_filter_1.default)('**/*.{js,css}', { restore: true });
const svgFilter = (0, gulp_filter_1.default)('**/*.svg', { restore: true });
- (0, pump_1.default)(gulp_1.default.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, gulp_sourcemaps_1.default.init({ loadMaps: true }), event_stream_1.default.map((f, cb) => {
+ (0, pump_1.default)(gulp_1.default.src([src + '/**', '!' + src + '/**/*.map']), esbuildFilter, gulp_sourcemaps_1.default.init({ loadMaps: true }), event_stream_1.default.map((f, cb) => {
esbuild_1.default.build({
entryPoints: [f.path],
minify: true,
@@ -201,11 +198,11 @@ function minifyTask(src, sourceMapBaseUrl) {
packages: 'external', // "external all the things", see https://esbuild.github.io/api/#packages
platform: 'neutral', // makes esm
target: ['es2022'],
- write: false
+ write: false,
}).then(res => {
- const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path));
- const sourceMapFile = res.outputFiles.find(f => /\.js\.map$/.test(f.path));
- const contents = Buffer.from(jsFile.contents);
+ const jsOrCSSFile = res.outputFiles.find(f => /\.(js|css)$/.test(f.path));
+ const sourceMapFile = res.outputFiles.find(f => /\.(js|css)\.map$/.test(f.path));
+ const contents = Buffer.from(jsOrCSSFile.contents);
const unicodeMatch = contents.toString().match(/[^\x00-\xFF]+/g);
if (unicodeMatch) {
cb(new Error(`Found non-ascii character ${unicodeMatch[0]} in the minified output of ${f.path}. Non-ASCII characters in the output can cause performance problems when loading. Please review if you have introduced a regular expression that esbuild is not automatically converting and convert it to using unicode escape sequences.`));
@@ -216,7 +213,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, gulp_sourcemaps_1.default.write('./', {
+ }), esbuildFilter.restore, svgFilter, svgmin(), svgFilter.restore, gulp_sourcemaps_1.default.write('./', {
sourceMappingURL,
sourceRoot: undefined,
includeContent: true,
diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts
index 88a2a25dae4..d89d0d627f9 100644
--- a/build/lib/optimize.ts
+++ b/build/lib/optimize.ts
@@ -11,7 +11,6 @@ import fs from 'fs';
import pump from 'pump';
import VinylFile from 'vinyl';
import * as bundle from './bundle';
-import { gulpPostcss } from './postcss';
import esbuild from 'esbuild';
import sourcemaps from 'gulp-sourcemaps';
import fancyLog from 'fancy-log';
@@ -213,16 +212,14 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
const sourceMappingURL = sourceMapBaseUrl ? ((f: any) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
return cb => {
- const cssnano = require('cssnano') as typeof import('cssnano');
const svgmin = require('gulp-svgmin') as typeof import('gulp-svgmin');
- const jsFilter = filter('**/*.js', { restore: true });
- const cssFilter = filter('**/*.css', { restore: true });
+ const esbuildFilter = filter('**/*.{js,css}', { restore: true });
const svgFilter = filter('**/*.svg', { restore: true });
pump(
gulp.src([src + '/**', '!' + src + '/**/*.map']),
- jsFilter,
+ esbuildFilter,
sourcemaps.init({ loadMaps: true }),
es.map((f: any, cb) => {
esbuild.build({
@@ -233,12 +230,12 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
packages: 'external', // "external all the things", see https://esbuild.github.io/api/#packages
platform: 'neutral', // makes esm
target: ['es2022'],
- write: false
+ write: false,
}).then(res => {
- const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path))!;
- const sourceMapFile = res.outputFiles.find(f => /\.js\.map$/.test(f.path))!;
+ const jsOrCSSFile = res.outputFiles.find(f => /\.(js|css)$/.test(f.path))!;
+ const sourceMapFile = res.outputFiles.find(f => /\.(js|css)\.map$/.test(f.path))!;
- const contents = Buffer.from(jsFile.contents);
+ const contents = Buffer.from(jsOrCSSFile.contents);
const unicodeMatch = contents.toString().match(/[^\x00-\xFF]+/g);
if (unicodeMatch) {
cb(new Error(`Found non-ascii character ${unicodeMatch[0]} in the minified output of ${f.path}. Non-ASCII characters in the output can cause performance problems when loading. Please review if you have introduced a regular expression that esbuild is not automatically converting and convert it to using unicode escape sequences.`));
@@ -250,10 +247,7 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
}
}, cb);
}),
- jsFilter.restore,
- cssFilter,
- gulpPostcss([cssnano({ preset: 'default' })]),
- cssFilter.restore,
+ esbuildFilter.restore,
svgFilter,
svgmin(),
svgFilter.restore,
diff --git a/build/lib/postcss.js b/build/lib/postcss.js
deleted file mode 100644
index 210a184e5f5..00000000000
--- a/build/lib/postcss.js
+++ /dev/null
@@ -1,39 +0,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.gulpPostcss = gulpPostcss;
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const postcss_1 = __importDefault(require("postcss"));
-const event_stream_1 = __importDefault(require("event-stream"));
-function gulpPostcss(plugins, handleError) {
- const instance = (0, postcss_1.default)(plugins);
- return event_stream_1.default.map((file, callback) => {
- if (file.isNull()) {
- return callback(null, file);
- }
- if (file.isStream()) {
- return callback(new Error('Streaming not supported'));
- }
- instance
- .process(file.contents.toString(), { from: file.path })
- .then((result) => {
- file.contents = Buffer.from(result.css);
- callback(null, file);
- })
- .catch((error) => {
- if (handleError) {
- handleError(error);
- callback();
- }
- else {
- callback(error);
- }
- });
- });
-}
-//# sourceMappingURL=postcss.js.map
\ No newline at end of file
diff --git a/build/lib/postcss.ts b/build/lib/postcss.ts
deleted file mode 100644
index 9ec2188d13a..00000000000
--- a/build/lib/postcss.ts
+++ /dev/null
@@ -1,36 +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 postcss from 'postcss';
-import File from 'vinyl';
-import es from 'event-stream';
-
-export function gulpPostcss(plugins: postcss.AcceptedPlugin[], handleError?: (err: Error) => void) {
- const instance = postcss(plugins);
-
- return es.map((file: File, callback: (error?: any, file?: any) => void) => {
- if (file.isNull()) {
- return callback(null, file);
- }
-
- if (file.isStream()) {
- return callback(new Error('Streaming not supported'));
- }
-
- instance
- .process(file.contents.toString(), { from: file.path })
- .then((result) => {
- file.contents = Buffer.from(result.css);
- callback(null, file);
- })
- .catch((error) => {
- if (handleError) {
- handleError(error);
- callback();
- } else {
- callback(error);
- }
- });
- });
-}
diff --git a/build/lib/stylelint/vscode-known-variables.json b/build/lib/stylelint/vscode-known-variables.json
index d032969d9d3..cb44a1a2199 100644
--- a/build/lib/stylelint/vscode-known-variables.json
+++ b/build/lib/stylelint/vscode-known-variables.json
@@ -59,6 +59,8 @@
"--vscode-chat-requestCodeBorder",
"--vscode-chat-slashCommandBackground",
"--vscode-chat-slashCommandForeground",
+ "--vscode-chat-linesAddedForeground",
+ "--vscode-chat-linesRemovedForeground",
"--vscode-checkbox-background",
"--vscode-checkbox-border",
"--vscode-checkbox-disabled-background",
@@ -318,6 +320,7 @@
"--vscode-editorPane-background",
"--vscode-editorRuler-foreground",
"--vscode-editorStickyScroll-background",
+ "--vscode-editorStickyScrollGutter-background",
"--vscode-editorStickyScroll-border",
"--vscode-editorStickyScroll-shadow",
"--vscode-editorStickyScrollHover-background",
@@ -560,6 +563,7 @@
"--vscode-peekViewEditor-matchHighlightBorder",
"--vscode-peekViewEditorGutter-background",
"--vscode-peekViewEditorStickyScroll-background",
+ "--vscode-peekViewEditorStickyScrollGutter-background",
"--vscode-peekViewResult-background",
"--vscode-peekViewResult-fileForeground",
"--vscode-peekViewResult-lineForeground",
@@ -957,4 +961,4 @@
"--animation-opacity",
"--chat-setup-dialog-glow-angle"
]
-}
\ No newline at end of file
+}
diff --git a/build/lib/tsb/builder.js b/build/lib/tsb/builder.js
index 0da1f5c09e6..71c7a78e9a1 100644
--- a/build/lib/tsb/builder.js
+++ b/build/lib/tsb/builder.js
@@ -63,7 +63,7 @@ function createTypeScriptBuilder(config, projectFile, cmd) {
const _log = config.logFn;
const host = new LanguageServiceHost(cmd, projectFile, _log);
const outHost = new LanguageServiceHost({ ...cmd, options: { ...cmd.options, sourceRoot: cmd.options.outDir } }, cmd.options.outDir ?? '', _log);
- let lastCycleCheckVersion;
+ const toBeCheckedForCycles = [];
const service = typescript_1.default.createLanguageService(host, typescript_1.default.createDocumentRegistry());
const lastBuildVersion = Object.create(null);
const lastDtsHash = Object.create(null);
@@ -294,6 +294,7 @@ function createTypeScriptBuilder(config, projectFile, cmd) {
const jsValue = value.files.find(candidate => candidate.basename.endsWith('.js'));
if (jsValue) {
outHost.addScriptSnapshot(jsValue.path, new ScriptSnapshot(String(jsValue.contents), new Date()));
+ toBeCheckedForCycles.push(normalize(jsValue.path));
}
}).catch(e => {
// can't just skip this or make a result up..
@@ -387,24 +388,21 @@ function createTypeScriptBuilder(config, projectFile, cmd) {
workOnNext();
}).then(() => {
// check for cyclic dependencies
- const thisCycleCheckVersion = outHost.getProjectVersion();
- if (thisCycleCheckVersion === lastCycleCheckVersion) {
- return;
- }
- const oneCycle = outHost.hasCyclicDependency();
- lastCycleCheckVersion = thisCycleCheckVersion;
- delete oldErrors[projectFile];
- if (oneCycle) {
- const cycleError = {
- category: typescript_1.default.DiagnosticCategory.Error,
- code: 1,
- file: undefined,
- start: undefined,
- length: undefined,
- messageText: `CYCLIC dependency between ${oneCycle}`
- };
- onError(cycleError);
- newErrors[projectFile] = [cycleError];
+ const cycles = outHost.getCyclicDependencies(toBeCheckedForCycles);
+ toBeCheckedForCycles.length = 0;
+ for (const [filename, error] of cycles) {
+ const cyclicDepErrors = [];
+ if (error) {
+ cyclicDepErrors.push({
+ category: typescript_1.default.DiagnosticCategory.Error,
+ code: 1,
+ file: undefined,
+ start: undefined,
+ length: undefined,
+ messageText: `CYCLIC dependency: ${error}`
+ });
+ }
+ newErrors[filename] = cyclicDepErrors;
}
}).then(() => {
// store the build versions to not rebuilt the next time
@@ -588,15 +586,17 @@ class LanguageServiceHost {
node.incoming.forEach(entry => target.push(entry.data));
}
}
- hasCyclicDependency() {
+ getCyclicDependencies(filenames) {
// Ensure dependencies are up to date
while (this._dependenciesRecomputeList.length) {
this._processFile(this._dependenciesRecomputeList.pop());
}
- const cycle = this._dependencies.findCycle();
- return cycle
- ? cycle.join(' -> ')
- : undefined;
+ const cycles = this._dependencies.findCycles(filenames.sort((a, b) => a.localeCompare(b)));
+ const result = new Map();
+ for (const [key, value] of cycles) {
+ result.set(key, value?.join(' -> '));
+ }
+ return result;
}
_processFile(filename) {
if (filename.match(/.*\.d\.ts$/)) {
diff --git a/build/lib/tsb/builder.ts b/build/lib/tsb/builder.ts
index 1a68131f86d..3ca3a0d6ead 100644
--- a/build/lib/tsb/builder.ts
+++ b/build/lib/tsb/builder.ts
@@ -44,7 +44,7 @@ export function createTypeScriptBuilder(config: IConfiguration, projectFile: str
const host = new LanguageServiceHost(cmd, projectFile, _log);
const outHost = new LanguageServiceHost({ ...cmd, options: { ...cmd.options, sourceRoot: cmd.options.outDir } }, cmd.options.outDir ?? '', _log);
- let lastCycleCheckVersion: string;
+ const toBeCheckedForCycles: string[] = [];
const service = ts.createLanguageService(host, ts.createDocumentRegistry());
const lastBuildVersion: { [path: string]: string } = Object.create(null);
@@ -315,6 +315,7 @@ export function createTypeScriptBuilder(config: IConfiguration, projectFile: str
const jsValue = value.files.find(candidate => candidate.basename.endsWith('.js'));
if (jsValue) {
outHost.addScriptSnapshot(jsValue.path, new ScriptSnapshot(String(jsValue.contents), new Date()));
+ toBeCheckedForCycles.push(normalize(jsValue.path));
}
}).catch(e => {
@@ -424,25 +425,22 @@ export function createTypeScriptBuilder(config: IConfiguration, projectFile: str
}).then(() => {
// check for cyclic dependencies
- const thisCycleCheckVersion = outHost.getProjectVersion();
- if (thisCycleCheckVersion === lastCycleCheckVersion) {
- return;
- }
- const oneCycle = outHost.hasCyclicDependency();
- lastCycleCheckVersion = thisCycleCheckVersion;
- delete oldErrors[projectFile];
+ const cycles = outHost.getCyclicDependencies(toBeCheckedForCycles);
+ toBeCheckedForCycles.length = 0;
- if (oneCycle) {
- const cycleError: ts.Diagnostic = {
- category: ts.DiagnosticCategory.Error,
- code: 1,
- file: undefined,
- start: undefined,
- length: undefined,
- messageText: `CYCLIC dependency between ${oneCycle}`
- };
- onError(cycleError);
- newErrors[projectFile] = [cycleError];
+ for (const [filename, error] of cycles) {
+ const cyclicDepErrors: ts.Diagnostic[] = [];
+ if (error) {
+ cyclicDepErrors.push({
+ category: ts.DiagnosticCategory.Error,
+ code: 1,
+ file: undefined,
+ start: undefined,
+ length: undefined,
+ messageText: `CYCLIC dependency: ${error}`
+ });
+ }
+ newErrors[filename] = cyclicDepErrors;
}
}).then(() => {
@@ -666,15 +664,17 @@ class LanguageServiceHost implements ts.LanguageServiceHost {
}
}
- hasCyclicDependency(): string | undefined {
+ getCyclicDependencies(filenames: string[]): Map {
// Ensure dependencies are up to date
while (this._dependenciesRecomputeList.length) {
this._processFile(this._dependenciesRecomputeList.pop()!);
}
- const cycle = this._dependencies.findCycle();
- return cycle
- ? cycle.join(' -> ')
- : undefined;
+ const cycles = this._dependencies.findCycles(filenames.sort((a, b) => a.localeCompare(b)));
+ const result = new Map();
+ for (const [key, value] of cycles) {
+ result.set(key, value?.join(' -> '));
+ }
+ return result;
}
_processFile(filename: string): void {
diff --git a/build/lib/tsb/utils.js b/build/lib/tsb/utils.js
index 29cccf0f833..2ea820c6e6b 100644
--- a/build/lib/tsb/utils.js
+++ b/build/lib/tsb/utils.js
@@ -55,44 +55,39 @@ var graph;
lookup(data) {
return this._nodes.get(data) ?? null;
}
- findCycle() {
- let result;
- let foundStartNodes = false;
+ findCycles(allData) {
+ const result = new Map();
const checked = new Set();
- for (const [_start, value] of this._nodes) {
- if (Object.values(value.incoming).length > 0) {
+ for (const data of allData) {
+ const node = this.lookup(data);
+ if (!node) {
continue;
}
- foundStartNodes = true;
- const dfs = (node, visited) => {
- if (checked.has(node)) {
- return;
- }
- if (visited.has(node)) {
- result = [...visited, node].map(n => n.data);
- const idx = result.indexOf(node.data);
- result = result.slice(idx);
- return;
- }
- visited.add(node);
- for (const child of Object.values(node.outgoing)) {
- dfs(child, visited);
- if (result) {
- break;
- }
- }
- visited.delete(node);
- checked.add(node);
- };
- dfs(value, new Set());
+ const r = this._findCycle(node, checked, new Set());
+ result.set(node.data, r);
+ }
+ return result;
+ }
+ _findCycle(node, checked, seen) {
+ if (checked.has(node.data)) {
+ return undefined;
+ }
+ let result;
+ for (const child of node.outgoing.values()) {
+ if (seen.has(child.data)) {
+ const seenArr = Array.from(seen);
+ const idx = seenArr.indexOf(child.data);
+ seenArr.push(child.data);
+ return idx > 0 ? seenArr.slice(idx) : seenArr;
+ }
+ seen.add(child.data);
+ result = this._findCycle(child, checked, seen);
+ seen.delete(child.data);
if (result) {
break;
}
}
- if (!foundStartNodes) {
- // everything is a cycle
- return Array.from(this._nodes.keys());
- }
+ checked.add(node.data);
return result;
}
}
diff --git a/build/lib/tsb/utils.ts b/build/lib/tsb/utils.ts
index 59d1cab36d3..16f93d6838f 100644
--- a/build/lib/tsb/utils.ts
+++ b/build/lib/tsb/utils.ts
@@ -63,53 +63,42 @@ export namespace graph {
return this._nodes.get(data) ?? null;
}
- findCycle(): T[] | undefined {
-
- let result: T[] | undefined;
- let foundStartNodes = false;
- const checked = new Set>();
-
- for (const [_start, value] of this._nodes) {
-
- if (Object.values(value.incoming).length > 0) {
+ findCycles(allData: T[]): Map {
+ const result = new Map();
+ const checked = new Set();
+ for (const data of allData) {
+ const node = this.lookup(data);
+ if (!node) {
continue;
}
+ const r = this._findCycle(node, checked, new Set());
+ result.set(node.data, r);
+ }
+ return result;
+ }
- foundStartNodes = true;
+ private _findCycle(node: Node, checked: Set, seen: Set): T[] | undefined {
- const dfs = (node: Node, visited: Set>) => {
+ if (checked.has(node.data)) {
+ return undefined;
+ }
- if (checked.has(node)) {
- return;
- }
-
- if (visited.has(node)) {
- result = [...visited, node].map(n => n.data);
- const idx = result.indexOf(node.data);
- result = result.slice(idx);
- return;
- }
- visited.add(node);
- for (const child of Object.values(node.outgoing)) {
- dfs(child, visited);
- if (result) {
- break;
- }
- }
- visited.delete(node);
- checked.add(node);
- };
- dfs(value, new Set());
+ let result: T[] | undefined;
+ for (const child of node.outgoing.values()) {
+ if (seen.has(child.data)) {
+ const seenArr = Array.from(seen);
+ const idx = seenArr.indexOf(child.data);
+ seenArr.push(child.data);
+ return idx > 0 ? seenArr.slice(idx) : seenArr;
+ }
+ seen.add(child.data);
+ result = this._findCycle(child, checked, seen);
+ seen.delete(child.data);
if (result) {
break;
}
}
-
- if (!foundStartNodes) {
- // everything is a cycle
- return Array.from(this._nodes.keys());
- }
-
+ checked.add(node.data);
return result;
}
}
diff --git a/build/npm/gyp/package-lock.json b/build/npm/gyp/package-lock.json
index a20d85c70dc..08b6ae29b01 100644
--- a/build/npm/gyp/package-lock.json
+++ b/build/npm/gyp/package-lock.json
@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
- "node-gyp": "^10.1.0"
+ "node-gyp": "^11.2.0"
}
},
"node_modules/@isaacs/cliui": {
@@ -30,10 +30,23 @@
"node": ">=12"
}
},
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"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==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz",
+ "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -44,20 +57,20 @@
"socks-proxy-agent": "^8.0.3"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.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==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
+ "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==",
"dev": true,
"license": "ISC",
"dependencies": {
"semver": "^7.3.5"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/@pkgjs/parseargs": {
@@ -72,46 +85,29 @@
}
},
"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==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
"dev": true,
"license": "ISC",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.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==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
+ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
"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==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -152,13 +148,13 @@
}
},
"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==",
+ "version": "19.0.1",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz",
+ "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==",
"dev": true,
"license": "ISC",
"dependencies": {
- "@npmcli/fs": "^3.1.0",
+ "@npmcli/fs": "^4.0.0",
"fs-minipass": "^3.0.0",
"glob": "^10.2.2",
"lru-cache": "^10.0.1",
@@ -166,33 +162,23 @@
"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"
+ "p-map": "^7.0.2",
+ "ssri": "^12.0.0",
+ "tar": "^7.4.3",
+ "unique-filename": "^4.0.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"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": ">=18"
}
},
"node_modules/color-convert": {
@@ -216,9 +202,9 @@
"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==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -254,13 +240,13 @@
}
},
"node_modules/debug": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
- "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -320,14 +306,29 @@
"dev": true,
"license": "Apache-2.0"
},
+ "node_modules/fdir": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
"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==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
"dev": true,
"license": "ISC",
"dependencies": {
- "cross-spawn": "^7.0.0",
+ "cross-spawn": "^7.0.6",
"signal-exit": "^4.0.1"
},
"engines": {
@@ -351,9 +352,9 @@
}
},
"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==",
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -367,9 +368,6 @@
"bin": {
"glob": "dist/esm/bin.mjs"
},
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -382,9 +380,9 @@
"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==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
"dev": true,
"license": "BSD-2-Clause"
},
@@ -403,13 +401,13 @@
}
},
"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==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "agent-base": "^7.0.2",
+ "agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
@@ -440,16 +438,6 @@
"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",
@@ -474,13 +462,6 @@
"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",
@@ -492,17 +473,14 @@
}
},
"node_modules/jackspeak": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz",
- "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">=14"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
@@ -518,47 +496,33 @@
"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==",
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": "14 || >=16.14"
- }
+ "license": "ISC"
},
"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==",
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz",
+ "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==",
"dev": true,
"license": "ISC",
"dependencies": {
- "@npmcli/agent": "^2.0.0",
- "cacache": "^18.0.0",
+ "@npmcli/agent": "^3.0.0",
+ "cacache": "^19.0.1",
"http-cache-semantics": "^4.1.1",
- "is-lambda": "^1.0.1",
"minipass": "^7.0.2",
- "minipass-fetch": "^3.0.0",
+ "minipass-fetch": "^4.0.0",
"minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "proc-log": "^4.2.0",
+ "negotiator": "^1.0.0",
+ "proc-log": "^5.0.0",
"promise-retry": "^2.0.1",
- "ssri": "^10.0.0"
+ "ssri": "^12.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": "^18.17.0 || >=20.5.0"
}
},
"node_modules/minimatch": {
@@ -601,18 +565,18 @@
}
},
"node_modules/minipass-fetch": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz",
- "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz",
+ "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"minipass": "^7.0.3",
"minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
+ "minizlib": "^3.0.1"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
},
"optionalDependencies": {
"encoding": "^0.1.13"
@@ -644,6 +608,13 @@
"node": ">=8"
}
},
+ "node_modules/minipass-flush/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"
+ },
"node_modules/minipass-pipeline": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
@@ -670,6 +641,13 @@
"node": ">=8"
}
},
+ "node_modules/minipass-pipeline/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"
+ },
"node_modules/minipass-sized": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
@@ -696,57 +674,53 @@
"node": ">=8"
}
},
+ "node_modules/minipass-sized/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"
+ },
"node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
+ "minipass": "^7.1.2"
},
"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": ">= 18"
}
},
"node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
"dev": true,
"license": "MIT",
"bin": {
- "mkdirp": "bin/cmd.js"
+ "mkdirp": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"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==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"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==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -754,66 +728,63 @@
}
},
"node_modules/node-gyp": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz",
- "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==",
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.2.0.tgz",
+ "integrity": "sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==",
"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",
+ "make-fetch-happen": "^14.0.3",
+ "nopt": "^8.0.0",
+ "proc-log": "^5.0.0",
"semver": "^7.3.5",
- "tar": "^6.1.2",
- "which": "^4.0.0"
+ "tar": "^7.4.3",
+ "tinyglobby": "^0.2.12",
+ "which": "^5.0.0"
},
"bin": {
"node-gyp": "bin/node-gyp.js"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.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==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
+ "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
"dev": true,
"license": "ISC",
"dependencies": {
- "abbrev": "^2.0.0"
+ "abbrev": "^3.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.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==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
+ "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"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==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
"dev": true,
"license": "BlueOak-1.0.0"
},
@@ -844,14 +815,27 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz",
+ "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==",
"dev": true,
"license": "ISC",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/promise-retry": {
@@ -887,14 +871,11 @@
"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==",
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
"license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -902,19 +883,6 @@
"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",
@@ -963,9 +931,9 @@
}
},
"node_modules/socks": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
- "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
+ "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -978,13 +946,13 @@
}
},
"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==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "agent-base": "^7.1.1",
+ "agent-base": "^7.1.2",
"debug": "^4.3.4",
"socks": "^2.8.3"
},
@@ -1000,16 +968,16 @@
"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==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz",
+ "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"minipass": "^7.0.3"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/string-width": {
@@ -1117,89 +1085,70 @@
}
},
"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==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
"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"
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.0.1",
+ "mkdirp": "^3.0.1",
+ "yallist": "^5.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
}
},
- "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==",
+ "node_modules/tinyglobby": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "minipass": "^3.0.0"
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
},
"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"
+ "node": ">=12.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"
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
}
},
"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==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz",
+ "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==",
"dev": true,
"license": "ISC",
"dependencies": {
- "unique-slug": "^4.0.0"
+ "unique-slug": "^5.0.0"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz",
+ "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==",
"dev": true,
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/which": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -1209,7 +1158,7 @@
"node-which": "bin/which.js"
},
"engines": {
- "node": "^16.13.0 || >=18.0.0"
+ "node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/wrap-ansi": {
@@ -1311,11 +1260,14 @@
}
},
"node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
"dev": true,
- "license": "ISC"
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
}
}
}
diff --git a/build/npm/gyp/package.json b/build/npm/gyp/package.json
index a1564133a1e..2fee83064b6 100644
--- a/build/npm/gyp/package.json
+++ b/build/npm/gyp/package.json
@@ -4,7 +4,7 @@
"private": true,
"license": "MIT",
"devDependencies": {
- "node-gyp": "^10.1.0"
+ "node-gyp": "^11.2.0"
},
"scripts": {}
}
diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js
index be0c6c24282..1033e4ecf68 100644
--- a/build/npm/postinstall.js
+++ b/build/npm/postinstall.js
@@ -77,6 +77,12 @@ function setNpmrcConfig(dir, env) {
}
}
+ // Use our bundled node-gyp version
+ env['npm_config_node_gyp'] =
+ process.platform === 'win32'
+ ? path.join(__dirname, 'gyp', 'node_modules', '.bin', 'node-gyp.cmd')
+ : path.join(__dirname, 'gyp', 'node_modules', '.bin', 'node-gyp');
+
// Force node-gyp to use process.config on macOS
// which defines clang variable as expected. Otherwise we
// run into compilation errors due to incorrect compiler
diff --git a/build/package-lock.json b/build/package-lock.json
index 212d9baef7a..626ec828a5b 100644
--- a/build/package-lock.json
+++ b/build/package-lock.json
@@ -42,10 +42,9 @@
"@types/workerpool": "^6.4.0",
"@types/xml2js": "0.0.33",
"@vscode/iconv-lite-umd": "0.7.0",
- "@vscode/ripgrep": "^1.15.10",
+ "@vscode/ripgrep": "^1.15.13",
"@vscode/vsce": "2.20.1",
"byline": "^5.0.0",
- "cssnano": "^7.0.7",
"debug": "^4.3.2",
"electron-osx-sign": "^0.4.16",
"esbuild": "0.25.0",
@@ -55,8 +54,6 @@
"jsonc-parser": "^2.3.0",
"jws": "^4.0.0",
"mime": "^1.4.1",
- "postcss": "^8.5.3",
- "postcss-nesting": "^13.0.1",
"source-map": "0.6.1",
"ternary-stream": "^3.0.0",
"through2": "^4.0.2",
@@ -444,52 +441,6 @@
"node": ">=18.0.0"
}
},
- "node_modules/@csstools/selector-resolve-nested": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz",
- "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss-selector-parser": "^7.0.0"
- }
- },
- "node_modules/@csstools/selector-specificity": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
- "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss-selector-parser": "^7.0.0"
- }
- },
"node_modules/@electron/asar": {
"version": "3.2.10",
"resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz",
@@ -1008,16 +959,6 @@
"node": ">=10"
}
},
- "node_modules/@trysound/sax": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/@types/ansi-colors": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@types/ansi-colors/-/ansi-colors-3.2.0.tgz",
@@ -1378,9 +1319,9 @@
"dev": true
},
"node_modules/@vscode/ripgrep": {
- "version": "1.15.10",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.15.10.tgz",
- "integrity": "sha512-83Q6qFrELpFgf88bPOcwSWDegfY2r/cb6bIfdLTSZvN73Dg1wviSfO+1v6lTFMd0mAvUYYcTUu+Mn5xMroZMxA==",
+ "version": "1.15.13",
+ "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.15.13.tgz",
+ "integrity": "sha512-c62On5sLEIMv9yfetIZ8c0Mg0s6lvq54G0YLW2zY/XiPsJPyBBgrP54MR1s0hK3gsPy423cY+e2BDU6mOB2Yaw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1690,39 +1631,6 @@
"node": ">=8"
}
},
- "node_modules/browserslist": {
- "version": "4.24.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz",
- "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001716",
- "electron-to-chromium": "^1.5.149",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.3"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -1840,40 +1748,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/caniuse-api": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
- "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.0.0",
- "caniuse-lite": "^1.0.0",
- "lodash.memoize": "^4.1.2",
- "lodash.uniq": "^4.5.0"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001718",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz",
- "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
"node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -2037,23 +1911,6 @@
"color-support": "bin.js"
}
},
- "node_modules/colord": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
- "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/compare-version": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
@@ -2090,19 +1947,6 @@
"node": ">= 8"
}
},
- "node_modules/css-declaration-sorter": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
- "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^14 || ^16 || >=18"
- },
- "peerDependencies": {
- "postcss": "^8.0.9"
- }
- },
"node_modules/css-select": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
@@ -2119,20 +1963,6 @@
"url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
- }
- },
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -2145,134 +1975,6 @@
"url": "https://github.com/sponsors/fb55"
}
},
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cssnano": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.7.tgz",
- "integrity": "sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssnano-preset-default": "^7.0.7",
- "lilconfig": "^3.1.3"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/cssnano"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/cssnano-preset-default": {
- "version": "7.0.7",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.7.tgz",
- "integrity": "sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "css-declaration-sorter": "^7.2.0",
- "cssnano-utils": "^5.0.1",
- "postcss-calc": "^10.1.1",
- "postcss-colormin": "^7.0.3",
- "postcss-convert-values": "^7.0.5",
- "postcss-discard-comments": "^7.0.4",
- "postcss-discard-duplicates": "^7.0.2",
- "postcss-discard-empty": "^7.0.1",
- "postcss-discard-overridden": "^7.0.1",
- "postcss-merge-longhand": "^7.0.5",
- "postcss-merge-rules": "^7.0.5",
- "postcss-minify-font-values": "^7.0.1",
- "postcss-minify-gradients": "^7.0.1",
- "postcss-minify-params": "^7.0.3",
- "postcss-minify-selectors": "^7.0.5",
- "postcss-normalize-charset": "^7.0.1",
- "postcss-normalize-display-values": "^7.0.1",
- "postcss-normalize-positions": "^7.0.1",
- "postcss-normalize-repeat-style": "^7.0.1",
- "postcss-normalize-string": "^7.0.1",
- "postcss-normalize-timing-functions": "^7.0.1",
- "postcss-normalize-unicode": "^7.0.3",
- "postcss-normalize-url": "^7.0.1",
- "postcss-normalize-whitespace": "^7.0.1",
- "postcss-ordered-values": "^7.0.2",
- "postcss-reduce-initial": "^7.0.3",
- "postcss-reduce-transforms": "^7.0.1",
- "postcss-svgo": "^7.0.2",
- "postcss-unique-selectors": "^7.0.4"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/cssnano-utils": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz",
- "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/csso": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
- "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "css-tree": "~2.2.0"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/csso/node_modules/css-tree": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
- "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.28",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/csso/node_modules/mdn-data": {
- "version": "2.0.28",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
- "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
- "dev": true,
- "license": "CC0-1.0"
- },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -2515,13 +2217,6 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/electron-to-chromium": {
- "version": "1.5.158",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.158.tgz",
- "integrity": "sha512-9vcp2xHhkvraY6AHw2WMi+GDSLPX42qe2xjYaVoZqFRJiOcilVQFq9mZmpuHEQpzlgGDelKlV7ZiGcmMsc8WxQ==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -2621,16 +2316,6 @@
"@esbuild/win32-x64": "0.25.0"
}
},
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -3515,19 +3200,6 @@
"node": ">=6"
}
},
- "node_modules/lilconfig": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
- "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antonk52"
- }
- },
"node_modules/linkify-it": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
@@ -3543,26 +3215,12 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
- "node_modules/lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
- "dev": true,
- "license": "MIT"
- },
"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/lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lowercase-keys": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
@@ -3635,13 +3293,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true,
- "license": "CC0-1.0"
- },
"node_modules/mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
@@ -3712,25 +3363,6 @@
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
- "node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
"node_modules/napi-build-utils": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
@@ -3792,13 +3424,6 @@
"node-gyp-build-test": "build-test.js"
}
},
- "node_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -3989,13 +3614,6 @@
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA= sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
"dev": true
},
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/picomatch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
@@ -4046,522 +3664,6 @@
"node": ">= 0.10"
}
},
- "node_modules/postcss": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
- "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.8",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postcss-calc": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz",
- "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^7.0.0",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12 || ^20.9 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.38"
- }
- },
- "node_modules/postcss-colormin": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.3.tgz",
- "integrity": "sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "caniuse-api": "^3.0.0",
- "colord": "^2.9.3",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-convert-values": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.5.tgz",
- "integrity": "sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-discard-comments": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz",
- "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^7.1.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-discard-duplicates": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz",
- "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-discard-empty": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz",
- "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-discard-overridden": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz",
- "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-merge-longhand": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz",
- "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0",
- "stylehacks": "^7.0.5"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-merge-rules": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.5.tgz",
- "integrity": "sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "caniuse-api": "^3.0.0",
- "cssnano-utils": "^5.0.1",
- "postcss-selector-parser": "^7.1.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-minify-font-values": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz",
- "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-minify-gradients": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz",
- "integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "colord": "^2.9.3",
- "cssnano-utils": "^5.0.1",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-minify-params": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.3.tgz",
- "integrity": "sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "cssnano-utils": "^5.0.1",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-minify-selectors": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz",
- "integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "postcss-selector-parser": "^7.1.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-nesting": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz",
- "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/selector-resolve-nested": "^3.0.0",
- "@csstools/selector-specificity": "^5.0.0",
- "postcss-selector-parser": "^7.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
- }
- },
- "node_modules/postcss-normalize-charset": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz",
- "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-display-values": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz",
- "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-positions": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz",
- "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-repeat-style": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz",
- "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-string": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz",
- "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-timing-functions": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz",
- "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-unicode": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.3.tgz",
- "integrity": "sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-url": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz",
- "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-normalize-whitespace": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz",
- "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-ordered-values": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz",
- "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssnano-utils": "^5.0.1",
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-reduce-initial": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.3.tgz",
- "integrity": "sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "caniuse-api": "^3.0.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-reduce-transforms": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz",
- "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
- "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-svgo": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.2.tgz",
- "integrity": "sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.2.0",
- "svgo": "^3.3.2"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >= 18"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-unique-selectors": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz",
- "integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^7.1.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/prebuild-install": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
@@ -4924,16 +4026,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "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",
@@ -5026,23 +4118,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/stylehacks": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.5.tgz",
- "integrity": "sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.24.5",
- "postcss-selector-parser": "^7.1.0"
- },
- "engines": {
- "node": "^18.12.0 || ^20.9.0 || >=22.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.32"
- }
- },
"node_modules/sumchecker": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
@@ -5067,32 +4142,6 @@
"node": ">=4"
}
},
- "node_modules/svgo": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
- "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@trysound/sax": "0.2.0",
- "commander": "^7.2.0",
- "css-select": "^5.1.0",
- "css-tree": "^2.3.1",
- "css-what": "^6.1.0",
- "csso": "^5.0.5",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "svgo": "bin/svgo"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/svgo"
- }
- },
"node_modules/tar-fs": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
@@ -5360,37 +4409,6 @@
"node": ">= 4.0.0"
}
},
- "node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
"node_modules/url-join": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
diff --git a/build/package.json b/build/package.json
index 64c0d7530f5..e34a23547ec 100644
--- a/build/package.json
+++ b/build/package.json
@@ -36,10 +36,9 @@
"@types/workerpool": "^6.4.0",
"@types/xml2js": "0.0.33",
"@vscode/iconv-lite-umd": "0.7.0",
- "@vscode/ripgrep": "^1.15.10",
+ "@vscode/ripgrep": "^1.15.13",
"@vscode/vsce": "2.20.1",
"byline": "^5.0.0",
- "cssnano": "^7.0.7",
"debug": "^4.3.2",
"electron-osx-sign": "^0.4.16",
"esbuild": "0.25.0",
@@ -49,8 +48,6 @@
"jsonc-parser": "^2.3.0",
"jws": "^4.0.0",
"mime": "^1.4.1",
- "postcss": "^8.5.3",
- "postcss-nesting": "^13.0.1",
"source-map": "0.6.1",
"ternary-stream": "^3.0.0",
"through2": "^4.0.2",
diff --git a/eslint.config.js b/eslint.config.js
index 7067b7ea730..dde24771a66 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -99,7 +99,7 @@ export default tseslint.config(
'browser': [
'common'
],
- 'electron-sandbox': [
+ 'electron-browser': [
'common',
'browser'
],
@@ -406,10 +406,10 @@ export default tseslint.config(
]
}
},
- // browser/electron-sandbox layer
+ // browser/electron-browser layer
{
files: [
- 'src/**/{browser,electron-sandbox}/**/*.ts'
+ 'src/**/{browser,electron-browser}/**/*.ts'
],
languageOptions: {
parser: tseslint.parser,
@@ -770,7 +770,7 @@ export default tseslint.config(
{
// imports that are allowed in all files of layers:
// - browser
- // - electron-sandbox
+ // - electron-browser
'when': 'hasBrowser',
'allow': []
},
@@ -866,18 +866,18 @@ export default tseslint.config(
// - src/vs/base/common
// - src/vs/base/worker
// - src/vs/base/browser
- // - src/vs/base/electron-sandbox
+ // - src/vs/base/electron-browser
// - src/vs/base/node
// - src/vs/base/electron-main
// - src/vs/base/test/common
// - src/vs/base/test/worker
// - src/vs/base/test/browser
- // - src/vs/base/test/electron-sandbox
+ // - src/vs/base/test/electron-browser
// - src/vs/base/test/node
// - src/vs/base/test/electron-main
//
// When /~ is used in the restrictions, it will be replaced with the correct
- // layers that can be used e.g. 'src/vs/base/electron-sandbox' will be able
+ // layers that can be used e.g. 'src/vs/base/electron-browser' will be able
// to import '{common,browser,electron-sanbox}', etc.
//
// It is possible to use /~ in the restrictions property even without using it in
@@ -1203,7 +1203,7 @@ export default tseslint.config(
},
{
'target': 'src/vs/workbench/workbench.desktop.main.ts',
- 'layer': 'electron-sandbox',
+ 'layer': 'electron-browser',
'restrictions': [
'vs/base/*/~',
'vs/base/parts/*/~',
diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts
index 7f3da5090d5..e5ab4067248 100644
--- a/extensions/git/src/git.ts
+++ b/extensions/git/src/git.ts
@@ -16,7 +16,6 @@ import { CancellationError, CancellationToken, ConfigurationChangeEvent, LogOutp
import { Commit as ApiCommit, Ref, RefType, Branch, Remote, ForcePushMode, GitErrorCodes, LogOptions, Change, Status, CommitOptions, RefQuery as ApiRefQuery, InitOptions } from './api/git';
import * as byline from 'byline';
import { StringDecoder } from 'string_decoder';
-import { sequentialize } from './decorators';
// https://github.com/microsoft/vscode/issues/65693
const MAX_CLI_LENGTH = 30000;
@@ -1242,7 +1241,6 @@ export class Repository {
return this.git.spawn(args, options);
}
- @sequentialize
async config(command: string, scope: string, key: string, value: any = null, options: SpawnOptions = {}): Promise {
const args = ['config', `--${command}`];
diff --git a/extensions/git/src/historyProvider.ts b/extensions/git/src/historyProvider.ts
index 1efd80585eb..9830928fcd3 100644
--- a/extensions/git/src/historyProvider.ts
+++ b/extensions/git/src/historyProvider.ts
@@ -13,6 +13,7 @@ import { emojify, ensureEmojis } from './emoji';
import { Commit } from './git';
import { OperationKind, OperationResult } from './operation';
import { ISourceControlHistoryItemDetailsProviderRegistry, provideSourceControlHistoryItemAvatar, provideSourceControlHistoryItemMessageLinks } from './historyItemDetailsProvider';
+import { throttle } from './decorators';
function compareSourceControlHistoryItemRef(ref1: SourceControlHistoryItemRef, ref2: SourceControlHistoryItemRef): number {
const getOrder = (ref: SourceControlHistoryItemRef): number => {
@@ -87,6 +88,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
this.commitShortHashLength = config.get('commitShortHashLength', 7);
}
+ @throttle
private async onDidRunWriteOperation(result: OperationResult): Promise {
if (!this.repository.HEAD) {
this.logger.trace('[GitHistoryProvider][onDidRunWriteOperation] repository.HEAD is undefined');
diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index 670e667c9f9..111561b665b 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -13,7 +13,7 @@ import { ApiRepository } from './api/api1';
import { Branch, BranchQuery, Change, CommitOptions, FetchOptions, ForcePushMode, GitErrorCodes, LogOptions, Ref, RefType, Remote, Status } from './api/git';
import { AutoFetcher } from './autofetch';
import { GitBranchProtectionProvider, IBranchProtectionProviderRegistry } from './branchProtection';
-import { debounce, memoize, throttle } from './decorators';
+import { debounce, memoize, sequentialize, throttle } from './decorators';
import { Repository as BaseRepository, BlameInformation, Commit, GitError, LogFileOptions, LsTreeElement, PullOptions, RefQuery, Stash, Submodule } from './git';
import { GitHistoryProvider } from './historyProvider';
import { Operation, OperationKind, OperationManager, OperationResult } from './operation';
@@ -1554,6 +1554,7 @@ export class Repository implements Disposable {
});
}
+ @sequentialize
async getBranchBase(ref: string): Promise {
const branch = await this.getBranch(ref);
diff --git a/extensions/github-authentication/media/index.html b/extensions/github-authentication/media/index.html
index efd092d6dfb..16593d751e0 100644
--- a/extensions/github-authentication/media/index.html
+++ b/extensions/github-authentication/media/index.html
@@ -23,13 +23,17 @@