diff --git a/.vscode/launch.json b/.vscode/launch.json
index 216afd8b573d7..2461d8c3ea87f 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -7,9 +7,7 @@
"name": "Gulp Build",
"program": "${workspaceFolder}/node_modules/gulp/bin/gulp.js",
"stopOnEntry": true,
- "args": [
- "hygiene"
- ]
+ "args": ["hygiene"]
},
{
"type": "node",
@@ -30,36 +28,28 @@
"name": "Attach to Shared Process",
"timeout": 0,
"port": 5879,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ]
+ "outFiles": ["${workspaceFolder}/out/**/*.js"]
},
{
"type": "node",
"request": "attach",
"name": "Attach to Search Process",
"port": 5876,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ]
+ "outFiles": ["${workspaceFolder}/out/**/*.js"]
},
{
"type": "node",
"request": "attach",
"name": "Attach to Pty Host Process",
"port": 5877,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ]
+ "outFiles": ["${workspaceFolder}/out/**/*.js"]
},
{
"type": "node",
"request": "attach",
"name": "Attach to CLI Process",
"port": 5874,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ]
+ "outFiles": ["${workspaceFolder}/out/**/*.js"]
},
{
"type": "node",
@@ -68,11 +58,9 @@
"timeout": 30000,
"port": 5875,
"continueOnAttach": true,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
- "hidden": true,
+ "hidden": true
}
},
{
@@ -85,9 +73,7 @@
"--extensionDevelopmentPath=${workspaceFolder}/extensions/emmet",
"--extensionTestsPath=${workspaceFolder}/extensions/emmet/out/test"
],
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 6
@@ -102,9 +88,7 @@
"--extensionDevelopmentPath=${workspaceFolder}/extensions/configuration-editing",
"--extensionTestsPath=${workspaceFolder}/extensions/configuration-editing/out/test"
],
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 6
@@ -120,9 +104,7 @@
"--extensionDevelopmentPath=${workspaceFolder}/extensions/git",
"--extensionTestsPath=${workspaceFolder}/extensions/git/out/test"
],
- "outFiles": [
- "${workspaceFolder}/extensions/git/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/extensions/git/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 6
@@ -138,9 +120,7 @@
"--extensionDevelopmentPath=${workspaceFolder}/extensions/github",
"--extensionTestsPath=${workspaceFolder}/extensions/github/out/test"
],
- "outFiles": [
- "${workspaceFolder}/extensions/github/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/extensions/github/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 6
@@ -194,9 +174,7 @@
"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-colorize-tests",
"--extensionTestsPath=${workspaceFolder}/extensions/vscode-colorize-tests/out"
],
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 5
@@ -212,9 +190,7 @@
"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-colorize-perf-tests",
"--extensionTestsPath=${workspaceFolder}/extensions/vscode-colorize-perf-tests/out"
],
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 6
@@ -226,12 +202,8 @@
"name": "Attach to VS Code",
"browserAttachLocation": "workspace",
"port": 9222,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
- "resolveSourceMapLocations": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
+ "resolveSourceMapLocations": ["${workspaceFolder}/out/**/*.js"],
"perScriptSourcemaps": "yes"
},
{
@@ -252,7 +224,7 @@
"env": {
"VSCODE_EXTHOST_WILL_SEND_SOCKET": null,
"VSCODE_SKIP_PRELAUNCH": "1",
- "VSCODE_DEV_DEBUG_OBSERVABLES": "1",
+ "VSCODE_DEV_DEBUG_OBSERVABLES": "1"
},
"cleanUp": "wholeBrowser",
"killBehavior": "polite",
@@ -266,17 +238,13 @@
],
"userDataDir": "${userHome}/.vscode-oss-dev",
"webRoot": "${workspaceFolder}",
- "cascadeTerminateToConfigurations": [
- "Attach to Extension Host"
- ],
+ "cascadeTerminateToConfigurations": ["Attach to Extension Host"],
"pauseForSourceMap": false,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"browserLaunchLocation": "workspace",
"presentation": {
- "hidden": true,
- },
+ "hidden": true
+ }
},
{
// To debug observables you also need the extension "ms-vscode.debug-value-editor"
@@ -298,7 +266,7 @@
"VSCODE_EXTHOST_WILL_SEND_SOCKET": null,
"VSCODE_SKIP_PRELAUNCH": "1",
"VSCODE_DEV_DEBUG": "1",
- "VSCODE_DEV_DEBUG_OBSERVABLES": "1",
+ "VSCODE_DEV_DEBUG_OBSERVABLES": "1"
},
"cleanUp": "wholeBrowser",
"runtimeArgs": [
@@ -311,17 +279,13 @@
],
"userDataDir": "${userHome}/.vscode-oss-dev",
"webRoot": "${workspaceFolder}",
- "cascadeTerminateToConfigurations": [
- "Attach to Extension Host"
- ],
+ "cascadeTerminateToConfigurations": ["Attach to Extension Host"],
"pauseForSourceMap": false,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"browserLaunchLocation": "workspace",
"presentation": {
- "hidden": true,
- },
+ "hidden": true
+ }
},
{
"type": "node",
@@ -329,11 +293,9 @@
"name": "VS Code Server (Web)",
"runtimeExecutable": "${workspaceFolder}/scripts/code-server.sh",
"windows": {
- "runtimeExecutable": "${workspaceFolder}/scripts/code-server.bat",
+ "runtimeExecutable": "${workspaceFolder}/scripts/code-server.bat"
},
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
"group": "0_vscode",
"order": 2
@@ -347,15 +309,10 @@
"enableContentValidation": false,
"runtimeExecutable": "${workspaceFolder}/scripts/code.sh",
"windows": {
- "runtimeExecutable": "${workspaceFolder}/scripts/code.bat",
+ "runtimeExecutable": "${workspaceFolder}/scripts/code.bat"
},
- "runtimeArgs": [
- "--inspect-brk=5875",
- "--no-cached-data",
- ],
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "runtimeArgs": ["--inspect-brk=5875", "--no-cached-data"],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"presentation": {
"group": "1_vscode",
"order": 1
@@ -422,9 +379,7 @@
"program": "${workspaceFolder}/extensions/git/node_modules/mocha/bin/_mocha",
"stopOnEntry": false,
"cwd": "${workspaceFolder}/extensions/git",
- "outFiles": [
- "${workspaceFolder}/extensions/git/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/extensions/git/out/**/*.js"],
"presentation": {
"group": "5_tests",
"order": 10
@@ -509,16 +464,10 @@
"runtimeExecutable": "${workspaceFolder}/.build/electron/code-oss"
},
"outputCapture": "std",
- "args": [
- "--remote-debugging-port=9222"
- ],
+ "args": ["--remote-debugging-port=9222"],
"cwd": "${workspaceFolder}",
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
- "cascadeTerminateToConfigurations": [
- "Attach to VS Code"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
+ "cascadeTerminateToConfigurations": ["Attach to VS Code"],
"env": {
"MOCHA_COLORS": "true"
},
@@ -538,19 +487,11 @@
"linux": {
"runtimeExecutable": "${workspaceFolder}/.build/electron/code-oss"
},
- "cascadeTerminateToConfigurations": [
- "Attach to VS Code"
- ],
+ "cascadeTerminateToConfigurations": ["Attach to VS Code"],
"outputCapture": "std",
- "args": [
- "--remote-debugging-port=9222",
- "--run",
- "${relativeFile}"
- ],
+ "args": ["--remote-debugging-port=9222", "--run", "${relativeFile}"],
"cwd": "${workspaceFolder}",
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
"env": {
"MOCHA_COLORS": "true"
},
@@ -569,9 +510,7 @@
"-l",
"${workspaceFolder}/.build/electron/Code - OSS.app/Contents/MacOS/Electron"
],
- "outFiles": [
- "${cwd}/out/**/*.js"
- ],
+ "outFiles": ["${cwd}/out/**/*.js"],
"env": {
"NODE_ENV": "development",
"VSCODE_DEV": "1",
@@ -588,11 +527,22 @@
]
},
{
- "name": "Monaco Editor Playground",
+ "name": "Monaco Editor - Playground",
+ "type": "chrome",
+ "request": "launch",
+ "url": "https://microsoft.github.io/monaco-editor/playground.html?source=http%3A%2F%2Flocalhost%3A5199%2Findex.ts%3Fesm#example-creating-the-editor-hello-world",
+ "preLaunchTask": "Launch Monaco Editor Vite",
+ "presentation": {
+ "group": "monaco",
+ "order": 4
+ }
+ },
+ {
+ "name": "Monaco Editor - Self Contained Diff Editor",
"type": "chrome",
"request": "launch",
- "url": "http://localhost:5001",
- "preLaunchTask": "Launch Http Server",
+ "url": "http://localhost:5199/",
+ "preLaunchTask": "Launch Monaco Editor Vite",
"presentation": {
"group": "monaco",
"order": 4
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 51a34c77a5726..96d5015f4d197 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -279,9 +279,12 @@
"detail": "node_modules/tsec/bin/tsec -p src/tsconfig.json --noEmit"
},
{
- "label": "Launch Http Server",
+ "label": "Launch Monaco Editor Vite",
"type": "shell",
- "command": "node_modules/.bin/ts-node -T ./scripts/playground-server",
+ "command": "npm run dev",
+ "options": {
+ "cwd": "./build/monaco-editor-playground/"
+ },
"isBackground": true,
"problemMatcher": {
"pattern": {
@@ -292,10 +295,7 @@
"beginsPattern": "never match",
"endsPattern": ".*"
}
- },
- "dependsOn": [
- "Core - Build"
- ]
+ }
},
{
"label": "Launch MCP Server",
diff --git a/build/monaco-editor-playground/index.html b/build/monaco-editor-playground/index.html
new file mode 100644
index 0000000000000..491876a996d5c
--- /dev/null
+++ b/build/monaco-editor-playground/index.html
@@ -0,0 +1,7 @@
+
+
+
+ Use the Playground Launch Config for a better dev experience
+
+
+
diff --git a/build/monaco-editor-playground/index.ts b/build/monaco-editor-playground/index.ts
new file mode 100644
index 0000000000000..b852612bc66ef
--- /dev/null
+++ b/build/monaco-editor-playground/index.ts
@@ -0,0 +1,22 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+///
+/* eslint-disable local/code-no-standalone-editor */
+
+export * from '../../src/vs/editor/editor.main';
+import './style.css';
+import * as monaco from '../../src/vs/editor/editor.main';
+
+globalThis.monaco = monaco;
+const root = document.getElementById('sampleContent');
+if (root) {
+ const d = monaco.editor.createDiffEditor(root);
+
+ d.setModel({
+ modified: monaco.editor.createModel(`hello world`),
+ original: monaco.editor.createModel(`hello monaco`),
+ });
+}
diff --git a/build/monaco-editor-playground/package-lock.json b/build/monaco-editor-playground/package-lock.json
new file mode 100644
index 0000000000000..394d940223f29
--- /dev/null
+++ b/build/monaco-editor-playground/package-lock.json
@@ -0,0 +1,1043 @@
+{
+ "name": "@vscode/sample-source",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@vscode/sample-source",
+ "version": "0.0.0",
+ "devDependencies": {
+ "vite": "^7.1.9"
+ }
+ },
+ "../lib": {
+ "name": "monaco-editor-core",
+ "version": "0.0.0",
+ "extraneous": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-copy": "^7.1.0",
+ "postcss-copy-assets": "^0.3.1",
+ "rollup": "^4.35.0",
+ "rollup-plugin-esbuild": "^6.2.1",
+ "rollup-plugin-lib-style": "^2.3.2",
+ "rollup-plugin-postcss": "^4.0.2"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.49.0.tgz",
+ "integrity": "sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.49.0.tgz",
+ "integrity": "sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.49.0.tgz",
+ "integrity": "sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.49.0.tgz",
+ "integrity": "sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.49.0.tgz",
+ "integrity": "sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.49.0.tgz",
+ "integrity": "sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.49.0.tgz",
+ "integrity": "sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.49.0.tgz",
+ "integrity": "sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.49.0.tgz",
+ "integrity": "sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.49.0.tgz",
+ "integrity": "sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.49.0.tgz",
+ "integrity": "sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.49.0.tgz",
+ "integrity": "sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.49.0.tgz",
+ "integrity": "sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.49.0.tgz",
+ "integrity": "sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.49.0.tgz",
+ "integrity": "sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.49.0.tgz",
+ "integrity": "sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.49.0.tgz",
+ "integrity": "sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.49.0.tgz",
+ "integrity": "sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.49.0.tgz",
+ "integrity": "sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.49.0.tgz",
+ "integrity": "sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "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/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": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "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.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.49.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.49.0.tgz",
+ "integrity": "sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.49.0",
+ "@rollup/rollup-android-arm64": "4.49.0",
+ "@rollup/rollup-darwin-arm64": "4.49.0",
+ "@rollup/rollup-darwin-x64": "4.49.0",
+ "@rollup/rollup-freebsd-arm64": "4.49.0",
+ "@rollup/rollup-freebsd-x64": "4.49.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.49.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.49.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.49.0",
+ "@rollup/rollup-linux-arm64-musl": "4.49.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.49.0",
+ "@rollup/rollup-linux-ppc64-gnu": "4.49.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.49.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.49.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.49.0",
+ "@rollup/rollup-linux-x64-gnu": "4.49.0",
+ "@rollup/rollup-linux-x64-musl": "4.49.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.49.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.49.0",
+ "@rollup/rollup-win32-x64-msvc": "4.49.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "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/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/vite": {
+ "version": "7.1.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.9.tgz",
+ "integrity": "sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ }
+ }
+}
diff --git a/build/monaco-editor-playground/package.json b/build/monaco-editor-playground/package.json
new file mode 100644
index 0000000000000..709a83aaa1090
--- /dev/null
+++ b/build/monaco-editor-playground/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "@vscode/sample-source",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "vite": "^7.1.9"
+ }
+}
diff --git a/build/monaco-editor-playground/rollup-url-to-module-plugin/index.mjs b/build/monaco-editor-playground/rollup-url-to-module-plugin/index.mjs
new file mode 100644
index 0000000000000..8a0168bd4acbf
--- /dev/null
+++ b/build/monaco-editor-playground/rollup-url-to-module-plugin/index.mjs
@@ -0,0 +1,63 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+/**
+ * @type {() => import('rollup').Plugin}
+*/
+export function urlToEsmPlugin() {
+ return {
+ name: 'import-meta-url',
+ async transform(code, id) {
+ if (this.environment?.mode === 'dev') {
+ return;
+ }
+
+ // Look for `new URL(..., import.meta.url)` patterns.
+ const regex = /new\s+URL\s*\(\s*(['"`])(.*?)\1\s*,\s*import\.meta\.url\s*\)?/g;
+
+ let match;
+ let modified = false;
+ let result = code;
+ let offset = 0;
+
+ while ((match = regex.exec(code)) !== null) {
+ let path = match[2];
+
+ if (!path.startsWith('.') && !path.startsWith('/')) {
+ path = `./${path}`;
+ }
+ const resolved = await this.resolve(path, id);
+
+ if (!resolved) {
+ continue;
+ }
+
+ // Add the file as an entry point
+ const refId = this.emitFile({
+ type: 'chunk',
+ id: resolved.id,
+ });
+
+ const start = match.index;
+ const end = start + match[0].length;
+
+ const replacement = `import.meta.ROLLUP_FILE_URL_OBJ_${refId}`;
+
+ result = result.slice(0, start + offset) + replacement + result.slice(end + offset);
+ offset += replacement.length - (end - start);
+ modified = true;
+ }
+
+ if (!modified) {
+ return null;
+ }
+
+ return {
+ code: result,
+ map: null
+ };
+ }
+ };
+}
diff --git a/build/monaco-editor-playground/style.css b/build/monaco-editor-playground/style.css
new file mode 100644
index 0000000000000..5be5fa0e5d120
--- /dev/null
+++ b/build/monaco-editor-playground/style.css
@@ -0,0 +1,9 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+#root {
+ height: 400px;
+ border: 1px solid black;
+}
diff --git a/build/monaco-editor-playground/tsconfig.json b/build/monaco-editor-playground/tsconfig.json
new file mode 100644
index 0000000000000..454dc14491fe5
--- /dev/null
+++ b/build/monaco-editor-playground/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "allowImportingTsExtensions": true,
+ "noEmit": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "experimentalDecorators": true,
+ },
+ "include": ["**/*.ts"]
+}
diff --git a/build/monaco-editor-playground/vite.config.ts b/build/monaco-editor-playground/vite.config.ts
new file mode 100644
index 0000000000000..483e9b24cbe5b
--- /dev/null
+++ b/build/monaco-editor-playground/vite.config.ts
@@ -0,0 +1,31 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { defineConfig } from 'vite';
+import { join } from 'path';
+/// @ts-ignore
+import { urlToEsmPlugin } from './rollup-url-to-module-plugin/index.mjs';
+
+export default defineConfig({
+ plugins: [
+ urlToEsmPlugin()
+ ],
+ esbuild: {
+ target: 'es6', // to fix property initialization issues, not needed when loading monaco-editor from npm package
+ },
+
+ server: {
+ cors: true,
+ port: 5199,
+ origin: 'http://localhost:5199',
+ fs: {
+ allow: [
+ // To allow loading from sources, not needed when loading monaco-editor from npm package
+ /// @ts-ignore
+ join(import.meta.dirname, '../../../')
+ ]
+ }
+ }
+});
diff --git a/build/npm/dirs.js b/build/npm/dirs.js
index 4965b73c4ed67..935d8a8a529d2 100644
--- a/build/npm/dirs.js
+++ b/build/npm/dirs.js
@@ -9,6 +9,7 @@ const fs = require('fs');
const dirs = [
'',
'build',
+ 'build/monaco-editor-playground',
'extensions',
'extensions/configuration-editing',
'extensions/css-language-features',
diff --git a/src/vs/base/browser/webWorkerFactory.ts b/src/vs/base/browser/webWorkerFactory.ts
index 83c587f16f17d..98e4fc6fe852e 100644
--- a/src/vs/base/browser/webWorkerFactory.ts
+++ b/src/vs/base/browser/webWorkerFactory.ts
@@ -33,24 +33,29 @@ export function createBlobWorker(blobUrl: string, options?: WorkerOptions): Work
return new Worker(ttPolicy ? ttPolicy.createScriptURL(blobUrl) as unknown as string : blobUrl, { ...options, type: 'module' });
}
-function getWorker(descriptor: IWebWorkerDescriptor, id: number): Worker | Promise {
+function getWorker(descriptor: WebWorkerDescriptor, id: number): Worker | Promise {
const label = descriptor.label || 'anonymous' + id;
// Option for hosts to overwrite the worker script (used in the standalone editor)
const monacoEnvironment = getMonacoEnvironment();
if (monacoEnvironment) {
if (typeof monacoEnvironment.getWorker === 'function') {
- return monacoEnvironment.getWorker('workerMain.js', label);
+ const w = monacoEnvironment.getWorker('workerMain.js', label);
+ if (w !== undefined) {
+ return w;
+ }
}
if (typeof monacoEnvironment.getWorkerUrl === 'function') {
const workerUrl = monacoEnvironment.getWorkerUrl('workerMain.js', label);
- return new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label, type: 'module' });
+ if (workerUrl !== undefined) {
+ return new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label, type: 'module' });
+ }
}
}
- const esmWorkerLocation = descriptor.esmModuleLocation;
+ const esmWorkerLocation = descriptor.getUrl();
if (esmWorkerLocation) {
- const workerUrl = getWorkerBootstrapUrl(label, esmWorkerLocation.toString(true));
+ const workerUrl = getWorkerBootstrapUrl(label, esmWorkerLocation);
const worker = new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label, type: 'module' });
return whenESMWorkerReady(worker);
}
@@ -128,7 +133,7 @@ class WebWorker extends Disposable implements IWebWorker {
private readonly _onError = this._register(new Emitter());
public readonly onError = this._onError.event;
- constructor(descriptorOrWorker: IWebWorkerDescriptor | Worker | Promise) {
+ constructor(descriptorOrWorker: WebWorkerDescriptor | Worker | Promise) {
super();
this.id = ++WebWorker.LAST_WORKER_ID;
const workerOrPromise = (
@@ -184,21 +189,42 @@ class WebWorker extends Disposable implements IWebWorker {
}
}
-export interface IWebWorkerDescriptor {
- readonly esmModuleLocation: URI | undefined;
- readonly label: string | undefined;
-}
+export class WebWorkerDescriptor {
+ public readonly esmModuleLocation: URI | (() => URI) | undefined;
+ public readonly esmModuleLocationBundler: URL | (() => URL) | undefined;
+ public readonly label: string | undefined;
+
+ constructor(args: {
+ /** The location of the esm module after transpilation */
+ esmModuleLocation?: URI | (() => URI);
+ /** The location of the esm module when used in a bundler environment. Refer to the typescript file in the src folder and use `?worker`. */
+ esmModuleLocationBundler?: URL | (() => URL);
+ label?: string;
+ }) {
+ this.esmModuleLocation = args.esmModuleLocation;
+ this.esmModuleLocationBundler = args.esmModuleLocationBundler;
+ this.label = args.label;
+ }
+
+ getUrl(): string | undefined {
+ try {
+ if (this.esmModuleLocation) {
+ const esmWorkerLocation = typeof this.esmModuleLocation === 'function' ? this.esmModuleLocation() : this.esmModuleLocation;
+ return esmWorkerLocation.toString(true);
+ }
+ } catch (e) {
+ // ignore
+ }
-export class WebWorkerDescriptor implements IWebWorkerDescriptor {
- constructor(
- public readonly esmModuleLocation: URI,
- public readonly label: string | undefined,
- ) { }
+ if (this.esmModuleLocationBundler) {
+ const esmWorkerLocation = typeof this.esmModuleLocationBundler === 'function' ? this.esmModuleLocationBundler() : this.esmModuleLocationBundler;
+ return esmWorkerLocation.toString();
+ }
+
+ return undefined;
+ }
}
-export function createWebWorker(esmModuleLocation: URI, label: string | undefined): IWebWorkerClient;
-export function createWebWorker(workerDescriptor: IWebWorkerDescriptor | Worker | Promise): IWebWorkerClient;
-export function createWebWorker(arg0: URI | IWebWorkerDescriptor | Worker | Promise, arg1?: string | undefined): IWebWorkerClient {
- const workerDescriptorOrWorker = (URI.isUri(arg0) ? new WebWorkerDescriptor(arg0, arg1) : arg0);
- return new WebWorkerClient(new WebWorker(workerDescriptorOrWorker));
+export function createWebWorker(workerDescriptor: WebWorkerDescriptor | Worker | Promise): IWebWorkerClient {
+ return new WebWorkerClient(new WebWorker(workerDescriptor));
}
diff --git a/src/vs/editor/browser/services/editorWorkerService.ts b/src/vs/editor/browser/services/editorWorkerService.ts
index d8cd71a153f30..ba4eaea721c12 100644
--- a/src/vs/editor/browser/services/editorWorkerService.ts
+++ b/src/vs/editor/browser/services/editorWorkerService.ts
@@ -7,7 +7,7 @@ import { timeout } from '../../../base/common/async.js';
import { Disposable, IDisposable } from '../../../base/common/lifecycle.js';
import { URI } from '../../../base/common/uri.js';
import { logOnceWebWorkerWarning, IWebWorkerClient, Proxied } from '../../../base/common/worker/webWorker.js';
-import { createWebWorker, IWebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';
import { Position } from '../../common/core/position.js';
import { IRange, Range } from '../../common/core/range.js';
import { ITextModel } from '../../common/model.js';
@@ -35,6 +35,8 @@ import { WorkerTextModelSyncClient } from '../../common/services/textModelSync/t
import { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';
import { StringEdit } from '../../common/core/edits/stringEdit.js';
import { OffsetRange } from '../../common/core/ranges/offsetRange.js';
+import { FileAccess } from '../../../base/common/network.js';
+import { InstantiationType, registerSingleton } from '../../../platform/instantiation/common/extensions.js';
/**
* Stop the worker if it was not needed for 5 min.
@@ -52,7 +54,7 @@ function canSyncModel(modelService: IModelService, resource: URI): boolean {
return true;
}
-export abstract class EditorWorkerService extends Disposable implements IEditorWorkerService {
+export class EditorWorkerService extends Disposable implements IEditorWorkerService {
declare readonly _serviceBrand: undefined;
@@ -61,7 +63,6 @@ export abstract class EditorWorkerService extends Disposable implements IEditorW
private readonly _logService: ILogService;
constructor(
- workerDescriptor: IWebWorkerDescriptor,
@IModelService modelService: IModelService,
@ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,
@ILogService logService: ILogService,
@@ -70,6 +71,13 @@ export abstract class EditorWorkerService extends Disposable implements IEditorW
) {
super();
this._modelService = modelService;
+
+ const workerDescriptor = new WebWorkerDescriptor({
+ esmModuleLocation: () => FileAccess.asBrowserUri('vs/editor/common/services/editorWebWorkerMain.js'),
+ esmModuleLocationBundler: () => new URL('../../common/services/editorWebWorkerMain.ts?worker', import.meta.url),
+ label: 'editorWorkerService'
+ });
+
this._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService));
this._logService = logService;
@@ -241,6 +249,8 @@ export abstract class EditorWorkerService extends Disposable implements IEditorW
}
}
+registerSingleton(IEditorWorkerService, EditorWorkerService, InstantiationType.Eager /* registers link detection and word based suggestions for any document */);
+
class WordBasedCompletionItemProvider implements languages.CompletionItemProvider {
private readonly _workerManager: WorkerManager;
@@ -330,7 +340,7 @@ class WorkerManager extends Disposable {
private _lastWorkerUsedTime: number;
constructor(
- private readonly _workerDescriptor: IWebWorkerDescriptor,
+ private readonly _workerDescriptor: WebWorkerDescriptor,
@IModelService modelService: IModelService
) {
super();
@@ -427,7 +437,7 @@ export class EditorWorkerClient extends Disposable implements IEditorWorkerClien
private _disposed = false;
constructor(
- private readonly _workerDescriptorOrWorker: IWebWorkerDescriptor | Worker | Promise,
+ private readonly _workerDescriptorOrWorker: WebWorkerDescriptor | Worker | Promise,
keepIdleModels: boolean,
@IModelService modelService: IModelService,
) {
diff --git a/src/vs/editor/contrib/suggest/test/browser/wordDistance.test.ts b/src/vs/editor/contrib/suggest/test/browser/wordDistance.test.ts
index 5c50c04166b94..334eab08c48cc 100644
--- a/src/vs/editor/contrib/suggest/test/browser/wordDistance.test.ts
+++ b/src/vs/editor/contrib/suggest/test/browser/wordDistance.test.ts
@@ -65,7 +65,7 @@ suite('suggest, word distance', function () {
private _worker = new EditorWorker();
constructor() {
- super(null!, modelService, new class extends mock() { }, new NullLogService(), new TestLanguageConfigurationService(), new LanguageFeaturesService());
+ super(modelService, new class extends mock() { }, new NullLogService(), new TestLanguageConfigurationService(), new LanguageFeaturesService());
this._worker.$acceptNewModel({
url: model.uri.toString(),
lines: model.getLinesContent(),
diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts
index 9ffecaa15ecd1..5aabf5c42c8e2 100644
--- a/src/vs/editor/standalone/browser/standaloneServices.ts
+++ b/src/vs/editor/standalone/browser/standaloneServices.ts
@@ -61,8 +61,6 @@ import { LanguageService } from '../../common/services/languageService.js';
import { ContextMenuService } from '../../../platform/contextview/browser/contextMenuService.js';
import { getSingletonServiceDescriptors, InstantiationType, registerSingleton } from '../../../platform/instantiation/common/extensions.js';
import { OpenerService } from '../../browser/services/openerService.js';
-import { IEditorWorkerService } from '../../common/services/editorWorker.js';
-import { EditorWorkerService } from '../../browser/services/editorWorkerService.js';
import { ILanguageService } from '../../common/languages/language.js';
import { MarkerDecorationsService } from '../../common/services/markerDecorationsService.js';
import { IMarkerDecorationsService } from '../../common/services/markerDecorations.js';
@@ -89,15 +87,12 @@ import { IStorageService, InMemoryStorageService } from '../../../platform/stora
import { DefaultConfiguration } from '../../../platform/configuration/common/configurations.js';
import { WorkspaceEdit } from '../../common/languages.js';
import { AccessibilitySignal, AccessibilityModality, IAccessibilitySignalService, Sound } from '../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';
-import { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';
-import { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';
import { LogService } from '../../../platform/log/common/logService.js';
import { getEditorFeatures } from '../../common/editorFeatures.js';
import { onUnexpectedError } from '../../../base/common/errors.js';
import { ExtensionKind, IEnvironmentService, IExtensionHostDebugParams } from '../../../platform/environment/common/environment.js';
import { mainWindow } from '../../../base/browser/window.js';
import { ResourceMap } from '../../../base/common/map.js';
-import { IWebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';
import { ITreeSitterLibraryService } from '../../common/services/treeSitter/treeSitterLibraryService.js';
import { StandaloneTreeSitterLibraryService } from './standaloneTreeSitterLibraryService.js';
import { IDataChannelService, NullDataChannelService } from '../../../platform/dataChannel/common/dataChannel.js';
@@ -1075,23 +1070,6 @@ class StandaloneContextMenuService extends ContextMenuService {
}
}
-const standaloneEditorWorkerDescriptor: IWebWorkerDescriptor = {
- esmModuleLocation: undefined,
- label: 'editorWorkerService'
-};
-
-class StandaloneEditorWorkerService extends EditorWorkerService {
- constructor(
- @IModelService modelService: IModelService,
- @ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,
- @ILogService logService: ILogService,
- @ILanguageConfigurationService languageConfigurationService: ILanguageConfigurationService,
- @ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,
- ) {
- super(standaloneEditorWorkerDescriptor, modelService, configurationService, logService, languageConfigurationService, languageFeaturesService);
- }
-}
-
class StandaloneAccessbilitySignalService implements IAccessibilitySignalService {
_serviceBrand: undefined;
async playSignal(cue: AccessibilitySignal, options: {}): Promise {
@@ -1151,7 +1129,6 @@ registerSingleton(IContextKeyService, ContextKeyService, InstantiationType.Eager
registerSingleton(IProgressService, StandaloneProgressService, InstantiationType.Eager);
registerSingleton(IEditorProgressService, StandaloneEditorProgressService, InstantiationType.Eager);
registerSingleton(IStorageService, InMemoryStorageService, InstantiationType.Eager);
-registerSingleton(IEditorWorkerService, StandaloneEditorWorkerService, InstantiationType.Eager);
registerSingleton(IBulkEditService, StandaloneBulkEditService, InstantiationType.Eager);
registerSingleton(IWorkspaceTrustManagementService, StandaloneWorkspaceTrustManagementService, InstantiationType.Eager);
registerSingleton(ITextModelService, StandaloneTextModelService, InstantiationType.Eager);
diff --git a/src/vs/platform/profiling/electron-browser/profileAnalysisWorkerService.ts b/src/vs/platform/profiling/electron-browser/profileAnalysisWorkerService.ts
index 1edace6dcafcf..c837b9b937de8 100644
--- a/src/vs/platform/profiling/electron-browser/profileAnalysisWorkerService.ts
+++ b/src/vs/platform/profiling/electron-browser/profileAnalysisWorkerService.ts
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
-import { createWebWorker } from '../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../base/browser/webWorkerFactory.js';
import { URI } from '../../../base/common/uri.js';
import { Proxied } from '../../../base/common/worker/webWorker.js';
import { InstantiationType, registerSingleton } from '../../instantiation/common/extensions.js';
@@ -49,8 +49,10 @@ class ProfileAnalysisWorkerService implements IProfileAnalysisWorkerService {
private async _withWorker(callback: (worker: Proxied) => Promise): Promise {
const worker = createWebWorker(
- FileAccess.asBrowserUri('vs/platform/profiling/electron-browser/profileAnalysisWorkerMain.js'),
- 'CpuProfileAnalysisWorker'
+ new WebWorkerDescriptor({
+ esmModuleLocation: FileAccess.asBrowserUri('vs/platform/profiling/electron-browser/profileAnalysisWorkerMain.js'),
+ label: 'CpuProfileAnalysisWorker'
+ })
);
try {
diff --git a/src/vs/workbench/contrib/codeEditor/browser/workbenchEditorWorkerService.ts b/src/vs/workbench/contrib/codeEditor/browser/workbenchEditorWorkerService.ts
deleted file mode 100644
index b74d233147b7d..0000000000000
--- a/src/vs/workbench/contrib/codeEditor/browser/workbenchEditorWorkerService.ts
+++ /dev/null
@@ -1,26 +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 { WebWorkerDescriptor } from '../../../../base/browser/webWorkerFactory.js';
-import { FileAccess } from '../../../../base/common/network.js';
-import { EditorWorkerService } from '../../../../editor/browser/services/editorWorkerService.js';
-import { ILanguageConfigurationService } from '../../../../editor/common/languages/languageConfigurationRegistry.js';
-import { ILanguageFeaturesService } from '../../../../editor/common/services/languageFeatures.js';
-import { IModelService } from '../../../../editor/common/services/model.js';
-import { ITextResourceConfigurationService } from '../../../../editor/common/services/textResourceConfiguration.js';
-import { ILogService } from '../../../../platform/log/common/log.js';
-
-export class WorkbenchEditorWorkerService extends EditorWorkerService {
- constructor(
- @IModelService modelService: IModelService,
- @ITextResourceConfigurationService configurationService: ITextResourceConfigurationService,
- @ILogService logService: ILogService,
- @ILanguageConfigurationService languageConfigurationService: ILanguageConfigurationService,
- @ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,
- ) {
- const workerDescriptor = new WebWorkerDescriptor(FileAccess.asBrowserUri('vs/editor/common/services/editorWebWorkerMain.js'), 'TextEditorWorker');
- super(workerDescriptor, modelService, configurationService, logService, languageConfigurationService, languageFeaturesService);
- }
-}
diff --git a/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.ts b/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.ts
index 8086431811b83..622692d670a65 100644
--- a/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.ts
+++ b/src/vs/workbench/contrib/notebook/browser/services/notebookWorkerServiceImpl.ts
@@ -6,7 +6,7 @@
import { Disposable, DisposableStore, dispose, IDisposable, toDisposable } from '../../../../../base/common/lifecycle.js';
import { URI } from '../../../../../base/common/uri.js';
import { IWebWorkerClient, Proxied } from '../../../../../base/common/worker/webWorker.js';
-import { createWebWorker } from '../../../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../../../base/browser/webWorkerFactory.js';
import { NotebookCellTextModel } from '../../common/model/notebookCellTextModel.js';
import { CellUri, IMainCellDto, INotebookDiffResult, NotebookCellsChangeType, NotebookRawContentEventDto } from '../../common/notebookCommon.js';
import { INotebookService } from '../../common/notebookService.js';
@@ -274,8 +274,10 @@ class NotebookWorkerClient extends Disposable {
if (!this._worker) {
try {
this._worker = this._register(createWebWorker(
- FileAccess.asBrowserUri('vs/workbench/contrib/notebook/common/services/notebookWebWorkerMain.js'),
- 'NotebookEditorWorker'
+ new WebWorkerDescriptor({
+ esmModuleLocation: FileAccess.asBrowserUri('vs/workbench/contrib/notebook/common/services/notebookWebWorkerMain.js'),
+ label: 'NotebookEditorWorker'
+ })
));
} catch (err) {
throw (err);
diff --git a/src/vs/workbench/contrib/output/browser/outputLinkProvider.ts b/src/vs/workbench/contrib/output/browser/outputLinkProvider.ts
index 9fe87b7af5ee3..6a291ecb3ffaa 100644
--- a/src/vs/workbench/contrib/output/browser/outputLinkProvider.ts
+++ b/src/vs/workbench/contrib/output/browser/outputLinkProvider.ts
@@ -12,7 +12,7 @@ import { OUTPUT_MODE_ID, LOG_MODE_ID } from '../../../services/output/common/out
import { OutputLinkComputer } from '../common/outputLinkComputer.js';
import { IDisposable, dispose, Disposable } from '../../../../base/common/lifecycle.js';
import { ILanguageFeaturesService } from '../../../../editor/common/services/languageFeatures.js';
-import { createWebWorker } from '../../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../../base/browser/webWorkerFactory.js';
import { IWebWorkerClient } from '../../../../base/common/worker/webWorker.js';
import { WorkerTextModelSyncClient } from '../../../../editor/common/services/textModelSync/textModelSync.impl.js';
import { FileAccess } from '../../../../base/common/network.js';
@@ -99,8 +99,10 @@ class OutputLinkWorkerClient extends Disposable {
) {
super();
this._workerClient = this._register(createWebWorker(
- FileAccess.asBrowserUri('vs/workbench/contrib/output/common/outputLinkComputerMain.js'),
- 'OutputLinkDetectionWorker'
+ new WebWorkerDescriptor({
+ esmModuleLocation: FileAccess.asBrowserUri('vs/workbench/contrib/output/common/outputLinkComputerMain.js'),
+ label: 'OutputLinkDetectionWorker'
+ })
));
this._workerTextModelSyncClient = this._register(WorkerTextModelSyncClient.create(this._workerClient, modelService));
this._initializeBarrier = this._ensureWorkspaceFolders();
diff --git a/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts b/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts
index 5a2459918f4dd..9fc668b5cb04c 100644
--- a/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts
+++ b/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts
@@ -22,7 +22,7 @@ import { IStorageService, StorageScope, StorageTarget } from '../../../../platfo
import { LRUCache } from '../../../../base/common/map.js';
import { ILogService } from '../../../../platform/log/common/log.js';
import { canASAR } from '../../../../amdX.js';
-import { createWebWorker } from '../../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../../base/browser/webWorkerFactory.js';
import { WorkerTextModelSyncClient } from '../../../../editor/common/services/textModelSync/textModelSync.impl.js';
import { ILanguageDetectionWorker, LanguageDetectionWorkerHost } from './languageDetectionWorker.protocol.js';
@@ -201,8 +201,10 @@ export class LanguageDetectionWorkerClient extends Disposable {
} {
if (!this.worker) {
const workerClient = this._register(createWebWorker(
- FileAccess.asBrowserUri('vs/workbench/services/languageDetection/browser/languageDetectionWebWorkerMain.js'),
- 'LanguageDetectionWorker'
+ new WebWorkerDescriptor({
+ esmModuleLocation: FileAccess.asBrowserUri('vs/workbench/services/languageDetection/browser/languageDetectionWebWorkerMain.js'),
+ label: 'LanguageDetectionWorker'
+ })
));
LanguageDetectionWorkerHost.setChannel(workerClient, {
$getIndexJsUri: async () => this.getIndexJsUri(),
diff --git a/src/vs/workbench/services/search/browser/searchService.ts b/src/vs/workbench/services/search/browser/searchService.ts
index 5d1dc405a6805..5c1ad04633e89 100644
--- a/src/vs/workbench/services/search/browser/searchService.ts
+++ b/src/vs/workbench/services/search/browser/searchService.ts
@@ -16,7 +16,7 @@ import { SearchService } from '../common/searchService.js';
import { IUriIdentityService } from '../../../../platform/uriIdentity/common/uriIdentity.js';
import { IWebWorkerClient, logOnceWebWorkerWarning } from '../../../../base/common/worker/webWorker.js';
import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';
-import { createWebWorker } from '../../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../../base/browser/webWorkerFactory.js';
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
import { ILocalFileSearchWorker, LocalFileSearchWorkerHost } from '../common/localFileSearchWorkerTypes.js';
import { memoize } from '../../../../base/common/decorators.js';
@@ -188,8 +188,10 @@ export class LocalFileSearchWorkerClient extends Disposable implements ISearchRe
if (!this._worker) {
try {
this._worker = this._register(createWebWorker(
- FileAccess.asBrowserUri('vs/workbench/services/search/worker/localFileSearchMain.js'),
- 'LocalFileSearchWorker'
+ new WebWorkerDescriptor({
+ esmModuleLocation: FileAccess.asBrowserUri('vs/workbench/services/search/worker/localFileSearchMain.js'),
+ label: 'LocalFileSearchWorker'
+ })
));
LocalFileSearchWorkerHost.setChannel(this._worker, {
$sendTextSearchMatch: (match, queryId) => {
diff --git a/src/vs/workbench/services/textMate/browser/backgroundTokenization/threadedBackgroundTokenizerFactory.ts b/src/vs/workbench/services/textMate/browser/backgroundTokenization/threadedBackgroundTokenizerFactory.ts
index 59502ab69cc6d..cefef2220892d 100644
--- a/src/vs/workbench/services/textMate/browser/backgroundTokenization/threadedBackgroundTokenizerFactory.ts
+++ b/src/vs/workbench/services/textMate/browser/backgroundTokenization/threadedBackgroundTokenizerFactory.ts
@@ -22,7 +22,7 @@ import { TextMateWorkerHost } from './worker/textMateWorkerHost.js';
import { TextMateWorkerTokenizerController } from './textMateWorkerTokenizerController.js';
import { IValidGrammarDefinition } from '../../common/TMScopeRegistry.js';
import type { IRawTheme } from 'vscode-textmate';
-import { createWebWorker } from '../../../../../base/browser/webWorkerFactory.js';
+import { createWebWorker, WebWorkerDescriptor } from '../../../../../base/browser/webWorkerFactory.js';
import { IWebWorkerClient, Proxied } from '../../../../../base/common/worker/webWorker.js';
export class ThreadedBackgroundTokenizerFactory implements IDisposable {
@@ -138,8 +138,10 @@ export class ThreadedBackgroundTokenizerFactory implements IDisposable {
onigurumaWASMUri: FileAccess.asBrowserUri(onigurumaWASM).toString(true),
};
const worker = this._worker = createWebWorker(
- FileAccess.asBrowserUri('vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.workerMain.js'),
- 'TextMateWorker'
+ new WebWorkerDescriptor({
+ esmModuleLocation: FileAccess.asBrowserUri('vs/workbench/services/textMate/browser/backgroundTokenization/worker/textMateTokenizationWorker.workerMain.js'),
+ label: 'TextMateWorker'
+ })
);
TextMateWorkerHost.setChannel(worker, {
$readFile: async (_resource: UriComponents): Promise => {
diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts
index b722503a8d9a6..8734ede8cb8f7 100644
--- a/src/vs/workbench/workbench.common.main.ts
+++ b/src/vs/workbench/workbench.common.main.ts
@@ -139,8 +139,6 @@ import { IAllowedExtensionsService, IGlobalExtensionEnablementService } from '..
import { ContextViewService } from '../platform/contextview/browser/contextViewService.js';
import { IContextViewService } from '../platform/contextview/browser/contextView.js';
import { IListService, ListService } from '../platform/list/browser/listService.js';
-import { IEditorWorkerService } from '../editor/common/services/editorWorker.js';
-import { WorkbenchEditorWorkerService } from './contrib/codeEditor/browser/workbenchEditorWorkerService.js';
import { MarkerDecorationsService } from '../editor/common/services/markerDecorationsService.js';
import { IMarkerDecorationsService } from '../editor/common/services/markerDecorations.js';
import { IMarkerService } from '../platform/markers/common/markers.js';
@@ -169,7 +167,6 @@ registerSingleton(IGlobalExtensionEnablementService, GlobalExtensionEnablementSe
registerSingleton(IExtensionStorageService, ExtensionStorageService, InstantiationType.Delayed);
registerSingleton(IContextViewService, ContextViewService, InstantiationType.Delayed);
registerSingleton(IListService, ListService, InstantiationType.Delayed);
-registerSingleton(IEditorWorkerService, WorkbenchEditorWorkerService, InstantiationType.Eager /* registers link detection and word based suggestions for any document */);
registerSingleton(IMarkerDecorationsService, MarkerDecorationsService, InstantiationType.Delayed);
registerSingleton(IMarkerService, MarkerService, InstantiationType.Delayed);
registerSingleton(IContextKeyService, ContextKeyService, InstantiationType.Delayed);