From 0c53281f63826538e383325b16c796bec31e04e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 20:45:26 +0100 Subject: [PATCH 01/10] lib: update monaco-editor/vscode --- package-lock.json | 338 +++++++++++++++++++++++----------------------- package.json | 44 +++--- 2 files changed, 189 insertions(+), 193 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f681171..822f2fbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,31 +12,31 @@ "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@parcel/watcher": "2.1.0", - "@vscode/proxy-agent": "^0.17.4", - "@vscode/ripgrep": "^1.15.5", - "@vscode/spdlog": "^0.13.11", + "@vscode/proxy-agent": "^0.18.2", + "@vscode/ripgrep": "^1.15.9", + "@vscode/spdlog": "^0.13.12", "@vscode/vscode-languagedetection": "1.0.21", "@vscode/windows-process-tree": "^0.5.0", + "@xterm/addon-canvas": "0.6.0-beta.14", + "@xterm/addon-image": "0.7.0-beta.12", + "@xterm/addon-search": "0.14.0-beta.14", + "@xterm/addon-serialize": "0.12.0-beta.14", + "@xterm/addon-unicode11": "0.7.0-beta.14", + "@xterm/addon-webgl": "0.17.0-beta.14", + "@xterm/headless": "5.4.0-beta.14", + "@xterm/xterm": "5.4.0-beta.14", "cookie": "^0.5.0", "kerberos": "^2.0.1", "keytar": "^7.9.0", "memfs": "^4.6.0", "mime-types": "^2.1.35", - "monaco-editor": "0.44.0", - "node-pty": "1.1.0-beta1", + "monaco-editor": "0.45.0", + "node-pty": "1.1.0-beta5", "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", "vscode-semver": "npm:semver@=5.5.0", "vscode-textmate": "9.0.0", - "xterm": "5.4.0-beta.27", - "xterm-addon-canvas": "0.6.0-beta.27", - "xterm-addon-image": "0.6.0-beta.21", - "xterm-addon-search": "0.14.0-beta.27", - "xterm-addon-serialize": "0.12.0-beta.26", - "xterm-addon-unicode11": "0.7.0-beta.26", - "xterm-addon-webgl": "0.17.0-beta.26", - "xterm-headless": "5.4.0-beta.27", - "yauzl": "^2.10.0", + "yauzl": "^2.9.2", "yazl": "^2.4.3" }, "devDependencies": { @@ -54,15 +54,15 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "^5.0.5", "@rollup/plugin-typescript": "^11.1.5", - "@types/diff": "^5.0.8", + "@types/diff": "^5.0.9", "@types/mime-types": "^2.1.4", "@types/node": "^18.17.15", "@types/semver": "^7.5.6", - "@types/vscode": "~1.83.0", + "@types/vscode": "~1.84.2", "@types/vscode-semver": "npm:@types/semver@=5.5.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", + "@typescript-eslint/eslint-plugin": "^6.13.2", + "@typescript-eslint/parser": "^6.13.2", "@vscode/iconv-lite-umd": "^0.7.0", "@web/rollup-plugin-import-meta-assets": "^2.2.1", "change-package-name": "^1.0.5", @@ -92,7 +92,7 @@ "ts-morph": "^21.0.1", "ts-node": "^10.9.1", "type-fest": "^4.8.3", - "typescript": "5.3.2", + "typescript": "5.3.3", "xterm-headless": "^5.3.0", "zx": "^7.2.3" } @@ -2903,9 +2903,9 @@ } }, "node_modules/@types/diff": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.8.tgz", - "integrity": "sha512-kR0gRf0wMwpxQq6ME5s+tWk9zVCfJUl98eRkD05HWWRbhPB/eu4V1IbyZAsvzC1Gn4znBJ0HN01M4DGXdBEV8Q==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.9.tgz", + "integrity": "sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==", "dev": true }, "node_modules/@types/estree": { @@ -3009,9 +3009,9 @@ "dev": true }, "node_modules/@types/vscode": { - "version": "1.83.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.0.tgz", - "integrity": "sha512-3mUtHqLAVz9hegut9au4xehuBrzRE3UJiQMpoEHkNl6XHliihO7eATx2BMHs0odsmmrwjJrlixx/Pte6M3ygDQ==", + "version": "1.84.2", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.84.2.tgz", + "integrity": "sha512-LCe1FvCDMJKkPdLVGYhP0HRJ1PDop2gRVm/zFHiOKwYLBRS7vEV3uOOUId4HMV+L1IxqyS+IZXMmlSMRbZGIAw==", "dev": true }, "node_modules/@types/vscode-semver": { @@ -3037,16 +3037,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz", - "integrity": "sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", + "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/type-utils": "6.13.1", - "@typescript-eslint/utils": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/type-utils": "6.13.2", + "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3072,15 +3072,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.1.tgz", - "integrity": "sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", + "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4" }, "engines": { @@ -3100,13 +3100,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz", - "integrity": "sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", + "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1" + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3117,13 +3117,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz", - "integrity": "sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", + "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/utils": "6.13.1", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/utils": "6.13.2", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3144,9 +3144,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.1.tgz", - "integrity": "sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", + "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3157,13 +3157,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz", - "integrity": "sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", + "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3184,17 +3184,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.1.tgz", - "integrity": "sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", + "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", "semver": "^7.5.4" }, "engines": { @@ -3209,12 +3209,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz", - "integrity": "sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", + "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", + "@typescript-eslint/types": "6.13.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3238,15 +3238,15 @@ "dev": true }, "node_modules/@vscode/proxy-agent": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@vscode/proxy-agent/-/proxy-agent-0.17.4.tgz", - "integrity": "sha512-tX8eidofoJlZFRWzdiiW3wyu26hgIRk8HvM/RoP1wVSu3U/As36EgGIZYG6pPnqiythRqTcsddniVNA5M39g4w==", + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/@vscode/proxy-agent/-/proxy-agent-0.18.2.tgz", + "integrity": "sha512-yDj/JI9otEEUVU36dKOWNitGk4tBcriIeE6uvVGEdvKbpVD7L9UMNvL/wCoHCOqBnf2g5jUhWSURWDVyAhJn2Q==", "dependencies": { "@tootallnate/once": "^3.0.0", "agent-base": "^7.0.1", "debug": "^4.3.4", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.2", "socks-proxy-agent": "^8.0.1" }, "optionalDependencies": { @@ -3254,58 +3254,36 @@ } }, "node_modules/@vscode/ripgrep": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.15.5.tgz", - "integrity": "sha512-PVvKNEmtnlek3i4MJMaB910dz46CKQqcIY2gKR3PSlfz/ZPlSYuSuyQMS7iK20KL4hGUdSbWt964B5S5EIojqw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.15.9.tgz", + "integrity": "sha512-4q2PXRvUvr3bF+LsfrifmUZgSPmCNcUZo6SbEAZgArIChchkezaxLoIeQMJe/z3CCKStvaVKpBXLxN3Z8lQjFQ==", "hasInstallScript": true, "dependencies": { - "https-proxy-agent": "^5.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/@vscode/ripgrep/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@vscode/ripgrep/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "https-proxy-agent": "^7.0.2", + "proxy-from-env": "^1.1.0", + "yauzl": "^2.9.2" } }, "node_modules/@vscode/spdlog": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/@vscode/spdlog/-/spdlog-0.13.11.tgz", - "integrity": "sha512-4qk6G3XKTJNsrqsGwmo9lr8NPaH84WeLsoFVPrpvoEC1t1tFu7H6l4RRMgzKNeE92nwRbjejLv1nATJNoabRfA==", + "version": "0.13.12", + "resolved": "https://registry.npmjs.org/@vscode/spdlog/-/spdlog-0.13.12.tgz", + "integrity": "sha512-8Qw8VwBzFkH6AWVKh+ULeVDff0lwTh/PkEKUOwRpyuu7Mr7W2zQoc+oAaGmTWKb1NPmvVeXmo+qF9X+jXuBCOg==", "hasInstallScript": true, "dependencies": { "bindings": "^1.5.0", - "mkdirp": "^0.5.5", + "mkdirp": "^1.0.4", "nan": "^2.17.0" } }, "node_modules/@vscode/spdlog/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@vscode/vscode-languagedetection": { @@ -3316,6 +3294,19 @@ "vscode-languagedetection": "cli/index.js" } }, + "node_modules/@vscode/windows-ca-certs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@vscode/windows-ca-certs/-/windows-ca-certs-0.3.1.tgz", + "integrity": "sha512-1B6hZAsqg125wuMsXiKIFkBgKx/J7YR4RT/ccYGkWAToPU9MVa40PRe+evLFUmLPH6NmPohEPlCzZLbqgvHCcQ==", + "hasInstallScript": true, + "optional": true, + "os": [ + "win32" + ], + "dependencies": { + "node-addon-api": "^3.0.2" + } + }, "node_modules/@vscode/windows-process-tree": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@vscode/windows-process-tree/-/windows-process-tree-0.5.0.tgz", @@ -3372,6 +3363,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@xterm/addon-canvas": { + "version": "0.6.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/addon-canvas/-/addon-canvas-0.6.0-beta.14.tgz", + "integrity": "sha512-J2+XfgTV+1ee48awyajh4maJDfzSbtF0FkOoxIUUDaw2fAPOBqeUqTDHxOyvzoYwAHlaJ98AA5HaYjrTkXqXlg==", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-image": { + "version": "0.7.0-beta.12", + "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.7.0-beta.12.tgz", + "integrity": "sha512-MseIv99qlQ0u113a4PFAfSv4vQi+16HC6S9oAcS/CSAHeSySYqPPLdZXAMqLZo0n/vIESmSFXlX4bm2k3YIhoQ==", + "peerDependencies": { + "@xterm/xterm": "^5.2.0" + } + }, + "node_modules/@xterm/addon-search": { + "version": "0.14.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.14.0-beta.14.tgz", + "integrity": "sha512-SOIUqIakxLCT2jyn0GEidmd1KJRqGbuOITWXx8loBeiBb/Omo01nqhtHFU0HTdCRwFbOhMRMDTKKr2nQxaoPEQ==", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-serialize": { + "version": "0.12.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.12.0-beta.14.tgz", + "integrity": "sha512-zHNc6gKxHG8D+oZRWopHRCZXGt/eTBGUbVKc3Jk0h5zuWrNATZCztljQ7Zy/VOwhxQRpFrV6MXE4vb2cBLdmvw==", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-unicode11": { + "version": "0.7.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.7.0-beta.14.tgz", + "integrity": "sha512-L1Maeye7mPYgllIOaD8b3J70B73SoC0deNrlhiMkry/8ue2Q48JzQnOGVWKIOZC+owB1aQRWZbQZbQaAiLKz4A==", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-webgl": { + "version": "0.17.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.17.0-beta.14.tgz", + "integrity": "sha512-FZoC0gk/H0hpQFrPEp2LM4qllj4a1MR/6sIg0TY6L83KS++8gxQLonTxDQoAmb9Ld5816s7ynLZJSTJUyDWRpg==", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/headless": { + "version": "5.4.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.4.0-beta.14.tgz", + "integrity": "sha512-W1OPpSuKJqaJUXIi6GjOYRYzmmeB1SX6o2YIuYLJTzZx3cQzg6/gecYbGL1VKp7WzouAb8yJSlSkSQRIUMDRYg==" + }, + "node_modules/@xterm/xterm": { + "version": "5.4.0-beta.14", + "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.4.0-beta.14.tgz", + "integrity": "sha512-69E++VxeLPxBRhR3EGpkDe3R+EhpEZILo0m6TcN+atC4Zm5+WgcqXBCrBhkvpnBA2AhZp51w+hLC/OCwaHE0rg==" + }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -6777,9 +6826,9 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/monaco-editor": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", - "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==" + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", + "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==" }, "node_modules/ms": { "version": "2.1.2", @@ -6894,9 +6943,9 @@ } }, "node_modules/node-pty": { - "version": "1.1.0-beta1", - "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.1.0-beta1.tgz", - "integrity": "sha512-h+1E/gX/brFqsp3yZKGERHOhdo1POG1rrsI+8tEuocqdEddHd029471gq8KOuiHKicd52h2pSU8Gtqb3Vo2PfQ==", + "version": "1.1.0-beta5", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.1.0-beta5.tgz", + "integrity": "sha512-j3QdgFHnLY0JWxztrvM3g67RaQLOGvytv+C6mFu0PqD+JILlzqfwuoyqRqVxdZZjoOTUXPfSRj1qPVCaCH+eOw==", "hasInstallScript": true, "dependencies": { "nan": "^2.17.0" @@ -9367,9 +9416,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -9615,59 +9664,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/xterm": { - "version": "5.4.0-beta.27", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.4.0-beta.27.tgz", - "integrity": "sha512-gKqtrjy0RLk2123oFyPw5tkV96jGz4c/JkY8/XUvBXoMVsX4A7rVKpHlmHhmnuK1X5ERAkvCD21YE7LfB8WYkw==" - }, - "node_modules/xterm-addon-canvas": { - "version": "0.6.0-beta.27", - "resolved": "https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.6.0-beta.27.tgz", - "integrity": "sha512-mSxEJKPnXYKkD6/zQLdNH6kB+sr4B+4DMFzntWgxLjHJdyOO95wUSAtBFnhAUez2nNYvXbs/OXpEbdVdO7f2kQ==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-image": { - "version": "0.6.0-beta.21", - "resolved": "https://registry.npmjs.org/xterm-addon-image/-/xterm-addon-image-0.6.0-beta.21.tgz", - "integrity": "sha512-8/PTaXVPa4kQ0xzVeuZZk10OpbZBj2cgfwhM2B0ChSPvwrk0lX+ksnXdtDKH3tg+JYvo7fIhNXtkr4NwWt7VJQ==", - "peerDependencies": { - "xterm": "^5.2.0" - } - }, - "node_modules/xterm-addon-search": { - "version": "0.14.0-beta.27", - "resolved": "https://registry.npmjs.org/xterm-addon-search/-/xterm-addon-search-0.14.0-beta.27.tgz", - "integrity": "sha512-T4Exwf/rqoLHqGUUIta5Pw/i9PljvroZwLxc7RnVyDqpNsTifDn3675kS54CxwqPlv4owFhxujTDzJPCUEkM2A==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-serialize": { - "version": "0.12.0-beta.26", - "resolved": "https://registry.npmjs.org/xterm-addon-serialize/-/xterm-addon-serialize-0.12.0-beta.26.tgz", - "integrity": "sha512-b4lOcttE6lqAF3zB2l8XtDShe5djhl9SueljnVWuG4mYMYPQoiklxFcpY66sjSCIAS6NsbtrL/LGQ/0eZGi+Ig==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-unicode11": { - "version": "0.7.0-beta.26", - "resolved": "https://registry.npmjs.org/xterm-addon-unicode11/-/xterm-addon-unicode11-0.7.0-beta.26.tgz", - "integrity": "sha512-po+z1ayyrkWh8IGXKpbwCLKLKfcjotZVKqowU6PtHuDtJm/J8rlzvV2eJU1WQ/8ezpopU09ibWCvaf1a7EPuxA==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-webgl": { - "version": "0.17.0-beta.26", - "resolved": "https://registry.npmjs.org/xterm-addon-webgl/-/xterm-addon-webgl-0.17.0-beta.26.tgz", - "integrity": "sha512-N8CuAPZnoDlQ6yV7n4eXQ2ONPr/GdxiwgxrJjNks4CzzHiJREm23FQIv0fCTwKQS5xU3qoc4LlT3vZ1tKGjtQw==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, "node_modules/xterm-headless": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/xterm-headless/-/xterm-headless-5.3.0.tgz", diff --git a/package.json b/package.json index 48f0823b..de67e0a0 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ }, "config": { "vscode": { - "version": "1.83.0", - "ref": "e7e037083ff4455cf320e344325dacb480062c3c" + "version": "1.85.0", + "ref": "af28b32d7e553898b2a91af498b1fb666fdebe0c" } }, "devDependencies": { @@ -53,15 +53,15 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "^5.0.5", "@rollup/plugin-typescript": "^11.1.5", - "@types/diff": "^5.0.8", + "@types/diff": "^5.0.9", "@types/mime-types": "^2.1.4", "@types/node": "^18.17.15", "@types/semver": "^7.5.6", "@types/vscode-semver": "npm:@types/semver@=5.5.0", - "@types/vscode": "~1.83.0", + "@types/vscode": "~1.84.2", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", + "@typescript-eslint/eslint-plugin": "^6.13.2", + "@typescript-eslint/parser": "^6.13.2", "@vscode/iconv-lite-umd": "^0.7.0", "@web/rollup-plugin-import-meta-assets": "^2.2.1", "change-package-name": "^1.0.5", @@ -91,7 +91,7 @@ "ts-morph": "^21.0.1", "ts-node": "^10.9.1", "type-fest": "^4.8.3", - "typescript": "5.3.2", + "typescript": "5.3.3", "xterm-headless": "^5.3.0", "zx": "^7.2.3" }, @@ -99,38 +99,38 @@ "@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@parcel/watcher": "2.1.0", - "@vscode/proxy-agent": "^0.17.4", - "@vscode/ripgrep": "^1.15.5", - "@vscode/spdlog": "^0.13.11", + "@vscode/proxy-agent": "^0.18.2", + "@vscode/ripgrep": "^1.15.9", + "@vscode/spdlog": "^0.13.12", "@vscode/vscode-languagedetection": "1.0.21", "@vscode/windows-process-tree": "^0.5.0", + "@xterm/addon-canvas": "0.6.0-beta.14", + "@xterm/addon-image": "0.7.0-beta.12", + "@xterm/addon-search": "0.14.0-beta.14", + "@xterm/addon-serialize": "0.12.0-beta.14", + "@xterm/addon-unicode11": "0.7.0-beta.14", + "@xterm/addon-webgl": "0.17.0-beta.14", + "@xterm/headless": "5.4.0-beta.14", + "@xterm/xterm": "5.4.0-beta.14", "cookie": "^0.5.0", "kerberos": "^2.0.1", "keytar": "^7.9.0", "memfs": "^4.6.0", "mime-types": "^2.1.35", - "monaco-editor": "0.44.0", - "node-pty": "1.1.0-beta1", + "monaco-editor": "0.45.0", + "node-pty": "1.1.0-beta5", "vscode-oniguruma": "1.7.0", "vscode-regexpp": "^3.1.0", "vscode-semver": "npm:semver@=5.5.0", "vscode-textmate": "9.0.0", - "xterm": "5.4.0-beta.27", - "xterm-addon-canvas": "0.6.0-beta.27", - "xterm-addon-image": "0.6.0-beta.21", - "xterm-addon-search": "0.14.0-beta.27", - "xterm-addon-serialize": "0.12.0-beta.26", - "xterm-addon-unicode11": "0.7.0-beta.26", - "xterm-addon-webgl": "0.17.0-beta.26", - "xterm-headless": "5.4.0-beta.27", - "yauzl": "^2.10.0", + "yauzl": "^2.9.2", "yazl": "^2.4.3" }, "overrides": { "typescript": "$typescript", "rollup": "$rollup", "recast": "$recast", - "xterm": "$xterm", + "@xterm/xterm": "5.4.0-beta.14", "@typescript-eslint/eslint-plugin": "$@typescript-eslint/eslint-plugin" }, "volta": { From cbb7c3f0fd88b2d3d71a6156a9730cebc6155108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 20:46:47 +0100 Subject: [PATCH 02/10] fix: adapt code to update --- rollup/rollup.config.ts | 2 + scripts/vscode.patch | 892 ++++++++++++++++++++------ src/api.ts | 12 +- src/lifecycle.ts | 4 +- src/localExtensionHost.ts | 4 +- src/missing-services.ts | 148 ++++- src/service-override/accessibility.ts | 5 +- src/service-override/editor.ts | 27 +- src/service-override/layout.ts | 197 +++++- src/service-override/notifications.ts | 2 +- src/service-override/testing.ts | 2 + src/service-override/tools/editor.ts | 76 ++- src/service-override/viewBanner.ts | 5 + src/service-override/viewStatusBar.ts | 8 +- src/service-override/viewTitleBar.ts | 13 +- src/service-override/views.ts | 181 ++---- src/services.ts | 2 +- src/workbench.ts | 3 +- tsconfig.types.json | 1 + 19 files changed, 1157 insertions(+), 427 deletions(-) diff --git a/rollup/rollup.config.ts b/rollup/rollup.config.ts index 88201f8a..2bbb9de1 100644 --- a/rollup/rollup.config.ts +++ b/rollup/rollup.config.ts @@ -29,7 +29,9 @@ const PURE_FUNCTIONS = new Set([ 'createProxyIdentifier', 'createDecorator', 'localize', + 'localize2', 'localizeWithPath', + 'localize2WithPath', 'Registry.as', 'Object.freeze', 'URI.parse', diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 3554a8dd..a280c17f 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -1,17 +1,17 @@ diff --git a/.eslintrc.json b/.eslintrc.json -index f44673cd1cd..cdb439f7dd1 100644 +index fd88130a1e8..60c5418dc79 100644 --- a/.eslintrc.json +++ b/.eslintrc.json -@@ -308,6 +308,7 @@ +@@ -623,6 +623,7 @@ "v8-inspect-profiler", "vscode-regexpp", "vscode-textmate", + "vscode-oniguruma", "worker_threads", - "xterm", - "xterm-addon-canvas", + "@xterm/addon-canvas", + "@xterm/addon-image", diff --git a/build/gulpfile.editor.js b/build/gulpfile.editor.js -index f9f76e4d371..dd21532bc73 100644 +index 22b70a953df..3a56cc4cb0d 100644 --- a/build/gulpfile.editor.js +++ b/build/gulpfile.editor.js @@ -404,17 +404,10 @@ gulp.task('editor-distro', @@ -37,7 +37,7 @@ index f9f76e4d371..dd21532bc73 100644 finalEditorResourcesTask ) diff --git a/build/lib/standalone.js b/build/lib/standalone.js -index 38be1131300..ab391ee2b3e 100644 +index 4ddf88ed223..ddb16108fda 100644 --- a/build/lib/standalone.js +++ b/build/lib/standalone.js @@ -134,7 +134,7 @@ function createESMSourcesAndResources2(options) { @@ -74,26 +74,18 @@ index 38be1131300..ab391ee2b3e 100644 fileContents = fileContents.replace(/import ([a-zA-Z0-9]+) = require\(('[^']+')\);/g, function (_, m1, m2) { return `import * as ${m1} from ${m2};`; }); -+ fileContents = fileContents.replace(/(\bfunction\s+localize\()|(\blocalize\()/g, function (text) { -+ if (/function\s+localize/.test(text)) { -+ return text; -+ } -+ return `localizeWithPath('${file.slice(0, -3)}', `; -+ }); -+ fileContents = fileContents.replace(/import { localize }/g, 'import { localizeWithPath }'); ++ if (!file.includes('vs/nls')) { ++ fileContents = fileContents.replace(/\b(localize2?)\(/g, function (_, name) { ++ return `${name}WithPath('${file.slice(0, -3)}', `; ++ }); ++ } ++ fileContents = fileContents.replace(/import { (localize2?) }/g, 'import { $1WithPath }'); ++ fileContents = fileContents.replace(/import { localize, localize2 }/g, 'import { localizeWithPath, localize2WithPath }'); write(getDestAbsoluteFilePath(file), fileContents); continue; } -@@ -318,4 +332,4 @@ function transportCSS(module, enqueue, write) { - return haystack.length >= needle.length && haystack.substr(0, needle.length) === needle; - } - } --//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhbG9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YW5kYWxvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Z0dBR2dHOzs7QUFFaEcseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFFckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFNUMsTUFBTSxRQUFRLEdBQStCLEVBQUUsQ0FBQztBQUVoRCxTQUFTLFNBQVMsQ0FBQyxRQUFnQixFQUFFLFFBQXlCO0lBQzdELFNBQVMsVUFBVSxDQUFDLE9BQWU7UUFDbEMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEIsT0FBTztTQUNQO1FBQ0QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUV6QixVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQixPQUFPO1NBQ1A7UUFDRCxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25DLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsT0FBdUQ7SUFDcEYsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBZ0MsQ0FBQztJQUVoRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMs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 -\ No newline at end of file -+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhbG9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YW5kYWxvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Z0dBR2dHOzs7QUFFaEcseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFFckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFNUMsTUFBTSxRQUFRLEdBQStCLEVBQUUsQ0FBQztBQUVoRCxTQUFTLFNBQVMsQ0FBQyxRQUFnQixFQUFFLFFBQXlCO0lBQzdELFNBQVMsVUFBVSxDQUFDLE9BQWU7UUFDbEMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1IsQ0FBQztRQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFekIsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1IsQ0FBQztRQUNELEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxPQUF1RDtJQUNwRixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFnQyxDQUFDO0lBRWhFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMs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 -\ No newline at end of file diff --git a/build/lib/standalone.ts b/build/lib/standalone.ts -index 775a1be5996..e1fa15ec079 100644 +index 775a1be5996..224f376d4bf 100644 --- a/build/lib/standalone.ts +++ b/build/lib/standalone.ts @@ -160,7 +160,7 @@ export function createESMSourcesAndResources2(options: IOptions2): void { @@ -126,18 +118,17 @@ index 775a1be5996..e1fa15ec079 100644 relativePath = relativePath.replace(/\\/g, '/'); if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) { relativePath = './' + relativePath; -@@ -216,6 +223,15 @@ export function createESMSourcesAndResources2(options: IOptions2): void { +@@ -216,6 +223,14 @@ export function createESMSourcesAndResources2(options: IOptions2): void { return `import * as ${m1} from ${m2};`; }); -+ fileContents = fileContents.replace(/(\bfunction\s+localize\()|(\blocalize\()/g, function (text) { -+ if (/function\s+localize/.test(text)) { -+ return text; -+ } -+ return `localizeWithPath('${file.slice(0, -3)}', `; -+ }); -+ -+ fileContents = fileContents.replace(/import { localize }/g, 'import { localizeWithPath }'); ++ if (!file.includes('vs/nls')) { ++ fileContents = fileContents.replace(/\b(localize2?)\(/g, function (_, name) { ++ return `${name}WithPath('${file.slice(0, -3)}', `; ++ }); ++ } ++ fileContents = fileContents.replace(/import { (localize2?) }/g, 'import { $1WithPath }'); ++ fileContents = fileContents.replace(/import { localize, localize2 }/g, 'import { localizeWithPath, localize2WithPath }'); + write(getDestAbsoluteFilePath(file), fileContents); continue; @@ -155,24 +146,20 @@ index 30639672490..2095905a4d8 100644 return startClient((id: string, name: string, clientOptions: LanguageClientOptions) => { return new LanguageClient(id, name, clientOptions, worker); -diff --git a/extensions/typescript-language-features/web/typingsInstaller.ts b/extensions/typescript-language-features/web/typingsInstaller.ts -index 7b9b164c40c..a961bb7267a 100644 ---- a/extensions/typescript-language-features/web/typingsInstaller.ts -+++ b/extensions/typescript-language-features/web/typingsInstaller.ts -@@ -66,6 +66,8 @@ export default class WebTypingsInstallerClient implements ts.server.ITypingsInst - case 'action::packageInstalled': - case 'action::invalidate': - case 'action::set': -+ // missing case leads to error -+ case 'action::watchTypingLocations': - this.projectService!.updateTypingsForProject(response); - break; - case 'event::beginInstallTypes': -diff --git a/extensions/typescript-language-features/web/webServer.ts b/extensions/typescript-language-features/web/webServer.ts -index 191c2d03f63..f1526cf68ac 100644 ---- a/extensions/typescript-language-features/web/webServer.ts -+++ b/extensions/typescript-language-features/web/webServer.ts -@@ -46,7 +46,7 @@ function fromResource(extensionUri: URI, uri: URI) { +diff --git a/extensions/typescript-language-features/web/src/pathMapper.ts b/extensions/typescript-language-features/web/src/pathMapper.ts +index e92548950fc..a0c2c248f96 100644 +--- a/extensions/typescript-language-features/web/src/pathMapper.ts ++++ b/extensions/typescript-language-features/web/src/pathMapper.ts +@@ -20,7 +20,7 @@ export class PathMapper { + return URI.from({ + scheme: this.extensionUri.scheme, + authority: this.extensionUri.authority, +- path: this.extensionUri.path + '/dist/browser/typescript/' + filepath.slice(1) ++ path: this.extensionUri.path.replace(/\/$/, '') + '/dist/browser/typescript/' + filepath.slice(1) + }); + } + +@@ -76,7 +76,7 @@ export function fromResource(extensionUri: URI, uri: URI) { && uri.path.endsWith('.d.ts')) { return uri.path; } @@ -180,25 +167,33 @@ index 191c2d03f63..f1526cf68ac 100644 + return `/${uri.scheme}/${uri.authority || 'ts-nul-authority'}${uri.path}`; } - function updateWatch(event: 'create' | 'change' | 'delete', uri: URI, extensionUri: URI) { -@@ -207,7 +207,7 @@ function createServerHost(extensionUri: URI, logger: ts.server.Logger, apiClient + export function looksLikeLibDtsPath(filepath: string) { +diff --git a/extensions/typescript-language-features/web/src/serverHost.ts b/extensions/typescript-language-features/web/src/serverHost.ts +index f2f9ca95996..f5c28ec0cab 100644 +--- a/extensions/typescript-language-features/web/src/serverHost.ts ++++ b/extensions/typescript-language-features/web/src/serverHost.ts +@@ -88,7 +88,7 @@ function createServerHost( const scriptPath = combinePaths(packageRoot, browser); try { -- const { default: module } = await import(/* webpackIgnore: true */scriptPath); +- const { default: module } = await import(/* webpackIgnore: true */ scriptPath); + const { default: module } = await new Function('url', 'return importExt(url)')(scriptPath); return { module, error: undefined }; } catch (e) { return { module: undefined, error: e }; -@@ -532,7 +532,7 @@ function createServerHost(extensionUri: URI, logger: ts.server.Logger, apiClient - return URI.from({ - scheme: extensionUri.scheme, - authority: extensionUri.authority, -- path: extensionUri.path + '/dist/browser/typescript/' + filepath.slice(1) -+ path: extensionUri.path.replace(/\/$/, '') + '/dist/browser/typescript/' + filepath.slice(1) - }); - } - +diff --git a/extensions/typescript-language-features/web/src/typingsInstaller/typingsInstaller.ts b/extensions/typescript-language-features/web/src/typingsInstaller/typingsInstaller.ts +index 7c40993d6df..7480fbb21c3 100644 +--- a/extensions/typescript-language-features/web/src/typingsInstaller/typingsInstaller.ts ++++ b/extensions/typescript-language-features/web/src/typingsInstaller/typingsInstaller.ts +@@ -66,6 +66,8 @@ export class WebTypingsInstallerClient implements ts.server.ITypingsInstaller { + case 'action::packageInstalled': + case 'action::invalidate': + case 'action::set': ++ // missing case leads to error ++ case 'action::watchTypingLocations': + this.projectService!.updateTypingsForProject(response); + break; + case 'event::beginInstallTypes': diff --git a/src/tsconfig.base.json b/src/tsconfig.base.json index c0a2e174591..1d80c22afa3 100644 --- a/src/tsconfig.base.json @@ -213,7 +208,7 @@ index c0a2e174591..1d80c22afa3 100644 "experimentalDecorators": true, "noImplicitReturns": true, diff --git a/src/tsconfig.monaco.json b/src/tsconfig.monaco.json -index b7c5d7468b5..c73b524ea2a 100644 +index 988f0485713..c73b524ea2a 100644 --- a/src/tsconfig.monaco.json +++ b/src/tsconfig.monaco.json @@ -7,11 +7,11 @@ @@ -225,7 +220,7 @@ index b7c5d7468b5..c73b524ea2a 100644 "moduleResolution": "classic", "removeComments": false, "preserveConstEnums": true, -- "target": "es6", +- "target": "es2018", + "target": "es2020", "sourceMap": false, "declaration": true @@ -245,7 +240,7 @@ index 4f42810f0bd..58b0747c812 100644 const ttPolicy = createTrustedTypesPolicy('defaultWorkerFactory', { createScriptURL: value => value }); diff --git a/src/vs/base/common/network.ts b/src/vs/base/common/network.ts -index b00899c50db..2acfa2df3b2 100644 +index 00ad27c3d55..5811b217ced 100644 --- a/src/vs/base/common/network.ts +++ b/src/vs/base/common/network.ts @@ -4,6 +4,8 @@ @@ -255,12 +250,12 @@ index b00899c50db..2acfa2df3b2 100644 +import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { ResourceMap } from 'vs/base/common/map'; import * as platform from 'vs/base/common/platform'; + import { equalsIgnoreCase, startsWithIgnoreCase } from 'vs/base/common/strings'; import { URI } from 'vs/base/common/uri'; - -@@ -195,6 +197,20 @@ export const nodeModulesAsarUnpackedPath: AppResourcePath = 'vs/../../node_modul +@@ -210,6 +212,20 @@ export const VSCODE_AUTHORITY = 'vscode-app'; class FileAccessImpl { - private static readonly FALLBACK_AUTHORITY = 'vscode-app'; + private static readonly FALLBACK_AUTHORITY = VSCODE_AUTHORITY; + private staticBrowserUris = new ResourceMap(); + private appResourcePathUrls = new Map string)>(); + @@ -278,7 +273,7 @@ index b00899c50db..2acfa2df3b2 100644 /** * Returns a URI to use in contexts where the browser is responsible -@@ -203,7 +219,7 @@ class FileAccessImpl { +@@ -218,7 +234,7 @@ class FileAccessImpl { * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. */ asBrowserUri(resourcePath: AppResourcePath | ''): URI { @@ -287,7 +282,7 @@ index b00899c50db..2acfa2df3b2 100644 return this.uriToBrowserUri(uri); } -@@ -242,7 +258,7 @@ class FileAccessImpl { +@@ -257,7 +273,7 @@ class FileAccessImpl { }); } @@ -296,7 +291,7 @@ index b00899c50db..2acfa2df3b2 100644 } /** -@@ -250,7 +266,7 @@ class FileAccessImpl { +@@ -265,7 +281,7 @@ class FileAccessImpl { * is responsible for loading. */ asFileUri(resourcePath: AppResourcePath | ''): URI { @@ -305,7 +300,7 @@ index b00899c50db..2acfa2df3b2 100644 return this.uriToFileUri(uri); } -@@ -282,6 +298,19 @@ class FileAccessImpl { +@@ -297,6 +313,19 @@ class FileAccessImpl { return URI.parse(moduleIdToUrl.toUrl(uriOrModule)); } @@ -380,7 +375,7 @@ index cf9154ce7d6..5c954f75f8e 100644 public static validateOptions(options: IEditorOptions): ValidatedEditorOptions { const result = new ValidatedEditorOptions(); diff --git a/src/vs/editor/contrib/find/browser/findController.ts b/src/vs/editor/contrib/find/browser/findController.ts -index ce1cdb9084e..7083bcde458 100644 +index 53610a95455..8eed8cf99e4 100644 --- a/src/vs/editor/contrib/find/browser/findController.ts +++ b/src/vs/editor/contrib/find/browser/findController.ts @@ -30,6 +30,7 @@ import { INotificationService, Severity } from 'vs/platform/notification/common/ @@ -412,7 +407,7 @@ index ce1cdb9084e..7083bcde458 100644 if (selections.length) { this._state.change({ searchScope: selections }, true); diff --git a/src/vs/editor/contrib/find/browser/findWidget.ts b/src/vs/editor/contrib/find/browser/findWidget.ts -index a7dd879a53e..9bf73d43298 100644 +index 7f675f67e9d..9c20173bd7a 100644 --- a/src/vs/editor/contrib/find/browser/findWidget.ts +++ b/src/vs/editor/contrib/find/browser/findWidget.ts @@ -43,6 +43,7 @@ import { ThemeIcon } from 'vs/base/common/themables'; @@ -473,7 +468,7 @@ index 23d547570e9..31dfb4fd8d4 100644 export * from 'vs/editor/editor.api'; diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts -index 01f2c6987ac..e3bf9b1e9e4 100644 +index 19eee1dcc54..a15870fdcf3 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -89,8 +89,6 @@ import { DefaultConfiguration } from 'vs/platform/configuration/common/configura @@ -483,9 +478,9 @@ index 01f2c6987ac..e3bf9b1e9e4 100644 -import { getEditorFeatures } from 'vs/editor/common/editorFeatures'; -import { onUnexpectedError } from 'vs/base/common/errors'; import { ExtensionKind, IEnvironmentService, IExtensionHostDebugParams } from 'vs/platform/environment/common/environment'; + import { mainWindow } from 'vs/base/browser/window'; - class SimpleModel implements IResolvedTextEditorModel { -@@ -512,15 +510,19 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { +@@ -513,15 +511,19 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { }); } @@ -507,7 +502,7 @@ index 01f2c6987ac..e3bf9b1e9e4 100644 this._cachedResolver = new KeybindingResolver(defaults, overrides, (str) => this._log(str)); } return this._cachedResolver; -@@ -541,7 +543,7 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { +@@ -542,7 +544,7 @@ export class StandaloneKeybindingService extends AbstractKeybindingService { // This might be a removal keybinding item in user settings => accept it result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null, false); } else { @@ -516,7 +511,7 @@ index 01f2c6987ac..e3bf9b1e9e4 100644 for (const resolvedKeybinding of resolvedKeybindings) { result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null, false); } -@@ -1155,16 +1157,6 @@ export module StandaloneServices { +@@ -1166,16 +1168,6 @@ export module StandaloneServices { } } @@ -534,14 +529,13 @@ index 01f2c6987ac..e3bf9b1e9e4 100644 return instantiationService; diff --git a/src/vs/nls.ts b/src/vs/nls.ts -index db57b98d67b..defd683e0b0 100644 +index af0a0b96071..a7f0210f93e 100644 --- a/src/vs/nls.ts +++ b/src/vs/nls.ts -@@ -130,6 +130,24 @@ export function localize(data: ILocalizeInfo | string, message: string, ...args: +@@ -164,6 +164,35 @@ export function localize(data: ILocalizeInfo | string, message: string, ...args: return _format(message, args); } -+ +let locale: string | undefined = undefined; +let translations: Record> = {}; + @@ -558,11 +552,23 @@ index db57b98d67b..defd683e0b0 100644 + const message = (translations[path] ?? {})[key] ?? defaultMessage; + return _format(message, args); +} ++ ++/** ++ * @skipMangle ++ */ ++export function localize2WithPath(path: string, data: ILocalizeInfo | string, defaultMessage: string, ...args: (string | number | boolean | undefined | null)[]): ILocalizedString { ++ const key = typeof data === 'object' ? data.key : data; ++ const message = (translations[path] ?? {})[key] ?? defaultMessage; ++ return { ++ value: _format(message, args), ++ original: _format(defaultMessage, args) ++ }; ++} + /** - * - * @param stringFromLocalizeCall You must pass in a string that was returned from a `nls.localize()` call -@@ -142,7 +160,7 @@ export function getConfiguredDefaultLocale(stringFromLocalizeCall: string): stri + * Marks a string to be localized. Returns an {@linkcode ILocalizedString} + * which contains the localized string and the original string. +@@ -217,7 +246,7 @@ export function getConfiguredDefaultLocale(stringFromLocalizeCall: string): stri export function getConfiguredDefaultLocale(_: string): string | undefined { // This returns undefined because this implementation isn't used and is overwritten by the loader // when loaded. @@ -593,7 +599,7 @@ index 67e34826627..7c5287d6a32 100644 telemetry: this.telemetry, storageKey: ASSIGNMENT_STORAGE_KEY, diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts -index c69605d16e9..a1400daf522 100644 +index 79046c7fa20..24e39697f9f 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -3,7 +3,7 @@ @@ -619,7 +625,7 @@ index d8cefb6df67..a94fca911ea 100644 import { localize } from 'vs/nls'; import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; diff --git a/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts b/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts -index c766318f30f..1d3bc4affc5 100644 +index fdefc170db0..1d3bc4affc5 100644 --- a/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts +++ b/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts @@ -14,7 +14,7 @@ import { ILogService } from 'vs/platform/log/common/log'; @@ -631,17 +637,8 @@ index c766318f30f..1d3bc4affc5 100644 declare readonly _serviceBrand: undefined; -@@ -32,7 +32,7 @@ class ExtensionResourceLoaderService extends AbstractExtensionResourceLoaderServ - async readExtensionResource(uri: URI): Promise { - uri = FileAccess.uriToBrowserUri(uri); - -- if (uri.scheme !== Schemas.http && uri.scheme !== Schemas.https) { -+ if (uri.scheme !== Schemas.http && uri.scheme !== Schemas.https && uri.scheme !== Schemas.data) { - const result = await this._fileService.readFile(uri); - return result.value.toString(); - } diff --git a/src/vs/platform/files/node/diskFileSystemProvider.ts b/src/vs/platform/files/node/diskFileSystemProvider.ts -index e22cfe1b45e..b48c1babf86 100644 +index 180aa7e2960..d589be25ed6 100644 --- a/src/vs/platform/files/node/diskFileSystemProvider.ts +++ b/src/vs/platform/files/node/diskFileSystemProvider.ts @@ -4,7 +4,6 @@ @@ -653,7 +650,7 @@ index e22cfe1b45e..b48c1babf86 100644 import { ResourceMap } from 'vs/base/common/map'; import { VSBuffer } from 'vs/base/common/buffer'; @@ -24,22 +23,9 @@ import { readFileIntoStream } from 'vs/platform/files/common/io'; - import { AbstractNonRecursiveWatcherClient, AbstractUniversalWatcherClient, IDiskFileChange, ILogMessage } from 'vs/platform/files/common/watcher'; + import { AbstractNonRecursiveWatcherClient, AbstractUniversalWatcherClient, ILogMessage } from 'vs/platform/files/common/watcher'; import { ILogService } from 'vs/platform/log/common/log'; import { AbstractDiskFileSystemProvider, IDiskFileSystemProviderOptions } from 'vs/platform/files/common/diskFileSystemProvider'; -import { toErrorMessage } from 'vs/base/common/errorMessage'; @@ -676,7 +673,7 @@ index e22cfe1b45e..b48c1babf86 100644 IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithOpenReadWriteCloseCapability, diff --git a/src/vs/platform/instantiation/common/instantiationService.ts b/src/vs/platform/instantiation/common/instantiationService.ts -index f0db479e3c1..b8d93aae3f2 100644 +index dee82758c0a..e21e0010c97 100644 --- a/src/vs/platform/instantiation/common/instantiationService.ts +++ b/src/vs/platform/instantiation/common/instantiationService.ts @@ -195,8 +195,10 @@ export class InstantiationService implements IInstantiationService { @@ -692,10 +689,10 @@ index f0db479e3c1..b8d93aae3f2 100644 } } diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts -index 053f3822d27..46fd5932bc5 100644 +index 79c912875bb..52f93d0fe74 100644 --- a/src/vs/platform/native/electron-main/nativeHostMainService.ts +++ b/src/vs/platform/native/electron-main/nativeHostMainService.ts -@@ -447,7 +447,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain +@@ -489,7 +489,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain async isAdmin(): Promise { let isAdmin: boolean; if (isWindows) { @@ -704,19 +701,6 @@ index 053f3822d27..46fd5932bc5 100644 } else { isAdmin = process.getuid?.() === 0; } -diff --git a/src/vs/platform/request/node/proxy.ts b/src/vs/platform/request/node/proxy.ts -index ee2aae8814b..7073eb1e548 100644 ---- a/src/vs/platform/request/node/proxy.ts -+++ b/src/vs/platform/request/node/proxy.ts -@@ -45,6 +45,6 @@ export async function getProxyAgent(rawRequestURL: string, env: typeof process.e - }; - - return requestURL.protocol === 'http:' -- ? new (await import('http-proxy-agent'))(opts as any as Url) -- : new (await import('https-proxy-agent'))(opts); -+ ? new (await import('http-proxy-agent')).default(opts as any as Url) -+ : new (await import('https-proxy-agent')).default(opts); - } diff --git a/src/vs/platform/telemetry/common/1dsAppender.ts b/src/vs/platform/telemetry/common/1dsAppender.ts index ccfbc3f7d9b..5fe46b464b1 100644 --- a/src/vs/platform/telemetry/common/1dsAppender.ts @@ -740,6 +724,38 @@ index ccfbc3f7d9b..5fe46b464b1 100644 const appInsightsCore = new oneDs.AppInsightsCore(); const collectorChannelPlugin: PostChannel = new postPlugin.PostChannel(); // Configure the app insights core to send to collector++ and disable logging of debug info +diff --git a/src/vs/platform/terminal/node/ptyService.ts b/src/vs/platform/terminal/node/ptyService.ts +index ec8182b3c1d..85de100c7c0 100644 +--- a/src/vs/platform/terminal/node/ptyService.ts ++++ b/src/vs/platform/terminal/node/ptyService.ts +@@ -15,7 +15,8 @@ import { RequestStore } from 'vs/platform/terminal/common/requestStore'; + import { IProcessDataEvent, IProcessReadyEvent, IPtyService, IRawTerminalInstanceLayoutInfo, IReconnectConstants, IShellLaunchConfig, ITerminalInstanceLayoutInfoById, ITerminalLaunchError, ITerminalsLayoutInfo, ITerminalTabLayoutInfoById, TerminalIcon, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, IFixedTerminalDimensions, IPersistentTerminalProcessLaunchConfig, ICrossVersionSerializedTerminalState, ISerializedTerminalState, ITerminalProcessOptions, IPtyHostLatencyMeasurement } from 'vs/platform/terminal/common/terminal'; + import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; + import { escapeNonWindowsPath } from 'vs/platform/terminal/common/terminalEnvironment'; +-import { Terminal as XtermTerminal } from '@xterm/headless'; ++// Fix/Hack for xterm being build as umd ++import xtermHeadless from '@xterm/headless'; + import type { ISerializeOptions, SerializeAddon as XtermSerializeAddon } from '@xterm/addon-serialize'; + import type { Unicode11Addon as XtermUnicode11Addon } from '@xterm/addon-unicode11'; + import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs, ITerminalTabLayoutInfoDto } from 'vs/platform/terminal/common/terminalProcess'; +@@ -976,7 +977,7 @@ class MutationLogger { + } + + class XtermSerializer implements ITerminalSerializer { +- private readonly _xterm: XtermTerminal; ++ private readonly _xterm: xtermHeadless.Terminal; + private readonly _shellIntegrationAddon: ShellIntegrationAddon; + private _unicodeAddon?: XtermUnicode11Addon; + +@@ -990,7 +991,7 @@ class XtermSerializer implements ITerminalSerializer { + private _rawReviveBuffer: string | undefined, + logService: ILogService + ) { +- this._xterm = new XtermTerminal({ ++ this._xterm = new xtermHeadless.Terminal({ + cols, + rows, + scrollback, diff --git a/src/vs/workbench/api/browser/mainThreadExtensionService.ts b/src/vs/workbench/api/browser/mainThreadExtensionService.ts index 5afc945cc16..bc5fc8ed8f9 100644 --- a/src/vs/workbench/api/browser/mainThreadExtensionService.ts @@ -808,10 +824,10 @@ index 99dd3279fe8..b692381eaa2 100644 declare readonly _serviceBrand: undefined; diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts -index 53224b35c02..acc9785411e 100644 +index 8a0b86bd78b..d0550496c00 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts -@@ -1367,6 +1367,7 @@ export interface MainThreadExtensionServiceShape extends IDisposable { +@@ -1402,6 +1402,7 @@ export interface MainThreadExtensionServiceShape extends IDisposable { $onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void; $setPerformanceMarks(marks: performance.PerformanceMark[]): Promise; $asBrowserUri(uri: UriComponents): Promise; @@ -820,7 +836,7 @@ index 53224b35c02..acc9785411e 100644 export interface SCMProviderFeatures { diff --git a/src/vs/workbench/api/common/extHostExtensionService.ts b/src/vs/workbench/api/common/extHostExtensionService.ts -index 404f8f7d9c0..59e6c2b983c 100644 +index 0f16b2d3261..8b0937afca9 100644 --- a/src/vs/workbench/api/common/extHostExtensionService.ts +++ b/src/vs/workbench/api/common/extHostExtensionService.ts @@ -44,7 +44,7 @@ import { Schemas } from 'vs/base/common/network'; @@ -984,10 +1000,10 @@ index bb3cbfbca7b..b650ff592b1 100644 const nativeExit: IExitFn = process.exit.bind(process); function patchProcess(allowExit: boolean) { diff --git a/src/vs/workbench/api/node/proxyResolver.ts b/src/vs/workbench/api/node/proxyResolver.ts -index 1f59cbf5ca3..783ff5b34ba 100644 +index 519924eec13..07dd94be9a2 100644 --- a/src/vs/workbench/api/node/proxyResolver.ts +++ b/src/vs/workbench/api/node/proxyResolver.ts -@@ -81,10 +81,10 @@ export function connectProxyResolver( +@@ -78,10 +78,10 @@ export function connectProxyResolver( function createPatchedModules(params: ProxyAgentParams, resolveProxy: ReturnType) { return { @@ -1332,19 +1348,19 @@ index 6e6f8845da5..f4824f99f9f 100644 onTerminate = (reason: string) => extHostMain.terminate(reason); }); diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts -index bef9b44215c..bd87a6dacfc 100644 +index 810c53f2abf..d537a7ebe75 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts -@@ -51,7 +51,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +@@ -52,7 +52,7 @@ import { mainWindow } from 'vs/base/browser/window'; //#region Layout Implementation -interface ILayoutRuntimeState { +export interface ILayoutRuntimeState { + activeContainerId: number; fullscreen: boolean; - maximized: boolean; - hasFocus: boolean; -@@ -64,12 +64,12 @@ interface ILayoutRuntimeState { + readonly maximized: Set; +@@ -66,12 +66,12 @@ interface ILayoutRuntimeState { }; } @@ -1359,7 +1375,7 @@ index bef9b44215c..bd87a6dacfc 100644 readonly views: { readonly defaults: string[] | undefined; readonly containerToRestore: { -@@ -103,11 +103,11 @@ enum LayoutClasses { +@@ -105,11 +105,11 @@ enum LayoutClasses { WINDOW_BORDER = 'border' } @@ -1374,10 +1390,10 @@ index bef9b44215c..bd87a6dacfc 100644 readonly filesToDiff?: IPathToOpen[]; readonly filesToMerge?: IPathToOpen[]; diff --git a/src/vs/workbench/browser/parts/compositeBar.ts b/src/vs/workbench/browser/parts/compositeBar.ts -index afa384aa88c..bc631450591 100644 +index a2007e18299..7446cfcfc5f 100644 --- a/src/vs/workbench/browser/parts/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositeBar.ts -@@ -504,7 +504,7 @@ export class CompositeBar extends Widget implements ICompositeBar { +@@ -477,7 +477,7 @@ export class CompositeBar extends Widget implements ICompositeBar { // Compute sizes only if visible. Otherwise the size measurment would be computed wrongly. const currentItemsLength = compositeSwitcherBar.viewItems.length; compositeSwitcherBar.push(items.map(composite => composite.activityAction)); @@ -1387,10 +1403,10 @@ index afa384aa88c..bc631450591 100644 : compositeSwitcherBar.getWidth(currentItemsLength + index) )); diff --git a/src/vs/workbench/browser/parts/editor/editorGroupWatermark.ts b/src/vs/workbench/browser/parts/editor/editorGroupWatermark.ts -index 67d993e2f04..0fe14249c66 100644 +index 3c4ac7d594b..e942fbd2e40 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupWatermark.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupWatermark.ts -@@ -140,7 +140,7 @@ export class EditorGroupWatermark extends Disposable { +@@ -132,7 +132,7 @@ export class EditorGroupWatermark extends Disposable { const update = () => { clearNode(box); @@ -1399,11 +1415,491 @@ index 67d993e2f04..0fe14249c66 100644 const keys = this.keybindingService.lookupKeybinding(entry.id); if (!keys) { return; +diff --git a/src/vs/workbench/browser/parts/globalCompositeBar.ts b/src/vs/workbench/browser/parts/globalCompositeBar.ts +index 13432c87811..5cd117ea3cb 100644 +--- a/src/vs/workbench/browser/parts/globalCompositeBar.ts ++++ b/src/vs/workbench/browser/parts/globalCompositeBar.ts +@@ -3,55 +3,44 @@ + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +-import { localize } from 'vs/nls'; +-import { ActionBar, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar'; +-import { ACCOUNTS_ACTIVITY_ID, GLOBAL_ACTIVITY_ID } from 'vs/workbench/common/activity'; +-import { IActivity, IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity'; +-import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +-import { DisposableStore, Disposable } from 'vs/base/common/lifecycle'; +-import { IColorTheme, IThemeService } from 'vs/platform/theme/common/themeService'; +-import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; +-import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +-import { CompoisteBarActionViewItem, CompositeBarAction, IActivityHoverOptions, ICompositeBarActionViewItemOptions, ICompositeBarColors } from 'vs/workbench/browser/parts/compositeBarActions'; +-import { Codicon } from 'vs/base/common/codicons'; +-import { ThemeIcon } from 'vs/base/common/themables'; +-import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; +-import { Action, IAction, Separator, SubmenuAction, toAction } from 'vs/base/common/actions'; +-import { IMenu, IMenuService, MenuId } from 'vs/platform/actions/common/actions'; +-import { addDisposableListener, EventType, append, clearNode, hide, show, EventHelper, $, runWhenWindowIdle, getWindow } from 'vs/base/browser/dom'; ++import { $, EventHelper, EventType, addDisposableListener, append, clearNode, getWindow, hide, show } from 'vs/base/browser/dom'; + import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; + import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; +-import { EventType as TouchEventType, GestureEvent } from 'vs/base/browser/touch'; ++import { GestureEvent, EventType as TouchEventType } from 'vs/base/browser/touch'; ++import { ActionBar, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar'; + import { AnchorAlignment, AnchorAxisAlignment } from 'vs/base/browser/ui/contextview/contextview'; +-import { Lazy } from 'vs/base/common/lazy'; ++import { Action, IAction } from 'vs/base/common/actions'; ++import { Codicon } from 'vs/base/common/codicons'; ++import { KeyCode } from 'vs/base/common/keyCodes'; ++import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; ++import { ThemeIcon } from 'vs/base/common/themables'; ++import { isString } from 'vs/base/common/types'; ++import { localize } from 'vs/nls'; + import { createAndFillInActionBarActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; ++import { IMenu, IMenuService, MenuId } from 'vs/platform/actions/common/actions'; + import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; + import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; + import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; ++import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; + import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +-import { ILogService } from 'vs/platform/log/common/log'; +-import { IProductService } from 'vs/platform/product/common/productService'; +-import { ISecretStorageService } from 'vs/platform/secrets/common/secrets'; +-import { AuthenticationSessionInfo, getCurrentAuthenticationSessionInfo } from 'vs/workbench/services/authentication/browser/authenticationService'; +-import { AuthenticationSessionAccount, IAuthenticationService } from 'vs/workbench/services/authentication/common/authentication'; ++import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; ++import { IColorTheme, IThemeService } from 'vs/platform/theme/common/themeService'; ++import { CompoisteBarActionViewItem, CompositeBarAction, IActivityHoverOptions, ICompositeBarActionViewItemOptions, ICompositeBarColors } from 'vs/workbench/browser/parts/compositeBarActions'; ++import { GLOBAL_ACTIVITY_ID } from 'vs/workbench/common/activity'; ++import { ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND } from 'vs/workbench/common/theme'; ++import { IActivity, IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity'; + import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; + import { IHoverService } from 'vs/workbench/services/hover/browser/hover'; +-import { ILifecycleService, LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle'; + import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile'; + import { DEFAULT_ICON } from 'vs/workbench/services/userDataProfile/common/userDataProfileIcons'; +-import { isString } from 'vs/base/common/types'; +-import { KeyCode } from 'vs/base/common/keyCodes'; +-import { ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND } from 'vs/workbench/common/theme'; + + export class GlobalCompositeBar extends Disposable { + +- private static readonly ACCOUNTS_ACTION_INDEX = 0; + static readonly ACCOUNTS_ICON = registerIcon('accounts-view-bar-icon', Codicon.account, localize('accountsViewBarIcon', "Accounts icon in the view bar.")); + + readonly element: HTMLElement; + + private readonly globalActivityAction = this._register(new Action(GLOBAL_ACTIVITY_ID)); +- private readonly accountAction = this._register(new Action(ACCOUNTS_ACTIVITY_ID)); + private readonly globalActivityActionBar: ActionBar; + + constructor( +@@ -59,9 +48,7 @@ export class GlobalCompositeBar extends Disposable { + private readonly colors: (theme: IColorTheme) => ICompositeBarColors, + private readonly activityHoverOptions: IActivityHoverOptions, + @IConfigurationService configurationService: IConfigurationService, +- @IInstantiationService private readonly instantiationService: IInstantiationService, +- @IStorageService private readonly storageService: IStorageService, +- @IExtensionService private readonly extensionService: IExtensionService, ++ @IInstantiationService private readonly instantiationService: IInstantiationService + ) { + super(); + +@@ -74,23 +61,6 @@ export class GlobalCompositeBar extends Disposable { + return this.instantiationService.createInstance(GlobalActivityActionViewItem, this.contextMenuActionsProvider, { colors: this.colors, hoverOptions: this.activityHoverOptions }, anchorAlignment, anchorAxisAlignment); + } + +- if (action.id === ACCOUNTS_ACTIVITY_ID) { +- return this.instantiationService.createInstance(AccountsActivityActionViewItem, +- this.contextMenuActionsProvider, +- { +- colors: this.colors, +- hoverOptions: this.activityHoverOptions +- }, +- anchorAlignment, +- anchorAxisAlignment, +- (actions: IAction[]) => { +- actions.unshift(...[ +- toAction({ id: 'hideAccounts', label: localize('hideAccounts', "Hide Accounts"), run: () => this.storageService.store(AccountsActivityActionViewItem.ACCOUNTS_VISIBILITY_PREFERENCE_KEY, false, StorageScope.PROFILE, StorageTarget.USER) }), +- new Separator() +- ]); +- }); +- } +- + throw new Error(`No view item for action '${action.id}'`); + }, + orientation: ActionsOrientation.VERTICAL, +@@ -99,21 +69,7 @@ export class GlobalCompositeBar extends Disposable { + preventLoopNavigation: true + })); + +- if (this.accountsVisibilityPreference) { +- this.globalActivityActionBar.push(this.accountAction, { index: GlobalCompositeBar.ACCOUNTS_ACTION_INDEX }); +- } +- + this.globalActivityActionBar.push(this.globalActivityAction); +- +- this.registerListeners(); +- } +- +- private registerListeners(): void { +- this.extensionService.whenInstalledExtensionsRegistered().then(() => { +- if (!this._store.isDisposed) { +- this._register(this.storageService.onDidChangeValue(StorageScope.PROFILE, AccountsActivityActionViewItem.ACCOUNTS_VISIBILITY_PREFERENCE_KEY, this._store)(() => this.toggleAccountsActivity())); +- } +- }); + } + + create(parent: HTMLElement): void { +@@ -129,26 +85,7 @@ export class GlobalCompositeBar extends Disposable { + } + + getContextMenuActions(): IAction[] { +- return [toAction({ id: 'toggleAccountsVisibility', label: localize('accounts', "Accounts"), checked: this.accountsVisibilityPreference, run: () => this.accountsVisibilityPreference = !this.accountsVisibilityPreference })]; +- } +- +- private toggleAccountsActivity() { +- if (this.globalActivityActionBar.length() === 2 && this.accountsVisibilityPreference) { +- return; +- } +- if (this.globalActivityActionBar.length() === 2) { +- this.globalActivityActionBar.pull(GlobalCompositeBar.ACCOUNTS_ACTION_INDEX); +- } else { +- this.globalActivityActionBar.push(this.accountAction, { index: GlobalCompositeBar.ACCOUNTS_ACTION_INDEX }); +- } +- } +- +- private get accountsVisibilityPreference(): boolean { +- return this.storageService.getBoolean(AccountsActivityActionViewItem.ACCOUNTS_VISIBILITY_PREFERENCE_KEY, StorageScope.PROFILE, true); +- } +- +- private set accountsVisibilityPreference(value: boolean) { +- this.storageService.store(AccountsActivityActionViewItem.ACCOUNTS_VISIBILITY_PREFERENCE_KEY, value, StorageScope.PROFILE, StorageTarget.USER); ++ return []; + } + } + +@@ -277,255 +214,6 @@ abstract class AbstractGlobalActivityActionViewItem extends CompoisteBarActionVi + } + } + +-export class AccountsActivityActionViewItem extends AbstractGlobalActivityActionViewItem { +- +- static readonly ACCOUNTS_VISIBILITY_PREFERENCE_KEY = 'workbench.activity.showAccounts'; +- +- private readonly groupedAccounts: Map = new Map(); +- private readonly problematicProviders: Set = new Set(); +- +- private initialized = false; +- private sessionFromEmbedder = new Lazy>(() => getCurrentAuthenticationSessionInfo(this.secretStorageService, this.productService)); +- +- constructor( +- contextMenuActionsProvider: () => IAction[], +- options: ICompositeBarActionViewItemOptions, +- anchorAlignment: AnchorAlignment | undefined, +- anchorAxisAlignment: AnchorAxisAlignment | undefined, +- private readonly fillContextMenuActions: (actions: IAction[]) => void, +- @IThemeService themeService: IThemeService, +- @ILifecycleService private readonly lifecycleService: ILifecycleService, +- @IHoverService hoverService: IHoverService, +- @IContextMenuService contextMenuService: IContextMenuService, +- @IMenuService menuService: IMenuService, +- @IContextKeyService contextKeyService: IContextKeyService, +- @IAuthenticationService private readonly authenticationService: IAuthenticationService, +- @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, +- @IProductService private readonly productService: IProductService, +- @IConfigurationService configurationService: IConfigurationService, +- @IKeybindingService keybindingService: IKeybindingService, +- @ISecretStorageService private readonly secretStorageService: ISecretStorageService, +- @ILogService private readonly logService: ILogService, +- @IActivityService activityService: IActivityService, +- @IInstantiationService instantiationService: IInstantiationService, +- ) { +- const action = instantiationService.createInstance(CompositeBarAction, { +- id: ACCOUNTS_ACTIVITY_ID, +- name: localize('accounts', "Accounts"), +- classNames: ThemeIcon.asClassNameArray(GlobalCompositeBar.ACCOUNTS_ICON) +- }); +- super(MenuId.AccountsContext, action, options, contextMenuActionsProvider, anchorAlignment, anchorAxisAlignment, themeService, hoverService, menuService, contextMenuService, contextKeyService, configurationService, keybindingService, activityService); +- this._register(action); +- this.registerListeners(); +- this.initialize(); +- } +- +- private registerListeners(): void { +- this._register(this.authenticationService.onDidRegisterAuthenticationProvider(async (e) => { +- await this.addAccountsFromProvider(e.id); +- })); +- +- this._register(this.authenticationService.onDidUnregisterAuthenticationProvider((e) => { +- this.groupedAccounts.delete(e.id); +- this.problematicProviders.delete(e.id); +- })); +- +- this._register(this.authenticationService.onDidChangeSessions(async e => { +- for (const changed of [...e.event.changed, ...e.event.added]) { +- try { +- await this.addOrUpdateAccount(e.providerId, changed.account); +- } catch (e) { +- this.logService.error(e); +- } +- } +- for (const removed of e.event.removed) { +- this.removeAccount(e.providerId, removed.account); +- } +- })); +- } +- +- // This function exists to ensure that the accounts are added for auth providers that had already been registered +- // before the menu was created. +- private async initialize(): Promise { +- // Resolving the menu doesn't need to happen immediately, so we can wait until after the workbench has been restored +- // and only run this when the system is idle. +- await this.lifecycleService.when(LifecyclePhase.Restored); +- if (this._store.isDisposed) { +- return; +- } +- const disposable = this._register(runWhenWindowIdle(getWindow(this.element), async () => { +- await this.doInitialize(); +- disposable.dispose(); +- })); +- } +- +- private async doInitialize(): Promise { +- const providerIds = this.authenticationService.getProviderIds(); +- const results = await Promise.allSettled(providerIds.map(providerId => this.addAccountsFromProvider(providerId))); +- +- // Log any errors that occurred while initializing. We try to be best effort here to show the most amount of accounts +- for (const result of results) { +- if (result.status === 'rejected') { +- this.logService.error(result.reason); +- } +- } +- +- this.initialized = true; +- } +- +- //#region overrides +- +- protected override async resolveMainMenuActions(accountsMenu: IMenu, disposables: DisposableStore): Promise { +- await super.resolveMainMenuActions(accountsMenu, disposables); +- +- const providers = this.authenticationService.getProviderIds(); +- const otherCommands = accountsMenu.getActions(); +- let menus: IAction[] = []; +- +- for (const providerId of providers) { +- if (!this.initialized) { +- const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('loading', "Loading..."), undefined, false)); +- menus.push(noAccountsAvailableAction); +- break; +- } +- const providerLabel = this.authenticationService.getLabel(providerId); +- const accounts = this.groupedAccounts.get(providerId); +- if (!accounts) { +- if (this.problematicProviders.has(providerId)) { +- const providerUnavailableAction = disposables.add(new Action('providerUnavailable', localize('authProviderUnavailable', '{0} is currently unavailable', providerLabel), undefined, false)); +- menus.push(providerUnavailableAction); +- // try again in the background so that if the failure was intermittent, we can resolve it on the next showing of the menu +- try { +- await this.addAccountsFromProvider(providerId); +- } catch (e) { +- this.logService.error(e); +- } +- } +- continue; +- } +- +- for (const account of accounts) { +- const manageExtensionsAction = disposables.add(new Action(`configureSessions${account.label}`, localize('manageTrustedExtensions', "Manage Trusted Extensions"), undefined, true, () => { +- return this.authenticationService.manageTrustedExtensionsForAccount(providerId, account.label); +- })); +- +- const providerSubMenuActions: Action[] = [manageExtensionsAction]; +- +- if (account.canSignOut) { +- const signOutAction = disposables.add(new Action('signOut', localize('signOut', "Sign Out"), undefined, true, async () => { +- const allSessions = await this.authenticationService.getSessions(providerId); +- const sessionsForAccount = allSessions.filter(s => s.account.label === account.label); +- return await this.authenticationService.removeAccountSessions(providerId, account.label, sessionsForAccount); +- })); +- providerSubMenuActions.push(signOutAction); +- } +- +- const providerSubMenu = new SubmenuAction('activitybar.submenu', `${account.label} (${providerLabel})`, providerSubMenuActions); +- menus.push(providerSubMenu); +- } +- } +- +- if (providers.length && !menus.length) { +- const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('noAccounts', "You are not signed in to any accounts"), undefined, false)); +- menus.push(noAccountsAvailableAction); +- } +- +- if (menus.length && otherCommands.length) { +- menus.push(new Separator()); +- } +- +- otherCommands.forEach((group, i) => { +- const actions = group[1]; +- menus = menus.concat(actions); +- if (i !== otherCommands.length - 1) { +- menus.push(new Separator()); +- } +- }); +- +- return menus; +- } +- +- protected override async resolveContextMenuActions(disposables: DisposableStore): Promise { +- const actions = await super.resolveContextMenuActions(disposables); +- this.fillContextMenuActions(actions); +- return actions; +- } +- +- //#endregion +- +- //#region groupedAccounts helpers +- +- private async addOrUpdateAccount(providerId: string, account: AuthenticationSessionAccount): Promise { +- let accounts = this.groupedAccounts.get(providerId); +- if (!accounts) { +- accounts = []; +- this.groupedAccounts.set(providerId, accounts); +- } +- +- const sessionFromEmbedder = await this.sessionFromEmbedder.value; +- let canSignOut = true; +- if ( +- sessionFromEmbedder // if we have a session from the embedder +- && !sessionFromEmbedder.canSignOut // and that session says we can't sign out +- && (await this.authenticationService.getSessions(providerId)) // and that session is associated with the account we are adding/updating +- .some(s => +- s.id === sessionFromEmbedder.id +- && s.account.id === account.id +- ) +- ) { +- canSignOut = false; +- } +- +- const existingAccount = accounts.find(a => a.label === account.label); +- if (existingAccount) { +- // if we have an existing account and we discover that we +- // can't sign out of it, update the account to mark it as "can't sign out" +- if (!canSignOut) { +- existingAccount.canSignOut = canSignOut; +- } +- } else { +- accounts.push({ ...account, canSignOut }); +- } +- } +- +- private removeAccount(providerId: string, account: AuthenticationSessionAccount): void { +- const accounts = this.groupedAccounts.get(providerId); +- if (!accounts) { +- return; +- } +- +- const index = accounts.findIndex(a => a.id === account.id); +- if (index === -1) { +- return; +- } +- +- accounts.splice(index, 1); +- if (accounts.length === 0) { +- this.groupedAccounts.delete(providerId); +- } +- } +- +- private async addAccountsFromProvider(providerId: string): Promise { +- try { +- const sessions = await this.authenticationService.getSessions(providerId); +- this.problematicProviders.delete(providerId); +- +- for (const session of sessions) { +- try { +- await this.addOrUpdateAccount(providerId, session.account); +- } catch (e) { +- this.logService.error(e); +- } +- } +- } catch (e) { +- this.logService.error(e); +- this.problematicProviders.add(providerId); +- } +- } +- +- //#endregion +-} +- + export class GlobalActivityActionViewItem extends AbstractGlobalActivityActionViewItem { + + private profileBadge: HTMLElement | undefined; +@@ -606,37 +294,6 @@ export class GlobalActivityActionViewItem extends AbstractGlobalActivityActionVi + } + } + +-export class SimpleAccountActivityActionViewItem extends AccountsActivityActionViewItem { +- +- constructor( +- hoverOptions: IActivityHoverOptions, +- @IThemeService themeService: IThemeService, +- @ILifecycleService lifecycleService: ILifecycleService, +- @IHoverService hoverService: IHoverService, +- @IContextMenuService contextMenuService: IContextMenuService, +- @IMenuService menuService: IMenuService, +- @IContextKeyService contextKeyService: IContextKeyService, +- @IAuthenticationService authenticationService: IAuthenticationService, +- @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, +- @IProductService productService: IProductService, +- @IConfigurationService configurationService: IConfigurationService, +- @IKeybindingService keybindingService: IKeybindingService, +- @ISecretStorageService secretStorageService: ISecretStorageService, +- @ILogService logService: ILogService, +- @IActivityService activityService: IActivityService, +- @IInstantiationService instantiationService: IInstantiationService +- ) { +- super(() => [], { +- colors: theme => ({ +- badgeBackground: theme.getColor(ACTIVITY_BAR_BADGE_BACKGROUND), +- badgeForeground: theme.getColor(ACTIVITY_BAR_BADGE_FOREGROUND), +- }), +- hoverOptions, +- compact: true, +- }, undefined, undefined, actions => actions, themeService, lifecycleService, hoverService, contextMenuService, menuService, contextKeyService, authenticationService, environmentService, productService, configurationService, keybindingService, secretStorageService, logService, activityService, instantiationService); +- } +-} +- + export class SimpleGlobalActivityActionViewItem extends GlobalActivityActionViewItem { + + constructor( +diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +index b75723961d2..21c5d998397 100644 +--- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts ++++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +@@ -38,7 +38,7 @@ import { IHoverService } from 'vs/workbench/services/hover/browser/hover'; + import { Categories } from 'vs/platform/action/common/actionCommonCategories'; + import { WorkbenchToolBar } from 'vs/platform/actions/browser/toolbar'; + import { ACCOUNTS_ACTIVITY_ID, GLOBAL_ACTIVITY_ID } from 'vs/workbench/common/activity'; +-import { SimpleAccountActivityActionViewItem, SimpleGlobalActivityActionViewItem } from 'vs/workbench/browser/parts/globalCompositeBar'; ++import { SimpleGlobalActivityActionViewItem } from 'vs/workbench/browser/parts/globalCompositeBar'; + import { HoverPosition } from 'vs/base/browser/ui/hover/hoverWidget'; + import { IEditorGroupsContainer, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; + import { ActionRunner, IAction } from 'vs/base/common/actions'; +@@ -495,9 +495,6 @@ export class BrowserTitlebarPart extends Part implements ITitlebarPart { + if (action.id === GLOBAL_ACTIVITY_ID) { + return this.instantiationService.createInstance(SimpleGlobalActivityActionViewItem, { position: () => HoverPosition.BELOW }); + } +- if (action.id === ACCOUNTS_ACTIVITY_ID) { +- return this.instantiationService.createInstance(SimpleAccountActivityActionViewItem, { position: () => HoverPosition.BELOW }); +- } + } + + // --- Editor Actions diff --git a/src/vs/workbench/browser/parts/views/viewPaneContainer.ts b/src/vs/workbench/browser/parts/views/viewPaneContainer.ts -index f23c48b7db1..3a638425a2d 100644 +index 2be6d0ca33b..5da440cf5b5 100644 --- a/src/vs/workbench/browser/parts/views/viewPaneContainer.ts +++ b/src/vs/workbench/browser/parts/views/viewPaneContainer.ts -@@ -671,7 +671,7 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer { +@@ -680,7 +680,7 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer { } this.panes.filter(view => view.isVisible() !== visible) @@ -1413,10 +1909,10 @@ index f23c48b7db1..3a638425a2d 100644 isVisible(): boolean { diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts -index 84cee2b04a6..f5a54d6925b 100644 +index 9c886825943..116cc28ed20 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts -@@ -251,7 +251,10 @@ class ViewContainersRegistryImpl extends Disposable implements IViewContainersRe +@@ -253,7 +253,10 @@ class ViewContainersRegistryImpl extends Disposable implements IViewContainersRe } getDefaultViewContainer(location: ViewContainerLocation): ViewContainer | undefined { @@ -1453,10 +1949,10 @@ index 295c3fd59cb..d3aa77446b4 100644 if (!data.icon.complete) { data.icon.style.visibility = 'hidden'; diff --git a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts -index ff33245ded3..46c454d68a6 100644 +index 4797dcb84c3..ff12983c3db 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts -@@ -977,7 +977,7 @@ class ExtensionsContributions extends Disposable implements IWorkbenchContributi +@@ -992,7 +992,7 @@ class ExtensionsContributions extends Disposable implements IWorkbenchContributi order: 1, }); @@ -1466,19 +1962,19 @@ index ff33245ded3..46c454d68a6 100644 id: `extensions.actions.searchByCategory.${category}`, title: category, diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts -index 154696503e3..b1bb13e65ee 100644 +index 92097d03ccc..16165c90c90 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -17,7 +17,7 @@ import { InstallExtensionEvent, DidUninstallExtensionEvent, InstallOperation, InstallOptions, WEB_EXTENSION_TAG, InstallExtensionResult, - IExtensionsControlManifest, InstallVSIXOptions, IExtensionInfo, IExtensionQueryOptions, IDeprecationInfo, isTargetPlatformCompatible + IExtensionsControlManifest, InstallVSIXOptions, IExtensionInfo, IExtensionQueryOptions, IDeprecationInfo, isTargetPlatformCompatible, InstallExtensionInfo, EXTENSION_IDENTIFIER_REGEX } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IWorkbenchExtensionManagementService, DefaultIconPath } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IWorkbenchExtensionManagementService, getDefaultIconPath } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; - import { getGalleryExtensionTelemetryData, getLocalExtensionTelemetryData, areSameExtensions, groupByExtension, ExtensionKey, getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; + import { getGalleryExtensionTelemetryData, getLocalExtensionTelemetryData, areSameExtensions, groupByExtension, getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -@@ -205,7 +205,7 @@ export class Extension implements IExtension { +@@ -206,7 +206,7 @@ export class Extension implements IExtension { } } } @@ -1488,10 +1984,10 @@ index 154696503e3..b1bb13e65ee 100644 get repository(): string | undefined { diff --git a/src/vs/workbench/contrib/search/browser/searchModel.ts b/src/vs/workbench/contrib/search/browser/searchModel.ts -index f8261d8871b..d6acd6a35cf 100644 +index 82b4121cf6a..8b6803f2396 100644 --- a/src/vs/workbench/contrib/search/browser/searchModel.ts +++ b/src/vs/workbench/contrib/search/browser/searchModel.ts -@@ -1598,6 +1598,7 @@ export class SearchResult extends Disposable { +@@ -1608,6 +1608,7 @@ export class SearchResult extends Disposable { super(); this._rangeHighlightDecorations = this.instantiationService.createInstance(RangeHighlightDecorations); @@ -1499,7 +1995,7 @@ index f8261d8871b..d6acd6a35cf 100644 this._register(this.modelService.onModelAdded(model => this.onModelAdded(model))); this._register(this.notebookEditorService.onDidAddNotebookEditor(widget => { -@@ -2356,7 +2357,7 @@ function textSearchResultToMatches(rawMatch: ITextSearchMatch, fileMatch: FileMa +@@ -2374,7 +2375,7 @@ function textSearchResultToMatches(rawMatch: ITextSearchMatch, fileMatch: FileMa export function textSearchMatchesToNotebookMatches(textSearchMatches: ITextSearchMatch[], cell: CellMatch): MatchInNotebook[] { const notebookMatches: MatchInNotebook[] = []; @@ -1509,50 +2005,48 @@ index f8261d8871b..d6acd6a35cf 100644 if (Array.isArray(textSearchMatch.ranges)) { textSearchMatch.ranges.forEach((r, i) => { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts -index e6ae569ad9d..3b2ac782391 100644 +index 0988c4c0f47..8b46273facb 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts -@@ -83,9 +83,8 @@ import { IHistoryService } from 'vs/workbench/services/history/common/history'; +@@ -83,7 +83,6 @@ import { IHistoryService } from 'vs/workbench/services/history/common/history'; import { IWorkbenchLayoutService, Position } from 'vs/workbench/services/layout/browser/layoutService'; import { IPathService } from 'vs/workbench/services/path/common/pathService'; import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences'; -import { importAMDNodeModule } from 'vs/amdX'; import { ISimpleSelectedSuggestion } from 'vs/workbench/services/suggest/browser/simpleSuggestWidget'; --import type { IMarker, Terminal as XTermTerminal } from 'xterm'; -+import { IMarker, Terminal as XTermTerminal, Terminal } from 'xterm'; + import type { IMarker, Terminal as XTermTerminal } from '@xterm/xterm'; import { AccessibilityCommandId } from 'vs/workbench/contrib/accessibility/common/accessibilityCommands'; - - const enum Constants { -@@ -694,7 +693,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { +@@ -698,7 +697,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { return xtermConstructor; } xtermConstructor = Promises.withAsyncBody(async (resolve) => { -- const Terminal = (await importAMDNodeModule('xterm', 'lib/xterm.js')).Terminal; +- const Terminal = (await importAMDNodeModule('@xterm/xterm', 'lib/xterm.js')).Terminal; ++ const Terminal = (await import('@xterm/xterm')).Terminal; // Localize strings Terminal.strings.promptLabel = nls.localize('terminal.integrated.a11yPromptLabel', 'Terminal input'); Terminal.strings.tooMuchOutput = keybinding ? nls.localize('terminal.integrated.useAccessibleBuffer', 'Use the accessible buffer {0} to manually review output', keybinding.getLabel()) : nls.localize('terminal.integrated.useAccessibleBufferNoKb', 'Use the Terminal: Focus Accessible Buffer command to manually review output'); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts -index e37b1ba4d2b..549d13aa21c 100644 +index 98a645d83a2..2c745985798 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -19,7 +19,7 @@ import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/c import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { INotificationService } from 'vs/platform/notification/common/notification'; --import { ICreateContributedTerminalProfileOptions, IPtyHostAttachTarget, IRawTerminalInstanceLayoutInfo, IRawTerminalTabLayoutInfo, IShellLaunchConfig, ITerminalBackend, ITerminalLaunchError, ITerminalLogService, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalExitReason, TerminalLocation, TerminalLocationString, TitleEventSource } from 'vs/platform/terminal/common/terminal'; -+import { ICreateContributedTerminalProfileOptions, IPtyHostAttachTarget, IRawTerminalInstanceLayoutInfo, IRawTerminalTabLayoutInfo, IShellLaunchConfig, ITerminalBackend, ITerminalBackendRegistry, ITerminalLaunchError, ITerminalLogService, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalExitReason, TerminalExtensions, TerminalLocation, TerminalLocationString, TitleEventSource } from 'vs/platform/terminal/common/terminal'; +-import { ICreateContributedTerminalProfileOptions, IExtensionTerminalProfile, IPtyHostAttachTarget, IRawTerminalInstanceLayoutInfo, IRawTerminalTabLayoutInfo, IShellLaunchConfig, ITerminalBackend, ITerminalLaunchError, ITerminalLogService, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalExitReason, TerminalLocation, TerminalLocationString, TitleEventSource } from 'vs/platform/terminal/common/terminal'; ++import { ICreateContributedTerminalProfileOptions, IExtensionTerminalProfile, IPtyHostAttachTarget, IRawTerminalInstanceLayoutInfo, IRawTerminalTabLayoutInfo, IShellLaunchConfig, ITerminalBackend, ITerminalBackendRegistry, ITerminalLaunchError, ITerminalLogService, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalExitReason, TerminalExtensions, TerminalLocation, TerminalLocationString, TitleEventSource } from 'vs/platform/terminal/common/terminal'; import { formatMessageForTerminal } from 'vs/platform/terminal/common/terminalStrings'; import { iconForeground } from 'vs/platform/theme/common/colorRegistry'; import { getIconRegistry } from 'vs/platform/theme/common/iconRegistry'; -@@ -52,6 +52,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; - import { TerminalCapabilityStore } from 'vs/platform/terminal/common/capabilities/terminalCapabilityStore'; +@@ -53,6 +53,7 @@ import { TerminalCapabilityStore } from 'vs/platform/terminal/common/capabilitie import { ITimerService } from 'vs/workbench/services/timer/browser/timerService'; import { mark } from 'vs/base/common/performance'; + import { DetachedTerminal } from 'vs/workbench/contrib/terminal/browser/detachedTerminal'; +import { Registry } from 'vs/platform/registry/common/platform'; - import { DeatachedTerminal } from 'vs/workbench/contrib/terminal/browser/detachedTerminal'; import { ITerminalCapabilityImplMap, TerminalCapability } from 'vs/platform/terminal/common/capabilities/capabilities'; import { createInstanceCapabilityEventMultiplexer } from 'vs/workbench/contrib/terminal/browser/terminalEvents'; -@@ -220,7 +221,7 @@ export class TerminalService extends Disposable implements ITerminalService { + import { mainWindow } from 'vs/base/browser/window'; +@@ -214,7 +215,7 @@ export class TerminalService extends Disposable implements ITerminalService { this._handleInstanceContextKeys(); this._terminalShellTypeContextKey = TerminalContextKeys.shellType.bindTo(this._contextKeyService); this._processSupportContextKey = TerminalContextKeys.processSupported.bindTo(this._contextKeyService); @@ -1562,7 +2056,7 @@ index e37b1ba4d2b..549d13aa21c 100644 this._terminalCountContextKey = TerminalContextKeys.count.bindTo(this._contextKeyService); this._terminalEditorActive = TerminalContextKeys.terminalEditorActive.bindTo(this._contextKeyService); diff --git a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts -index ac1a2096320..c823dcc38b1 100644 +index 767dd15ab7d..aff608f0a42 100644 --- a/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.ts @@ -35,7 +35,6 @@ import { DecorationAddon } from 'vs/workbench/contrib/terminal/browser/xterm/dec @@ -1573,53 +2067,53 @@ index ac1a2096320..c823dcc38b1 100644 import { SuggestAddon } from 'vs/workbench/contrib/terminal/browser/xterm/suggestAddon'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/terminalContextKey'; -@@ -756,7 +755,7 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach +@@ -771,7 +770,7 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach protected async _getCanvasAddonConstructor(): Promise { if (!CanvasAddon) { -- CanvasAddon = (await importAMDNodeModule('xterm-addon-canvas', 'lib/xterm-addon-canvas.js')).CanvasAddon; -+ CanvasAddon = (await import('xterm-addon-canvas')).CanvasAddon; +- CanvasAddon = (await importAMDNodeModule('@xterm/addon-canvas', 'lib/xterm-addon-canvas.js')).CanvasAddon; ++ CanvasAddon = (await import('@xterm/addon-canvas')).CanvasAddon; } return CanvasAddon; } -@@ -782,35 +781,35 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach +@@ -797,35 +796,35 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach protected async _getImageAddonConstructor(): Promise { if (!ImageAddon) { -- ImageAddon = (await importAMDNodeModule('xterm-addon-image', 'lib/xterm-addon-image.js')).ImageAddon; -+ ImageAddon = (await import('xterm-addon-image')).ImageAddon; +- ImageAddon = (await importAMDNodeModule('@xterm/addon-image', 'lib/addon-image.js')).ImageAddon; ++ ImageAddon = (await import('@xterm/addon-image')).ImageAddon; } return ImageAddon; } protected async _getSearchAddonConstructor(): Promise { if (!SearchAddon) { -- SearchAddon = (await importAMDNodeModule('xterm-addon-search', 'lib/xterm-addon-search.js')).SearchAddon; -+ SearchAddon = (await import('xterm-addon-search')).SearchAddon; +- SearchAddon = (await importAMDNodeModule('@xterm/addon-search', 'lib/addon-search.js')).SearchAddon; ++ SearchAddon = (await import('@xterm/addon-search')).SearchAddon; } return SearchAddon; } protected async _getUnicode11Constructor(): Promise { if (!Unicode11Addon) { -- Unicode11Addon = (await importAMDNodeModule('xterm-addon-unicode11', 'lib/xterm-addon-unicode11.js')).Unicode11Addon; -+ Unicode11Addon = (await import('xterm-addon-unicode11')).Unicode11Addon; +- Unicode11Addon = (await importAMDNodeModule('@xterm/addon-unicode11', 'lib/addon-unicode11.js')).Unicode11Addon; ++ Unicode11Addon = (await import('@xterm/addon-unicode11')).Unicode11Addon; } return Unicode11Addon; } protected async _getWebglAddonConstructor(): Promise { if (!WebglAddon) { -- WebglAddon = (await importAMDNodeModule('xterm-addon-webgl', 'lib/xterm-addon-webgl.js')).WebglAddon; -+ WebglAddon = (await import('xterm-addon-webgl')).WebglAddon; +- WebglAddon = (await importAMDNodeModule('@xterm/addon-webgl', 'lib/addon-webgl.js')).WebglAddon; ++ WebglAddon = (await import('@xterm/addon-webgl')).WebglAddon; } return WebglAddon; } protected async _getSerializeAddonConstructor(): Promise { if (!SerializeAddon) { -- SerializeAddon = (await importAMDNodeModule('xterm-addon-serialize', 'lib/xterm-addon-serialize.js')).SerializeAddon; -+ SerializeAddon = (await import('xterm-addon-serialize')).SerializeAddon; +- SerializeAddon = (await importAMDNodeModule('@xterm/addon-serialize', 'lib/addon-serialize.js')).SerializeAddon; ++ SerializeAddon = (await import('@xterm/addon-serialize')).SerializeAddon; } return SerializeAddon; } @@ -1637,7 +2131,7 @@ index a6e9943b866..c470a1c9ed5 100644 }); } diff --git a/src/vs/workbench/contrib/webview/browser/webviewElement.ts b/src/vs/workbench/contrib/webview/browser/webviewElement.ts -index a860270eca9..0ef927948db 100644 +index b442277e920..481ab494561 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewElement.ts @@ -11,7 +11,7 @@ import { streamToBuffer, VSBufferReadableStream } from 'vs/base/common/buffer'; @@ -1649,7 +2143,7 @@ index a860270eca9..0ef927948db 100644 import { URI } from 'vs/base/common/uri'; import { generateUuid } from 'vs/base/common/uuid'; import { localize } from 'vs/nls'; -@@ -185,11 +185,6 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD +@@ -186,11 +186,6 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD return; } @@ -1661,7 +2155,7 @@ index a860270eca9..0ef927948db 100644 if (e.data.channel === 'webview-ready') { if (this._messagePort) { return; -@@ -476,6 +471,9 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD +@@ -477,6 +472,9 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD params.purpose = options.purpose; } @@ -1671,7 +2165,7 @@ index a860270eca9..0ef927948db 100644 COI.addSearchParam(params, true, true); const queryString = new URLSearchParams(params).toString(); -@@ -483,7 +481,8 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD +@@ -484,7 +482,8 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1754872 const fileName = isFirefox ? 'index-no-csp.html' : 'index.html'; @@ -1681,7 +2175,7 @@ index a860270eca9..0ef927948db 100644 } public mountTo(element: HTMLElement) { -@@ -537,11 +536,6 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD +@@ -538,11 +537,6 @@ export class WebviewElement extends Disposable implements IWebview, WebviewFindD return endpoint; } @@ -1729,10 +2223,10 @@ index 362e485948a..50f5a5f175d 100644 export type InstallExtensionOnServerEvent = InstallExtensionEvent & { server: IExtensionManagementServer }; export type UninstallExtensionOnServerEvent = UninstallExtensionEvent & { server: IExtensionManagementServer }; diff --git a/src/vs/workbench/services/extensions/browser/extensionService.ts b/src/vs/workbench/services/extensions/browser/extensionService.ts -index 25885c7c4f9..2d220cbe1ad 100644 +index a181772e8c4..0b12e5972ce 100644 --- a/src/vs/workbench/services/extensions/browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/browser/extensionService.ts -@@ -42,8 +42,10 @@ import { IUserDataInitializationService } from 'vs/workbench/services/userData/b +@@ -43,8 +43,10 @@ import { IUserDataInitializationService } from 'vs/workbench/services/userData/b import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile'; export class ExtensionService extends AbstractExtensionService implements IExtensionService { @@ -1744,7 +2238,7 @@ index 25885c7c4f9..2d220cbe1ad 100644 @IInstantiationService instantiationService: IInstantiationService, @INotificationService notificationService: INotificationService, @IBrowserWorkbenchEnvironmentService private readonly _browserEnvironmentService: IBrowserWorkbenchEnvironmentService, -@@ -67,21 +69,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten +@@ -68,21 +70,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten @IRemoteExplorerService private readonly _remoteExplorerService: IRemoteExplorerService, @IDialogService dialogService: IDialogService, ) { @@ -1767,7 +2261,7 @@ index 25885c7c4f9..2d220cbe1ad 100644 instantiationService, notificationService, _browserEnvironmentService, -@@ -129,7 +120,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten +@@ -130,7 +121,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten this._register(this._fileService.registerProvider(Schemas.https, provider)); } @@ -1776,7 +2270,7 @@ index 25885c7c4f9..2d220cbe1ad 100644 const system: IExtensionDescription[] = [], user: IExtensionDescription[] = [], development: IExtensionDescription[] = []; try { await Promise.all([ -@@ -212,16 +203,16 @@ export class ExtensionService extends AbstractExtensionService implements IExten +@@ -213,16 +204,16 @@ export class ExtensionService extends AbstractExtensionService implements IExten } } @@ -1798,7 +2292,7 @@ index 25885c7c4f9..2d220cbe1ad 100644 @ILogService private readonly _logService: ILogService, ) { } -@@ -248,7 +239,7 @@ class BrowserExtensionHostFactory implements IExtensionHostFactory { +@@ -249,7 +240,7 @@ class BrowserExtensionHostFactory implements IExtensionHostFactory { } } @@ -1807,7 +2301,7 @@ index 25885c7c4f9..2d220cbe1ad 100644 return { getInitData: async (): Promise => { if (isInitialStart) { -@@ -345,4 +336,71 @@ export class BrowserExtensionHostKindPicker implements IExtensionHostKindPicker +@@ -346,4 +337,71 @@ export class BrowserExtensionHostKindPicker implements IExtensionHostKindPicker } } @@ -1881,10 +2375,10 @@ index 25885c7c4f9..2d220cbe1ad 100644 + +registerSingleton(IExtensionService, BrowserExtensionService, InstantiationType.Eager); diff --git a/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts b/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts -index 9da3a6e5c58..dce278df3bb 100644 +index e3c810e97a2..18336ca8950 100644 --- a/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts +++ b/src/vs/workbench/services/extensions/browser/extensionUrlHandler.ts -@@ -99,7 +99,7 @@ type ExtensionUrlHandlerClassification = { +@@ -100,7 +100,7 @@ type ExtensionUrlHandlerClassification = { * * It also makes sure the user confirms opening URLs directed towards extensions. */ @@ -1894,10 +2388,10 @@ index 9da3a6e5c58..dce278df3bb 100644 readonly _serviceBrand: undefined; diff --git a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts -index a7ce017ab9f..fd873470224 100644 +index b6d4f0f3831..7d462411a9c 100644 --- a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts +++ b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts -@@ -74,7 +74,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost +@@ -76,7 +76,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost this._extensionHostLogsLocation = joinPath(this._environmentService.extHostLogsPath, 'webWorker'); } @@ -1906,7 +2400,7 @@ index a7ce017ab9f..fd873470224 100644 const suffixSearchParams = new URLSearchParams(); if (this._environmentService.debugExtensionHost && this._environmentService.debugRenderer) { suffixSearchParams.set('debugged', '1'); -@@ -109,8 +109,6 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost +@@ -111,8 +111,6 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost res.searchParams.set('salt', stableOriginUUID); return res.toString(); } @@ -1916,10 +2410,10 @@ index a7ce017ab9f..fd873470224 100644 const relativeExtensionHostIframeSrc = FileAccess.asBrowserUri(iframeModulePath); diff --git a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts -index e1308458a40..0d4fe0cae01 100644 +index 4b9a9581b0d..6d87d41df51 100644 --- a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts +++ b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts -@@ -88,9 +88,9 @@ export abstract class AbstractExtensionService extends Disposable implements IEx +@@ -90,9 +90,9 @@ export abstract class AbstractExtensionService extends Disposable implements IEx private _resolveAuthorityAttempt: number = 0; constructor( @@ -1932,7 +2426,7 @@ index e1308458a40..0d4fe0cae01 100644 @IInstantiationService protected readonly _instantiationService: IInstantiationService, @INotificationService protected readonly _notificationService: INotificationService, @IWorkbenchEnvironmentService protected readonly _environmentService: IWorkbenchEnvironmentService, -@@ -205,7 +205,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx +@@ -207,7 +207,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx //#region deltaExtensions @@ -1941,7 +2435,7 @@ index e1308458a40..0d4fe0cae01 100644 this._deltaExtensionsQueue.push(item); if (this._inHandleDeltaExtensions) { // Let the current item finish, the new one will be picked up -@@ -1183,7 +1183,7 @@ export interface IExtensionHostFactory { +@@ -1189,7 +1189,7 @@ export interface IExtensionHostFactory { createExtensionHost(runningLocations: ExtensionRunningLocationTracker, runningLocation: ExtensionRunningLocation, isInitialStart: boolean): IExtensionHost | null; } @@ -1951,10 +2445,10 @@ index e1308458a40..0d4fe0cae01 100644 public readonly toAdd: IExtension[], public readonly toRemove: string[] | IExtension[] diff --git a/src/vs/workbench/services/keybinding/browser/keybindingService.ts b/src/vs/workbench/services/keybinding/browser/keybindingService.ts -index 10e58f90efe..cf1ee5bf6c7 100644 +index fb13ac6c764..f8c6873926c 100644 --- a/src/vs/workbench/services/keybinding/browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/browser/keybindingService.ts -@@ -392,15 +392,19 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { +@@ -391,15 +391,19 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { return this.userKeybindings.keybindings.length; } @@ -2106,10 +2600,10 @@ index a466cc1f3a1..09f6a40eb26 100644 declare readonly _serviceBrand: undefined; diff --git a/src/vs/workbench/services/storage/browser/storageService.ts b/src/vs/workbench/services/storage/browser/storageService.ts -index 46b202086ae..79042d7ca93 100644 +index a77c2db9446..2b9a8c19926 100644 --- a/src/vs/workbench/services/storage/browser/storageService.ts +++ b/src/vs/workbench/services/storage/browser/storageService.ts -@@ -33,6 +33,7 @@ export class BrowserStorageService extends AbstractStorageService { +@@ -34,6 +34,7 @@ export class BrowserStorageService extends AbstractStorageService { private workspaceStorage: IStorage | undefined; private workspaceStorageDatabase: IIndexedDBStorageDatabase | undefined; @@ -2117,7 +2611,7 @@ index 46b202086ae..79042d7ca93 100644 get hasPendingUpdate(): boolean { return Boolean( -@@ -43,7 +44,7 @@ export class BrowserStorageService extends AbstractStorageService { +@@ -44,7 +45,7 @@ export class BrowserStorageService extends AbstractStorageService { } constructor( @@ -2126,7 +2620,7 @@ index 46b202086ae..79042d7ca93 100644 private readonly userDataProfileService: IUserDataProfileService, @ILogService private readonly logService: ILogService, ) { -@@ -117,12 +118,15 @@ export class BrowserStorageService extends AbstractStorageService { +@@ -118,12 +119,15 @@ export class BrowserStorageService extends AbstractStorageService { } private async createWorkspaceStorage(): Promise { @@ -2145,7 +2639,7 @@ index 46b202086ae..79042d7ca93 100644 await this.workspaceStorage.init(); -@@ -182,7 +186,18 @@ export class BrowserStorageService extends AbstractStorageService { +@@ -183,7 +187,18 @@ export class BrowserStorageService extends AbstractStorageService { } protected async switchToWorkspace(toWorkspace: IAnyWorkspaceIdentifier, preserveData: boolean): Promise { diff --git a/src/api.ts b/src/api.ts index fe4fd7d1..2a3b3b94 100644 --- a/src/api.ts +++ b/src/api.ts @@ -54,6 +54,7 @@ const api: typeof vscode = { interactive: createProxy('interactive'), ai: createProxy('ai'), chat: createProxy('chat'), + speech: createProxy('speech'), // types Breakpoint: extHostTypes.Breakpoint, @@ -168,7 +169,6 @@ const api: typeof vscode = { TaskRevealKind: extHostTypes.TaskRevealKind, TaskScope: extHostTypes.TaskScope, TerminalLink: extHostTypes.TerminalLink, - TerminalQuickFixExecuteTerminalCommand: extHostTypes.TerminalQuickFixCommand, TerminalQuickFixOpener: extHostTypes.TerminalQuickFixOpener, TerminalLocation: extHostTypes.TerminalLocation, TerminalProfile: extHostTypes.TerminalProfile, @@ -228,7 +228,6 @@ const api: typeof vscode = { TestResultState: extHostTypes.TestResultState, TestRunRequest: extHostTypes.TestRunRequest, TestMessage: extHostTypes.TestMessage, - TestMessage2: extHostTypes.TestMessage, TestTag: extHostTypes.TestTag, TestRunProfileKind: extHostTypes.TestRunProfileKind, TextSearchCompleteMessageType: searchExtTypes.TextSearchCompleteMessageType, @@ -261,7 +260,14 @@ const api: typeof vscode = { StackFrameFocus: extHostTypes.StackFrameFocus, // eslint-disable-next-line @typescript-eslint/no-explicit-any ThreadFocus: extHostTypes.ThreadFocus, - RelatedInformationType: extHostTypes.RelatedInformationType + RelatedInformationType: extHostTypes.RelatedInformationType, + ChatAgentResultFeedbackKind: extHostTypes.ChatAgentResultFeedbackKind, + TabInputChat: extHostTypes.ChatEditorTabInput, + SpeechToTextStatus: extHostTypes.SpeechToTextStatus, + ChatAgentCompletionItem: extHostTypes.ChatAgentCompletionItem, + MultiDocumentHighlight: extHostTypes.MultiDocumentHighlight, + NotebookVariablesRequestKind: extHostTypes.NotebookVariablesRequestKind, + TerminalQuickFixTerminalCommand: extHostTypes.TerminalQuickFixCommand } // @ts-ignore the syntax will be transformed by a typescript transformer in the rollup config diff --git a/src/lifecycle.ts b/src/lifecycle.ts index 0fdd4ec2..788ed5f2 100644 --- a/src/lifecycle.ts +++ b/src/lifecycle.ts @@ -2,7 +2,7 @@ import { Registry } from 'vs/platform/registry/common/platform' import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions' import { ILifecycleService, LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle' import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation' -import { Barrier, RunOnceScheduler, runWhenIdle } from 'vs/base/common/async' +import { Barrier, RunOnceScheduler, _runWhenIdle } from 'vs/base/common/async' import { Emitter } from 'vs/base/common/event' import { EditorExtensions, IEditorFactoryRegistry } from 'vs/workbench/common/editor' import { StandaloneServices } from 'vs/editor/standalone/browser/standaloneServices' @@ -63,7 +63,7 @@ export async function startup (instantiationService: IInstantiationService): Pro // Set lifecycle phase to `Eventually` after a short delay and when idle (min 2.5sec, max 5sec) const eventuallyPhaseScheduler = new RunOnceScheduler(() => { - runWhenIdle(() => { + _runWhenIdle(window, () => { lifecycleService.phase = LifecyclePhase.Eventually }, 2500) }, 2500) diff --git a/src/localExtensionHost.ts b/src/localExtensionHost.ts index 49302fbd..0dfdb342 100644 --- a/src/localExtensionHost.ts +++ b/src/localExtensionHost.ts @@ -109,6 +109,7 @@ class LocalExtensionHost implements IExtensionHost { public extensions: ExtensionHostExtensions | null = null private readonly _extensionHostLogsLocation: URI private _protocolPromise: Promise | null + public pid = null constructor ( public readonly runningLocation: LocalProcessRunningLocation, @@ -201,7 +202,8 @@ class LocalExtensionHost implements IExtensionHost { sessionId: this._telemetryService.sessionId, machineId: this._telemetryService.machineId, firstSessionDate: this._telemetryService.firstSessionDate, - msftInternal: this._telemetryService.msftInternal + msftInternal: this._telemetryService.msftInternal, + sqmId: this._telemetryService.sqmId }, logLevel: this._logService.getLevel(), loggers: [...this._loggerService.getRegisteredLoggers()], diff --git a/src/missing-services.ts b/src/missing-services.ts index 32298203..e32e52f6 100644 --- a/src/missing-services.ts +++ b/src/missing-services.ts @@ -65,7 +65,7 @@ import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs' import { IElevatedFileService } from 'vs/workbench/services/files/common/elevatedFileService' import { BrowserElevatedFileService } from 'vs/workbench/services/files/browser/elevatedFileService' import { IDecorationsService } from 'vs/workbench/services/decorations/common/decorations' -import { RequestService } from 'vs/platform/request/browser/requestService' +import { BrowserRequestService } from 'vs/workbench/services/request/browser/requestService' import { BrowserTextFileService } from 'vs/workbench/services/textfile/browser/browserTextFileService' import { DecorationsService } from 'vs/workbench/services/decorations/browser/decorationsService' import { UriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentityService' @@ -92,7 +92,7 @@ import { IUpdateService, State } from 'vs/platform/update/common/update' import { IStatusbarService } from 'vs/workbench/services/statusbar/browser/statusbar' import { IExtensionGalleryService, IExtensionManagementService, IExtensionTipsService, IGlobalExtensionEnablementService, ILocalExtension } from 'vs/platform/extensionManagement/common/extensionManagement' import { IModelService } from 'vs/editor/common/services/model' -import { IDetachedTerminalInstance, ITerminalEditorService, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, ITerminalService, TerminalConnectionState } from 'vs/workbench/contrib/terminal/browser/terminal' +import { ITerminalEditorService, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, ITerminalService, TerminalConnectionState } from 'vs/workbench/contrib/terminal/browser/terminal' import { ITerminalProfileResolverService, ITerminalProfileService } from 'vs/workbench/contrib/terminal/common/terminal' import { ITerminalLogService, TerminalLocation } from 'vs/platform/terminal/common/terminal' import { ITerminalContributionService } from 'vs/workbench/contrib/terminal/common/terminalExtensionPoints' @@ -121,11 +121,10 @@ import { ICustomEditorService } from 'vs/workbench/contrib/customEditor/common/c import { IWebviewWorkbenchService } from 'vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService' import { IWebview, IWebviewService } from 'vs/workbench/contrib/webview/browser/webview' import { IWebviewViewService } from 'vs/workbench/contrib/webviewView/browser/webviewViewService' -import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService' import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver' import { ExternalUriOpenerService, IExternalUriOpenerService } from 'vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService' import { IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView' -import { IBuiltinExtensionsScannerService, IExtension, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions' +import { IExtension, IBuiltinExtensionsScannerService, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions' import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService' import { IRemoteExtensionsScannerService } from 'vs/platform/remote/common/remoteExtensionsScanner' import { BrowserURLService } from 'vs/workbench/services/url/browser/urlService' @@ -166,7 +165,6 @@ import { IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor' import { IMessage, ISignService } from 'vs/platform/sign/common/sign' import { BrowserHostService } from 'vs/workbench/services/host/browser/browserHostService' import { IBannerService } from 'vs/workbench/services/banner/browser/bannerService' -import { ITitleService } from 'vs/workbench/services/title/common/titleService' import { IChatAgentService } from 'vs/workbench/contrib/chat/common/chatAgents' import { IActiveLanguagePackService, ILocaleService } from 'vs/workbench/services/localization/common/locale' import { joinPath } from 'vs/base/common/resources' @@ -183,8 +181,12 @@ import { ITestingDecorationsService } from 'vs/workbench/contrib/testing/common/ import { ITestingContinuousRunService } from 'vs/workbench/contrib/testing/common/testingContinuousRunService' import { ITestExplorerFilterState } from 'vs/workbench/contrib/testing/common/testExplorerFilterState' import { ITestingPeekOpener } from 'vs/workbench/contrib/testing/common/testingPeekOpener' -import { getBuiltInExtensionTranslationsUris } from './l10n' +import { IAuxiliaryWindowService } from 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService' +import { ISpeechService } from 'vs/workbench/contrib/speech/common/speechService' +import { ITitleService } from 'vs/workbench/services/title/browser/titleService' +import { ITestCoverageService } from 'vs/workbench/contrib/testing/common/testCoverageService' import { unsupported } from './tools' +import { getBuiltInExtensionTranslationsUris } from './l10n' class NullLoggerService extends AbstractLoggerService { constructor () { @@ -224,6 +226,9 @@ registerSingleton(IEditorService, class EditorService implements IEditorService saveAll = async () => ({ success: false, editors: [] }) revert = async () => false revertAll = async () => false + createScoped (): IEditorService { + return this + } }, InstantiationType.Eager) registerSingleton(IPaneCompositePartService, class PaneCompositePartService implements IPaneCompositePartService { @@ -282,12 +287,19 @@ registerSingleton(IFileService, class FileService implements IFileService { canDelete = unsupported onDidWatchError = Event.None watch = unsupported + createWatcher = unsupported dispose () { // ignore } }, InstantiationType.Eager) class EmptyEditorGroup implements IEditorGroup, IEditorGroupView { + get groupsView () { + return unsupported() + } + + notifyLabelChanged (): void {} + createEditorActions = unsupported onDidFocus = Event.None onDidOpenEditorFail = Event.None whenRestored = Promise.resolve() @@ -365,6 +377,27 @@ class EmptyEditorGroup implements IEditorGroup, IEditorGroupView { const fakeActiveGroup = new EmptyEditorGroup() class EmptyEditorGroupsService implements IEditorGroupsService { + onDidCreateAuxiliaryEditorPart = Event.None + parts = [] + + get activePart () { + return this + } + + get mainPart () { + return this + } + + getPart = unsupported + createAuxiliaryEditorPart = unsupported + onDidChangeGroupMaximized = Event.None + toggleMaximizeGroup = unsupported + toggleExpandGroup = unsupported + get partOptions () { + return unsupported() + } + + createEditorDropTarget = unsupported readonly _serviceBrand = undefined getLayout = unsupported onDidChangeActiveGroup = Event.None @@ -403,7 +436,6 @@ class EmptyEditorGroupsService implements IEditorGroupsService { mergeGroup = unsupported mergeAllGroups = unsupported copyGroup = unsupported - partOptions = {} onDidChangeEditorPartOptions = Event.None enforcePartOptions = unsupported } @@ -421,6 +453,9 @@ registerSingleton(IBannerService, class BannerService implements IBannerService registerSingleton(ITitleService, class TitleService implements ITitleService { _serviceBrand: undefined + getPart = unsupported + createAuxiliaryTitlebarPart = unsupported + dispose = unsupported onMenubarVisibilityChange = Event.None isCommandCenterVisible = false onDidChangeCommandCenterVisibility = Event.None @@ -670,6 +705,7 @@ class FakeAdapterManager implements IAdapterManager { } registerSingleton(IDebugService, class DebugService implements IDebugService { _serviceBrand: undefined + updateDataBreakpoint = unsupported get state () { return unsupported() } onDidChangeState = Event.None onDidNewSession = Event.None @@ -707,7 +743,7 @@ registerSingleton(IDebugService, class DebugService implements IDebugService { runTo = unsupported }, InstantiationType.Eager) -registerSingleton(IRequestService, RequestService, InstantiationType.Eager) +registerSingleton(IRequestService, BrowserRequestService, InstantiationType.Eager) registerSingleton(IWorkspaceTrustRequestService, class WorkspaceTrustRequestService implements IWorkspaceTrustRequestService { _serviceBrand: undefined @@ -724,6 +760,9 @@ registerSingleton(IWorkspaceTrustRequestService, class WorkspaceTrustRequestServ registerSingleton(IActivityService, class ActivityService implements IActivityService { _serviceBrand: undefined + onDidChangeActivity = Event.None + getViewContainerActivities = unsupported + getActivity = unsupported showViewContainerActivity = () => Disposable.None showViewActivity = () => Disposable.None showAccountsActivity = () => Disposable.None @@ -929,9 +968,14 @@ registerSingleton(ITimerService, class TimerService implements ITimerService { }, InstantiationType.Eager) registerSingleton(IExtensionsWorkbenchService, class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { + _serviceBrand: undefined + isAutoUpdateEnabledFor = unsupported + updateAutoUpdateEnablementFor = unsupported + isAutoUpdateEnabled = unsupported + getAutoUpdateValue = unsupported + updateAll = unsupported toggleApplyExtensionToAllProfiles = unsupported whenInitialized = Promise.resolve() - _serviceBrand: undefined onChange = Event.None onReset = Event.None preferPreReleases = false @@ -964,13 +1008,9 @@ registerSingleton(IExtensionManagementServerService, class ExtensionManagementSe remoteExtensionManagementServer = null webExtensionManagementServer = null - getExtensionManagementServer (_extension: IExtension) { - return null - } + getExtensionManagementServer = unsupported - getExtensionInstallLocation (_extension: IExtension) { - return null - } + getExtensionInstallLocation = unsupported }, InstantiationType.Eager) registerSingleton(IExtensionRecommendationsService, class ExtensionRecommendationsService implements IExtensionRecommendationsService { @@ -1046,10 +1086,10 @@ registerSingleton(IWorkspaceExtensionsConfigService, class WorkspaceExtensionsCo }, InstantiationType.Eager) registerSingleton(IWorkbenchExtensionEnablementService, class WorkbenchExtensionEnablementService implements IWorkbenchExtensionEnablementService { + getEnablementStates = (extensions: IExtension[]) => extensions.map(() => EnablementState.EnabledGlobally) _serviceBrand: undefined onEnablementChanged = Event.None getEnablementState = () => EnablementState.EnabledGlobally - getEnablementStates = (extensions: IExtension[]) => extensions.map(() => EnablementState.EnabledGlobally) getDependenciesEnablementStates = () => [] canChangeEnablement = () => false canChangeWorkspaceEnablement = () => false @@ -1083,6 +1123,7 @@ registerSingleton(ITunnelService, class TunnelService implements ITunnelService registerSingleton(IFilesConfigurationService, FilesConfigurationService, InstantiationType.Eager) registerSingleton(IUntitledTextEditorService, class UntitledTextEditorService implements IUntitledTextEditorService { + canDispose = (): true | Promise => true _serviceBrand: undefined isUntitledWithAssociatedResource = () => false onDidChangeDirty = Event.None @@ -1164,6 +1205,7 @@ registerSingleton(ITextEditorService, class TextEditorService implements ITextEd }, InstantiationType.Eager) registerSingleton(IEditorResolverService, class EditorResolverService implements IEditorResolverService { + getAllUserAssociations = unsupported _serviceBrand: undefined getAssociationsForResource = unsupported updateUserAssociations = unsupported @@ -1313,6 +1355,10 @@ registerSingleton(IUpdateService, class UpdateService implements IUpdateService registerSingleton(IStatusbarService, class StatusbarService implements IStatusbarService { _serviceBrand: undefined + getPart = unsupported + createAuxiliaryStatusbarPart = unsupported + createScoped = unsupported + dispose = unsupported onDidChangeEntryVisibility = Event.None addEntry = () => ({ dispose: () => {}, @@ -1347,12 +1393,19 @@ registerSingleton(IExtensionGalleryService, class ExtensionGalleryService implem }, InstantiationType.Eager) registerSingleton(ITerminalService, class TerminalService implements ITerminalService { + detachedInstances = [] + onAnyInstanceDataInput = Event.None + onAnyInstanceIconChange = Event.None + onAnyInstanceMaximumDimensionsChange = Event.None + onAnyInstancePrimaryStatusChange = Event.None + onAnyInstanceProcessIdReady = Event.None + onAnyInstanceSelectionChange = Event.None + onAnyInstanceTitleChange = Event.None + createOnInstanceEvent = unsupported + createOnInstanceCapabilityEvent = unsupported onInstanceEvent = unsupported onInstanceCapabilityEvent = unsupported - - async createDetachedTerminal (): Promise { - unsupported() - } + createDetachedTerminal = unsupported onDidChangeSelection = Event.None _serviceBrand: undefined @@ -1760,6 +1813,10 @@ registerSingleton(IWorkbenchAssignmentService, class WorkbenchAssignmentService }, InstantiationType.Delayed) registerSingleton(IChatService, class ChatService implements IChatService { + onDidSubmitAgent = Event.None + onDidRegisterProvider = Event.None + hasSessions = () => false + onDidDisposeSession = Event.None _serviceBrand: undefined transferredSessionData = undefined onDidSubmitSlashCommand = Event.None @@ -1788,6 +1845,7 @@ registerSingleton(IChatService, class ChatService implements IChatService { }, InstantiationType.Delayed) registerSingleton(IQuickChatService, class QuickChatService implements IQuickChatService { + focused = false _serviceBrand: undefined onDidClose = Event.None enabled = false @@ -1799,6 +1857,10 @@ registerSingleton(IQuickChatService, class QuickChatService implements IQuickCha }, InstantiationType.Delayed) registerSingleton(IChatAgentService, class QuickChatService implements IChatAgentService { + getFollowups = unsupported + getDefaultAgent = unsupported + getSecondaryAgent = unsupported + updateAgent = unsupported _serviceBrand = undefined onDidChangeAgents = Event.None registerAgentData = unsupported @@ -1870,11 +1932,6 @@ registerSingleton(IWebviewWorkbenchService, class WebviewWorkbenchService implem resolveWebview = unsupported }, InstantiationType.Delayed) -registerSingleton(IEditorDropService, class EditorDropService implements IEditorDropService { - _serviceBrand: undefined - createEditorDropTarget = unsupported -}, InstantiationType.Delayed) - registerSingleton(IRemoteAuthorityResolverService, class RemoteAuthorityResolverService implements IRemoteAuthorityResolverService { _serviceBrand: undefined onDidChangeConnectionData = Event.None @@ -1891,6 +1948,7 @@ registerSingleton(IRemoteAuthorityResolverService, class RemoteAuthorityResolver registerSingleton(IExternalUriOpenerService, ExternalUriOpenerService, InstantiationType.Delayed) registerSingleton(IAccessibleViewService, class AccessibleViewService implements IAccessibleViewService { + showLastProvider = unsupported showAccessibleViewHelp = unsupported goToSymbol = unsupported disableHint = unsupported @@ -1990,6 +2048,9 @@ registerSingleton(IQuickDiffService, class QuickDiffService implements IQuickDif registerSingleton(ISCMService, class SCMService implements ISCMService { _serviceBrand: undefined + onDidChangeInputValueProviders = Event.None + getDefaultInputValueProvider = unsupported + registerSCMInputValueProvider = unsupported onDidAddRepository = Event.None onDidRemoveRepository = Event.None repositories = [] @@ -2057,6 +2118,8 @@ registerSingleton(INotebookCellStatusBarService, class NotebookCellStatusBarServ registerSingleton(INotebookKernelService, class NotebookKernelService implements INotebookKernelService { _serviceBrand: undefined + onDidNotebookVariablesUpdate = Event.None + notifyVariablesChange = unsupported onDidAddKernel = Event.None onDidRemoveKernel = Event.None onDidChangeSelectedNotebooks = Event.None @@ -2142,6 +2205,11 @@ registerSingleton(IChatWidgetService, class ChatWidgetService implements IChatWi }, InstantiationType.Delayed) registerSingleton(IRemoteExplorerService, class RemoteExplorerService implements IRemoteExplorerService { + onDidChangeHelpInformation = Event.None + get helpInformation () { + return unsupported() + } + _serviceBrand: undefined onDidChangeTargetType = Event.None targetType = [] @@ -2267,6 +2335,7 @@ registerSingleton(IUserDataProfileImportExportService, class UserDataProfileImpo }, InstantiationType.Delayed) registerSingleton(IWorkbenchIssueService, class WorkbenchIssueService implements IWorkbenchIssueService { + registerIssueDataProvider = unsupported _serviceBrand: undefined openReporter = unsupported openProcessExplorer = unsupported @@ -2390,6 +2459,7 @@ registerSingleton(INotebookSearchService, class NotebookSearchService implements registerSingleton(IChatProviderService, class ChatProviderService implements IChatProviderService { _serviceBrand: undefined + lookupChatResponseProvider = unsupported registerChatResponseProvider = unsupported fetchChatResponse = unsupported }, InstantiationType.Delayed) @@ -2406,6 +2476,8 @@ registerSingleton(IChatSlashCommandService, class ChatSlashCommandService implem }, InstantiationType.Delayed) registerSingleton(IChatVariablesService, class ChatVariablesService implements IChatVariablesService { + getDynamicVariables = unsupported + getDynamicReferences = unsupported registerVariable = unsupported getVariables = unsupported resolveVariables = unsupported @@ -2484,3 +2556,29 @@ registerSingleton(ITestingPeekOpener, class TestingPeekOpener implements ITestin open = unsupported closeAllPeeks = unsupported }, InstantiationType.Delayed) + +registerSingleton(IAuxiliaryWindowService, class AuxiliaryWindowService implements IAuxiliaryWindowService { + _serviceBrand: undefined + onDidOpenAuxiliaryWindow = Event.None + hasWindow = () => false + open = unsupported +}, InstantiationType.Delayed) + +registerSingleton(ISpeechService, class SpeechService implements ISpeechService { + _serviceBrand: undefined + onDidRegisterSpeechProvider = Event.None + onDidUnregisterSpeechProvider = Event.None + hasSpeechProvider = false + registerSpeechProvider = unsupported + createSpeechToTextSession = unsupported +}, InstantiationType.Delayed) + +registerSingleton(ITestCoverageService, class TestCoverageService implements ITestCoverageService { + _serviceBrand: undefined + get selected () { + return unsupported() + } + + openCoverage = unsupported + closeCoverage = unsupported +}, InstantiationType.Delayed) diff --git a/src/service-override/accessibility.ts b/src/service-override/accessibility.ts index 043adb2d..b34d4e02 100644 --- a/src/service-override/accessibility.ts +++ b/src/service-override/accessibility.ts @@ -1,11 +1,14 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { AccessibleViewService, IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView' +import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility' +import { AccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService' import 'vs/workbench/contrib/accessibility/browser/accessibility.contribution' import 'vs/workbench/contrib/codeEditor/browser/accessibility/accessibility' export default function getServiceOverride (): IEditorOverrideServices { return { - [IAccessibleViewService.toString()]: new SyncDescriptor(AccessibleViewService, [], true) + [IAccessibleViewService.toString()]: new SyncDescriptor(AccessibleViewService, [], true), + [IAccessibleNotificationService.toString()]: new SyncDescriptor(AccessibleNotificationService, [], true) } } diff --git a/src/service-override/editor.ts b/src/service-override/editor.ts index eed9db22..027774be 100644 --- a/src/service-override/editor.ts +++ b/src/service-override/editor.ts @@ -20,6 +20,12 @@ import { unsupported } from '../tools' import 'vs/workbench/browser/parts/editor/editor.contribution' class EmptyEditorGroup implements IEditorGroup, IEditorGroupView { + get groupsView () { + return unsupported() + } + + notifyLabelChanged (): void {} + createEditorActions = unsupported onDidFocus = Event.None onDidOpenEditorFail = Event.None whenRestored = Promise.resolve() @@ -98,6 +104,26 @@ class EmptyEditorGroup implements IEditorGroup, IEditorGroupView { const fakeActiveGroup = new EmptyEditorGroup() class EmptyEditorGroupsService implements IEditorGroupsService { + onDidCreateAuxiliaryEditorPart = Event.None + parts = [] + get activePart () { + return unsupported() + } + + get mainPart () { + return unsupported() + } + + getPart = unsupported + createAuxiliaryEditorPart = unsupported + onDidChangeGroupMaximized = Event.None + toggleMaximizeGroup = unsupported + toggleExpandGroup = unsupported + get partOptions () { + return unsupported() + } + + createEditorDropTarget = unsupported readonly _serviceBrand = undefined getLayout = unsupported onDidChangeActiveGroup = Event.None @@ -136,7 +162,6 @@ class EmptyEditorGroupsService implements IEditorGroupsService { mergeGroup = unsupported mergeAllGroups = unsupported copyGroup = unsupported - partOptions = {} onDidChangeEditorPartOptions = Event.None enforcePartOptions = unsupported } diff --git a/src/service-override/layout.ts b/src/service-override/layout.ts index a90031b9..14cba3ad 100644 --- a/src/service-override/layout.ts +++ b/src/service-override/layout.ts @@ -1,8 +1,7 @@ import { IEditorOverrideServices, StandaloneServices } from 'vs/editor/standalone/browser/standaloneServices' -import { IWorkbenchLayoutService, PanelAlignment, Parts, Position } from 'vs/workbench/services/layout/browser/layoutService' +import { ActivityBarPosition, IWorkbenchLayoutService, LayoutSettings, PanelAlignment, Parts, Position } from 'vs/workbench/services/layout/browser/layoutService' import { ILayoutOffsetInfo, ILayoutService } from 'vs/platform/layout/browser/layoutService' import { Emitter, Event } from 'vs/base/common/event' -import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService' import * as dom from 'vs/base/browser/dom' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { Part } from 'vs/workbench/browser/part' @@ -15,24 +14,91 @@ import { ActivitybarPart } from 'vs/workbench/browser/parts/activitybar/activity import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService' import { IStatusbarService } from 'vs/workbench/services/statusbar/browser/statusbar' import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation' +import { IConfigurationService } from 'vs/platform/configuration/common/configuration' +import { Disposable, DisposableStore, toDisposable } from 'vs/base/common/lifecycle' +import { IAuxiliaryWindowService } from 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService' +import { StandaloneCodeEditor } from 'vs/editor/standalone/browser/standaloneCodeEditor' +import { IHostService } from 'vs/workbench/services/host/browser/host' +import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService' import { onRenderWorkbench } from '../lifecycle' import { getWorkbenchContainer } from '../workbench' -export class LayoutService implements ILayoutService, IWorkbenchLayoutService { +export class LayoutService extends Disposable implements ILayoutService, IWorkbenchLayoutService { declare readonly _serviceBrand: undefined private paneCompositeService!: IPaneCompositePartService private editorGroupService!: IEditorGroupsService private statusBarService!: IStatusbarService private viewDescriptorService!: IViewDescriptorService + private configurationService!: IConfigurationService + private auxiliaryWindowService!: IAuxiliaryWindowService + private hostService!: IHostService + + private activeContainerId: number | undefined constructor ( - public container: HTMLElement = getWorkbenchContainer() + public mainContainer: HTMLElement = getWorkbenchContainer() ) { + super() window.addEventListener('resize', () => this.layout()) this.layout() } + hasMainWindowBorder (): boolean { + return false + } + + getMainWindowBorderRadius (): string | undefined { + return undefined + } + + isMainEditorLayoutCentered (): boolean { + return false + } + + centerMainEditorLayout (): void { + } + + private readonly _onDidLayoutContainer = this._register(new Emitter<{ readonly container: HTMLElement, readonly dimension: dom.IDimension }>()) + readonly onDidLayoutContainer = this._onDidLayoutContainer.event + + private readonly _onDidAddContainer = this._register(new Emitter<{ readonly container: HTMLElement, readonly disposables: DisposableStore }>()) + readonly onDidAddContainer = this._onDidAddContainer.event + + private readonly _onDidRemoveContainer = this._register(new Emitter()) + readonly onDidRemoveContainer = this._onDidRemoveContainer.event + + private readonly _onDidLayoutMainContainer = this._register(new Emitter()) + readonly onDidLayoutMainContainer = this._onDidLayoutMainContainer.event + + private readonly _onDidLayoutActiveContainer = this._register(new Emitter()) + readonly onDidLayoutActiveContainer = this._onDidLayoutActiveContainer.event + private readonly _onDidChangeActiveContainer = this._register(new Emitter()) + readonly onDidChangeActiveContainer = this._onDidChangeActiveContainer.event + + get activeContainer (): HTMLElement { return this.getContainerFromDocument(dom.getActiveDocument()) } + get containers (): Iterable { + const containers: HTMLElement[] = [] + for (const { window } of dom.getWindows()) { + containers.push(this.getContainerFromDocument(window.document)) + } + + return containers + } + + private getContainerFromDocument (document: Document): HTMLElement { + if (document === this.mainContainer.ownerDocument) { + // main window + return this.mainContainer + } else { + // auxiliary window + return document.body.getElementsByClassName('monaco-workbench')[0] as HTMLElement + } + } + + mainContainerOffset = { top: 0, quickPickTop: 0 } + activeContainerOffset = { top: 0, quickPickTop: 0 } + onDidChangeFullscreen = Event.None onDidChangeZenMode = Event.None onDidChangeWindowMaximized = Event.None @@ -48,6 +114,64 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { this.paneCompositeService = accessor.get(IPaneCompositePartService) this.statusBarService = accessor.get(IStatusbarService) this.viewDescriptorService = accessor.get(IViewDescriptorService) + this.configurationService = accessor.get(IConfigurationService) + this.auxiliaryWindowService = accessor.get(IAuxiliaryWindowService) + this.hostService = accessor.get(IHostService) + + this._register(this.configurationService.onDidChangeConfiguration((e) => { + if (e.affectsConfiguration(LayoutSettings.ACTIVITY_BAR_LOCATION)) { + this.setPartHidden(this.isActivityBarHidden(), Parts.ACTIVITYBAR_PART) + } + + if (e.affectsConfiguration('workbench.statusBar.visible')) { + this.setPartHidden(this.configurationService.getValue('workbench.statusBar.visible'), Parts.STATUSBAR_PART) + } + })) + this.setPartHidden(this.isActivityBarHidden(), Parts.ACTIVITYBAR_PART) + this.setPartHidden(!this.configurationService.getValue('workbench.statusBar.visible'), Parts.STATUSBAR_PART) + + // Window active / focus changes + this._register(this.hostService.onDidChangeActiveWindow(() => this.onActiveWindowChanged())) + + // Auxiliary windows + this._register(this.auxiliaryWindowService.onDidOpenAuxiliaryWindow(({ window, disposables }) => { + this._onDidAddContainer.fire({ container: window.container, disposables: new DisposableStore() }) + + disposables.add(window.onDidLayout(dimension => this.handleContainerDidLayout(window.container, dimension))) + disposables.add(toDisposable(() => this._onDidRemoveContainer.fire(window.container))) + })) + } + + private handleContainerDidLayout (container: HTMLElement, dimension: dom.IDimension): void { + if (container === this.mainContainer) { + this._onDidLayoutMainContainer.fire(dimension) + } + + if (dom.isActiveDocument(container)) { + this._onDidLayoutActiveContainer.fire(dimension) + } + } + + private getActiveContainerId (): number { + const activeContainer = this.activeContainer + + return dom.getWindow(activeContainer).vscodeWindowId + } + + private onActiveWindowChanged (): void { + const activeContainerId = this.getActiveContainerId() + if (this.activeContainerId !== activeContainerId) { + this.activeContainerId = activeContainerId + this._onDidChangeActiveContainer.fire() + } + } + + private isActivityBarHidden (): boolean { + const oldValue = this.configurationService.getValue('workbench.activityBar.visible') + if (oldValue !== undefined) { + return !oldValue + } + return this.configurationService.getValue(LayoutSettings.ACTIVITY_BAR_LOCATION) !== ActivityBarPosition.SIDE } focusPart (part: Parts): void { @@ -80,7 +204,7 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { } getDimension (part: Parts): dom.Dimension | undefined { - return this.getPart(part).dimension + return this.getPart(part)?.dimension } toggleMaximizedPanel (): void { @@ -160,21 +284,21 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { return !(container == null) && isAncestorUsingFlowTo(activeElement, container) } - getContainer (part: Parts): HTMLElement | undefined { - if (this.parts.get(part) == null) { - return undefined - } - - return this.getPart(part).getContainer() - } + getContainer(window: Window): HTMLElement + getContainer(part: Parts): HTMLElement | undefined + getContainer (windowOrPart: Parts | Window): HTMLElement | undefined { + if (typeof windowOrPart === 'string') { + if (this.parts.get(windowOrPart) == null) { + return undefined + } - public getPart (key: Parts): Part { - const part = this.parts.get(key) - if (part == null) { - throw new Error(`Unknown part ${key}`) + return this.getPart(windowOrPart)?.getContainer() } + return document.body.getElementsByClassName('monaco-workbench')[0] as HTMLElement + } - return part + public getPart (key: Parts): Part | undefined { + return this.parts.get(key) } private hiddenParts = new Set() @@ -230,7 +354,7 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { } // The code that show or hide parts in vscode is not pulled by this library, so let's do it by hands here - this.getPart(part).setVisible(!hidden) + this.getPart(part)?.setVisible(!hidden) } isVisible (part: Parts): boolean { @@ -257,13 +381,23 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { private readonly _onDidLayout = new Emitter() readonly onDidLayout = this._onDidLayout.event - private _dimension!: dom.IDimension - get dimension (): dom.IDimension { return this._dimension } + private _mainContainerDimension!: dom.IDimension + get mainContainerDimension (): dom.IDimension { return this._mainContainerDimension } + get activeContainerDimension (): dom.IDimension { + const activeContainer = this.activeContainer + if (activeContainer === this.mainContainer) { + // main window + return this.mainContainerDimension + } else { + // auxiliary window + return dom.getClientArea(activeContainer) + } + } layout (): void { - this._dimension = dom.getClientArea(window.document.body) + this._mainContainerDimension = dom.getClientArea(window.document.body) - this._onDidLayout.fire(this._dimension) + this._onDidLayout.fire(this._mainContainerDimension) } get hasContainer (): boolean { @@ -271,8 +405,21 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { } focus (): void { - // Break cyclic dependency but getting it only when needed - StandaloneServices.get(ICodeEditorService).getFocusedCodeEditor()?.focus() + const activeContainer = this.activeContainer + if (activeContainer === this.mainContainer) { + // main window + + // Break cyclic dependency by getting it only when needed + const focusedCodeEditor = StandaloneServices.get(ICodeEditorService).getFocusedCodeEditor() + if (focusedCodeEditor instanceof StandaloneCodeEditor) { + focusedCodeEditor.focus() + } else { + this.focusPart(Parts.EDITOR_PART) + } + } else { + // auxiliary window + this.editorGroupService.getPart(activeContainer)?.activeGroup.focus() + } } } @@ -290,7 +437,7 @@ onRenderWorkbench((accessor) => { isChrome ? 'chromium' : isFirefox ? 'firefox' : isSafari ? 'safari' : undefined ]) - layoutService.container.classList.add(...workbenchClasses) + layoutService.mainContainer.classList.add(...workbenchClasses) document.body.classList.add(platformClass) document.body.classList.add('web') }) diff --git a/src/service-override/notifications.ts b/src/service-override/notifications.ts index ea7a96b4..c391ee70 100644 --- a/src/service-override/notifications.ts +++ b/src/service-override/notifications.ts @@ -14,7 +14,7 @@ import getLayoutServiceOverride from './layout' import { onRenderWorkbench } from '../lifecycle' onRenderWorkbench(async (accessor) => { - const container = accessor.get(ILayoutService).container + const container = accessor.get(ILayoutService).mainContainer const model = (accessor.get(INotificationService) as NotificationService).model const instantiationService = accessor.get(IInstantiationService) diff --git a/src/service-override/testing.ts b/src/service-override/testing.ts index e1d9e24c..d09396fa 100644 --- a/src/service-override/testing.ts +++ b/src/service-override/testing.ts @@ -11,6 +11,7 @@ import { ITestingPeekOpener } from 'vs/workbench/contrib/testing/common/testingP import { ITestingContinuousRunService, TestingContinuousRunService } from 'vs/workbench/contrib/testing/common/testingContinuousRunService' import { ITestExplorerFilterState, TestExplorerFilterState } from 'vs/workbench/contrib/testing/common/testExplorerFilterState' import { TestingPeekOpener } from 'vs/workbench/contrib/testing/browser/testingOutputPeek' +import { ITestCoverageService, TestCoverageService } from 'vs/workbench/contrib/testing/common/testCoverageService' import 'vs/workbench/contrib/testing/browser/testing.contribution' import 'vs/workbench/contrib/testing/browser/testingConfigurationUi' @@ -19,6 +20,7 @@ export default function getServiceOverride (): IEditorOverrideServices { [ITestService.toString()]: new SyncDescriptor(TestService, [], true), [ITestResultStorage.toString()]: new SyncDescriptor(TestResultStorage, [], true), [ITestProfileService.toString()]: new SyncDescriptor(TestProfileService, [], true), + [ITestCoverageService.toString()]: new SyncDescriptor(TestCoverageService, [], true), [ITestingContinuousRunService.toString()]: new SyncDescriptor(TestingContinuousRunService, [], true), [ITestResultService.toString()]: new SyncDescriptor(TestResultService, [], true), [ITestExplorerFilterState.toString()]: new SyncDescriptor(TestExplorerFilterState, [], true), diff --git a/src/service-override/tools/editor.ts b/src/service-override/tools/editor.ts index 9ecc7512..3463094d 100644 --- a/src/service-override/tools/editor.ts +++ b/src/service-override/tools/editor.ts @@ -10,9 +10,9 @@ import { ICodeEditor, IDiffEditor } from 'vs/editor/browser/editorBrowser' import { IEditorGroupView, DEFAULT_EDITOR_MAX_DIMENSIONS, DEFAULT_EDITOR_MIN_DIMENSIONS } from 'vs/workbench/browser/parts/editor/editor' import { IResolvedTextEditorModel, ITextModelService } from 'vs/editor/common/services/resolverService' import { IStandaloneCodeEditor, StandaloneCodeEditor, StandaloneEditor } from 'vs/editor/standalone/browser/standaloneCodeEditor' -import { Disposable, IReference } from 'vs/base/common/lifecycle' +import { Disposable, IDisposable, IReference } from 'vs/base/common/lifecycle' import { EditorService } from 'vs/workbench/services/editor/browser/editorService' -import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService' +import { IActiveEditorActions, IAuxiliaryEditorPart, IEditorDropTargetDelegate, IEditorGroup, IEditorGroupsService, IEditorPart } from 'vs/workbench/services/editor/common/editorGroupsService' import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' import { IConfigurationService } from 'vs/platform/configuration/common/configuration' import { IWorkspaceTrustRequestService } from 'vs/platform/workspace/common/workspaceTrust' @@ -28,6 +28,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey' import { URI } from 'vs/base/common/uri' import { IGroupModelChangeEvent } from 'vs/workbench/common/editor/editorGroupModel' import { EditorLayoutInfo } from 'vs/editor/common/config/editorOptions' +import { IRectangle } from 'vs/platform/window/common/window' import { unsupported } from '../../tools' export type OpenEditor = (modelRef: IReference, options: IEditorOptions | undefined, sideBySide?: boolean) => Promise @@ -138,6 +139,7 @@ export class MonacoEditorService extends EditorService { @ITextModelService textModelService: ITextModelService ) { super( + undefined, _editorGroupService, instantiationService, fileService, @@ -302,6 +304,22 @@ class StandaloneEditorGroup extends Disposable implements IEditorGroup, IEditorG } } + get groupsView () { + return unsupported() + } + + notifyLabelChanged (): void {} + + createEditorActions (): IActiveEditorActions { + return { + actions: { + primary: [], + secondary: [] + }, + onDidChange: Event.None + } + } + onDidFocus = this.editor.onDidFocusEditorWidget onDidOpenEditorFail = Event.None whenRestored = Promise.resolve() @@ -416,8 +434,16 @@ export class MonacoDelegateEditorGroupsService e this.activeGroupOverride = this.additionalGroups.find(group => group.editor === editor) this._onDidChangeActiveGroup.fire(this.activeGroup) } + const onEditorBlurred = () => { + if (this.activeGroupOverride === this.additionalGroups.find(group => group.editor === editor)) { + this.activeGroupOverride = undefined + this._onDidChangeActiveGroup.fire(this.activeGroup) + } + } editor.onDidFocusEditorText(onEditorFocused) editor.onDidFocusEditorWidget(onEditorFocused) + editor.onDidBlurEditorText(onEditorBlurred) + editor.onDidBlurEditorWidget(onEditorBlurred) if (editor.hasWidgetFocus()) { onEditorFocused() } @@ -447,6 +473,33 @@ export class MonacoDelegateEditorGroupsService e }) } + onDidCreateAuxiliaryEditorPart = this.delegate.onDidCreateAuxiliaryEditorPart + get parts (): IEditorGroupsService['parts'] { return this.delegate.parts } + createAuxiliaryEditorPart (options?: { bounds?: Partial | undefined } | undefined): Promise { + return this.delegate.createAuxiliaryEditorPart(options) + } + + get mainPart (): IEditorGroupsService['mainPart'] { return this.delegate.mainPart } + get activePart (): IEditorGroupsService['activePart'] { return this.delegate.activePart } + onDidChangeGroupMaximized = this.delegate.onDidChangeGroupMaximized + getPart(group: number | IEditorGroup): IEditorPart + getPart(container: unknown): IEditorPart | undefined + getPart (container: unknown): IEditorPart | undefined { + return this.delegate.getPart(container) + } + + toggleMaximizeGroup (group?: number | IEditorGroup | undefined): void { + return this.delegate.toggleMaximizeGroup(group) + } + + toggleExpandGroup (group?: number | IEditorGroup | undefined): void { + return this.delegate.toggleExpandGroup(group) + } + + createEditorDropTarget (container: unknown, delegate: IEditorDropTargetDelegate): IDisposable { + return this.delegate.createEditorDropTarget(container, delegate) + } + public get groups (): IEditorGroup[] { return [...this.additionalGroups, ...this.delegate.groups] } @@ -466,18 +519,11 @@ export class MonacoDelegateEditorGroupsService e onDidMoveGroup = this.delegate.onDidMoveGroup onDidActivateGroup = this.delegate.onDidActivateGroup - onDidLayout = this.delegate.onDidLayout - onDidScroll = this.delegate.onDidScroll onDidChangeGroupIndex = this.delegate.onDidChangeGroupIndex onDidChangeGroupLocked = this.delegate.onDidChangeGroupLocked - get contentDimension (): IEditorGroupsService['contentDimension'] { return this.delegate.contentDimension } get sideGroup (): IEditorGroupsService['sideGroup'] { return this.delegate.sideGroup } get count (): IEditorGroupsService['count'] { return this.delegate.count + this.additionalGroups.length } get orientation (): IEditorGroupsService['orientation'] { return this.delegate.orientation } - get isReady (): IEditorGroupsService['isReady'] { return this.delegate.isReady } - get whenReady (): IEditorGroupsService['whenReady'] { return this.delegate.whenReady } - get whenRestored (): IEditorGroupsService['whenRestored'] { return this.delegate.whenRestored } - get hasRestorableState (): IEditorGroupsService['hasRestorableState'] { return this.delegate.hasRestorableState } get partOptions (): IEditorGroupsService['partOptions'] { return this.delegate.partOptions } getLayout: IEditorGroupsService['getLayout'] = () => { @@ -512,14 +558,6 @@ export class MonacoDelegateEditorGroupsService e return this.delegate.applyLayout(...args) } - centerLayout: IEditorGroupsService['centerLayout'] = (...args) => { - return this.delegate.centerLayout(...args) - } - - isLayoutCentered: IEditorGroupsService['isLayoutCentered'] = (...args) => { - return this.delegate.isLayoutCentered(...args) - } - setGroupOrientation: IEditorGroupsService['setGroupOrientation'] = (...args) => { return this.delegate.setGroupOrientation(...args) } @@ -552,9 +590,5 @@ export class MonacoDelegateEditorGroupsService e return this.delegate.copyGroup(...args) } - enforcePartOptions: IEditorGroupsService['enforcePartOptions'] = (...args) => { - return this.delegate.enforcePartOptions(...args) - } - onDidChangeEditorPartOptions = this.delegate.onDidChangeEditorPartOptions } diff --git a/src/service-override/viewBanner.ts b/src/service-override/viewBanner.ts index 61e11541..d18621aa 100644 --- a/src/service-override/viewBanner.ts +++ b/src/service-override/viewBanner.ts @@ -2,6 +2,7 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standalone import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { BannerPart } from 'vs/workbench/browser/parts/banner/bannerPart' import { IBannerService } from 'vs/workbench/services/banner/browser/bannerService' +import { registerServiceInitializePostParticipant } from '../lifecycle' export default function getServiceOverride (): IEditorOverrideServices { return { @@ -9,6 +10,10 @@ export default function getServiceOverride (): IEditorOverrideServices { } } +registerServiceInitializePostParticipant(async accessor => { + accessor.get(IBannerService) +}) + export { BannerPart } diff --git a/src/service-override/viewStatusBar.ts b/src/service-override/viewStatusBar.ts index 3f3f0fe8..a4a308f2 100644 --- a/src/service-override/viewStatusBar.ts +++ b/src/service-override/viewStatusBar.ts @@ -1,7 +1,7 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' -import { StatusbarPart } from 'vs/workbench/browser/parts/statusbar/statusbarPart' +import { StatusbarService } from 'vs/workbench/browser/parts/statusbar/statusbarPart' import { IStatusbarService } from 'vs/workbench/services/statusbar/browser/statusbar' import { IWorkbenchContribution, IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions' import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle' @@ -19,11 +19,7 @@ Registry.as(WorkbenchExtensions.Workbench).regi export default function getServiceOverride (): IEditorOverrideServices { return { - [IStatusbarService.toString()]: new SyncDescriptor(StatusbarPart, [], false), + [IStatusbarService.toString()]: new SyncDescriptor(StatusbarService, [], false), [IExtensionStatusBarItemService.toString()]: new SyncDescriptor(ExtensionStatusBarItemService, [], false) } } - -export { - StatusbarPart -} diff --git a/src/service-override/viewTitleBar.ts b/src/service-override/viewTitleBar.ts index c7a65016..d4b5d475 100644 --- a/src/service-override/viewTitleBar.ts +++ b/src/service-override/viewTitleBar.ts @@ -1,14 +1,15 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' -import { ITitleService } from 'vs/workbench/services/title/common/titleService' -import { TitlebarPart } from 'vs/workbench/browser/parts/titlebar/titlebarPart' +import { BrowserTitleService } from 'vs/workbench/browser/parts/titlebar/titlebarPart' +import { ITitleService } from 'vs/workbench/services/title/browser/titleService' +import { registerServiceInitializePostParticipant } from '../lifecycle' export default function getServiceOverride (): IEditorOverrideServices { return { - [ITitleService.toString()]: new SyncDescriptor(TitlebarPart, [], false) + [ITitleService.toString()]: new SyncDescriptor(BrowserTitleService, [], false) } } -export { - TitlebarPart -} +registerServiceInitializePostParticipant(async accessor => { + accessor.get(ITitleService) +}) diff --git a/src/service-override/views.ts b/src/service-override/views.ts index 87ff176d..ef03ef3a 100644 --- a/src/service-override/views.ts +++ b/src/service-override/views.ts @@ -8,7 +8,6 @@ import { ViewDescriptorService } from 'vs/workbench/services/views/browser/viewD import { IActivityService } from 'vs/workbench/services/activity/common/activity' import { ActivityService } from 'vs/workbench/services/activity/browser/activityService' import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite' -import { PaneCompositeParts } from 'vs/workbench/browser/parts/paneCompositePart' import { ActivitybarPart } from 'vs/workbench/browser/parts/activitybar/activitybarPart' import { DisposableStore, IDisposable, IReference, MutableDisposable } from 'vs/base/common/lifecycle' import { IHoverService } from 'vs/workbench/services/hover/browser/hover' @@ -44,8 +43,6 @@ import 'vs/workbench/contrib/files/browser/files.contribution.js?include=registe import 'vs/workbench/contrib/files/browser/files.contribution.js?exclude=registerConfiguration' import { Codicon } from 'vs/base/common/codicons' import { GroupOrientation, GroupsOrder, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService' -import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService' -import { IEditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget' import { IEditorService } from 'vs/workbench/services/editor/common/editorService' import { EditorInputFactoryObject, IEditorResolverService, RegisteredEditorInfo, RegisteredEditorOptions, RegisteredEditorPriority } from 'vs/workbench/services/editor/common/editorResolverService' import { EditorResolverService } from 'vs/workbench/services/editor/browser/editorResolverService' @@ -60,7 +57,6 @@ import { IResolvedTextEditorModel } from 'vs/editor/common/services/resolverServ import { ITextEditorService, TextEditorService } from 'vs/workbench/services/textfile/common/textEditorService' import { CodeEditorService } from 'vs/workbench/services/editor/browser/codeEditorService' import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService' -import { IStatusbarService } from 'vs/workbench/services/statusbar/browser/statusbar' import { IHistoryService } from 'vs/workbench/services/history/common/history' import { HistoryService } from 'vs/workbench/services/history/browser/historyService' import { Action2, MenuId, registerAction2 } from 'vs/platform/actions/common/actions' @@ -86,8 +82,6 @@ import { IThemeService } from 'vs/platform/theme/common/themeService' import { ConfirmResult } from 'vs/platform/dialogs/common/dialogs' import { IFileService } from 'vs/platform/files/common/files' import { ILayoutService } from 'vs/platform/layout/browser/layoutService' -import { IBannerService } from 'vs/workbench/services/banner/browser/bannerService' -import { ITitleService } from 'vs/workbench/services/title/common/titleService' import { IProgressService } from 'vs/platform/progress/common/progress' import { ProgressService } from 'vs/workbench/services/progress/browser/progressService' import { CancellationToken } from 'vs/base/common/cancellation' @@ -110,6 +104,9 @@ import { IWorkspaceContextService, WorkbenchState, isTemporaryWorkspace } from ' import { IConfigurationService } from 'vs/platform/configuration/common/configuration' import { coalesce } from 'vs/base/common/arrays' import { IWorkingCopyBackupService } from 'vs/workbench/services/workingCopy/common/workingCopyBackup' +import { PaneCompositePartService } from 'vs/workbench/browser/parts/paneCompositePartService' +import { EditorParts } from 'vs/workbench/browser/parts/editor/editorParts' +import { BrowserAuxiliaryWindowService, IAuxiliaryWindowService } from 'vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService' import { MonacoDelegateEditorGroupsService, MonacoEditorService, OpenEditor } from './tools/editor' import getBulkEditServiceOverride from './bulkEdit' import getLayoutServiceOverride, { LayoutService } from './layout' @@ -157,7 +154,7 @@ function renderPart (partContainer: HTMLElement, part: Part): void { layout() } -function getPart (part: Parts): Part { +function getPart (part: Parts): Part | undefined { return (StandaloneServices.get(ILayoutService) as LayoutService).getPart(part) } @@ -174,19 +171,27 @@ function _attachPart (part: Part, container: HTMLElement) { } function attachPart (part: Parts, container: HTMLElement): IDisposable { - return _attachPart(getPart(part), container) + const _part = getPart(part) + if (_part == null) { + throw new Error('Part not found') + } + return _attachPart(_part, container) } function onPartVisibilityChange (part: Parts, listener: (visible: boolean) => void): IDisposable { - return getPart(part).onDidVisibilityChange(listener) + const _part = getPart(part) + if (_part == null) { + throw new Error('Part not found') + } + return _part.onDidVisibilityChange(listener) } function isPartVisibile (part: Parts): boolean { - return StandaloneServices.get(IWorkbenchLayoutService).isVisible(part) + return StandaloneServices.get(IWorkbenchLayoutService).isVisible(part, window) } function setPartVisibility (part: Exclude, visible: boolean): void { - StandaloneServices.get(IWorkbenchLayoutService).setPartHidden(!visible, part) + StandaloneServices.get(IWorkbenchLayoutService).setPartHidden(!visible, part, window) } function renderActivitybarPar (container: HTMLElement): IDisposable { @@ -433,7 +438,10 @@ function registerCustomView (options: CustomViewOption): IDisposable { const views: IViewDescriptor[] = [{ id: options.id, - name: options.name, + name: { + value: options.name, + original: options.name + }, ctorDescriptor: new SyncDescriptor(class extends ViewPane { private content?: HTMLElement @@ -510,16 +518,6 @@ function registerCustomView (options: CustomViewOption): IDisposable { return disposableCollection } -class EditorDropService implements IEditorDropService { - declare readonly _serviceBrand: undefined - - constructor (@IEditorGroupsService private readonly editorPart: EditorPart) { } - - createEditorDropTarget (container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable { - return this.editorPart.createEditorDropTarget(container, delegate) - } -} - function isElementVisible (el: HTMLElement) { if (!el.isConnected) { return false @@ -536,103 +534,27 @@ function isElementVisible (el: HTMLElement) { } function isEditorPartVisible (): boolean { - const container = (StandaloneServices.get(IEditorGroupsService) as EditorPart).getContainer() + const container = (StandaloneServices.get(IEditorGroupsService).mainPart as EditorPart).getContainer() return container != null && isElementVisible(container) } type PublicInterface = Pick -class MonacoEditorPart extends MonacoDelegateEditorGroupsService implements Omit, keyof IEditorGroupsService> { +class MonacoEditorParts extends MonacoDelegateEditorGroupsService implements Omit, keyof IEditorGroupsService> { constructor (@IInstantiationService instantiationService: IInstantiationService) { super( - instantiationService.createInstance(EditorPart), + instantiationService.createInstance(EditorParts), instantiationService ) } - onDidChangeSizeConstraints = this.delegate.onDidChangeSizeConstraints + registerPart (part: EditorPart): IDisposable { + return this.delegate.registerPart(part) + } restoreGroup: EditorPart['restoreGroup'] = (...args) => { return this.delegate.restoreGroup(...args) } - - isGroupMaximized: EditorPart['isGroupMaximized'] = (...args) => { - return this.delegate.isGroupMaximized(...args) - } - - createEditorDropTarget: EditorPart['createEditorDropTarget'] = (...args) => { - return this.delegate.createEditorDropTarget(...args) - } - - get minimumWidth (): number { - return this.delegate.minimumWidth - } - - get maximumWidth (): number { - return this.delegate.maximumWidth - } - - get minimumHeight (): number { - return this.delegate.minimumHeight - } - - get maximumHeight (): number { - return this.delegate.maximumHeight - } - - get snap (): boolean { - return this.delegate.snap - } - - get onDidChange () { - return this.delegate.onDidChange - } - - get priority () { - return this.delegate.priority - } - - updateStyles: EditorPart['updateStyles'] = (...args) => { - return this.delegate.updateStyles(...args) - } - - setBoundarySashes: EditorPart['setBoundarySashes'] = (...args) => { - return this.delegate.setBoundarySashes(...args) - } - - layout: EditorPart['layout'] = (...args) => { - return this.delegate.layout(...args) - } - - toJSON: EditorPart['toJSON'] = (...args) => { - return this.delegate.toJSON(...args) - } - - get dimension () { - return this.delegate.dimension - } - - onDidVisibilityChange = this.delegate.onDidVisibilityChange - - create: EditorPart['create'] = (...args) => { - return this.delegate.create(...args) - } - - getContainer: EditorPart['getContainer'] = (...args) => { - return this.delegate.getContainer(...args) - } - - setVisible: EditorPart['setVisible'] = (...args) => { - return this.delegate.setVisible(...args) - } - - getId: EditorPart['getId'] = (...args) => { - return this.delegate.getId(...args) - } - - get element () { - return this.delegate.element - } } let webviewIframeAlternateDomains: string | undefined @@ -662,10 +584,6 @@ onRenderWorkbench(async (accessor) => { const workingCopyBackupService = accessor.get(IWorkingCopyBackupService) // force service instantiation - const withStatusBar = accessor.get(IStatusbarService) instanceof Part - const withBannerPart = accessor.get(IBannerService) instanceof Part - const withTitlePart = accessor.get(ITitleService) instanceof Part - const layoutService = accessor.get(ILayoutService) as LayoutService function getInitialEditorsState (): IInitialEditorsState | undefined { @@ -764,7 +682,7 @@ onRenderWorkbench(async (accessor) => { return filesToOpenOrCreate } else if (contextService.getWorkbenchState() === WorkbenchState.EMPTY && configurationService.getValue('workbench.startupEditor') === 'newUntitledFile') { - if (editorGroupService.hasRestorableState) { + if (editorGroupService.mainPart.hasRestorableState) { return [] // do not open any empty untitled file if we restored groups/editors from previous session } @@ -852,31 +770,28 @@ onRenderWorkbench(async (accessor) => { document.body.append(invisibleContainer) // Create Parts - for (const { id, role, classes, options, enabled = true } of [ - { id: Parts.TITLEBAR_PART, role: 'none', classes: ['titlebar'], enabled: withTitlePart }, - { id: Parts.BANNER_PART, role: 'banner', classes: ['banner'], enabled: withBannerPart }, + for (const { id, role, classes, options } of [ + { id: Parts.TITLEBAR_PART, role: 'none', classes: ['titlebar'] }, + { id: Parts.BANNER_PART, role: 'banner', classes: ['banner'] }, { id: Parts.ACTIVITYBAR_PART, role: 'none', classes: ['activitybar', 'left'] }, { id: Parts.SIDEBAR_PART, role: 'none', classes: ['sidebar', 'left'] }, { id: Parts.EDITOR_PART, role: 'main', classes: ['editor'], options: { restorePreviousState: initialLayoutState.editor.restoreEditors } }, { id: Parts.PANEL_PART, role: 'none', classes: ['panel', 'basepanel', positionToString(Position.BOTTOM)] }, { id: Parts.AUXILIARYBAR_PART, role: 'none', classes: ['auxiliarybar', 'basepanel', 'right'] }, - { id: Parts.STATUSBAR_PART, role: 'status', classes: ['statusbar'], enabled: withStatusBar } + { id: Parts.STATUSBAR_PART, role: 'status', classes: ['statusbar'] } ]) { - if (!enabled) { - continue - } - - const partContainer = createPart(id, role, classes) - const part = layoutService.getPart(id) - part.create(partContainer, options) - renderPart(partContainer, part) - // we should layout the part otherwise the part dimension wont be set which leads to errors - // use use values to allow settings setting editor size in workbench construction options (VSCode checks that provided size are smaller than part size) - part.layout(9999, 9999, 0, 0) - - // We need the container to be attached for some views to work (like xterm) - invisibleContainer.append(partContainer) + if (part != null) { + const partContainer = createPart(id, role, classes) + part.create(partContainer, options) + renderPart(partContainer, part) + // we should layout the part otherwise the part dimension wont be set which leads to errors + // use use values to allow settings setting editor size in workbench construction options (VSCode checks that provided size are smaller than part size) + part.layout(9999, 9999, 0, 0) + + // We need the container to be attached for some views to work (like xterm) + invisibleContainer.append(partContainer) + } } const layoutReadyPromises: Promise[] = [] @@ -887,7 +802,7 @@ onRenderWorkbench(async (accessor) => { mark('code/willRestoreEditors') // first ensure the editor part is ready - await editorGroupService.whenReady + await editorGroupService.mainPart.whenReady mark('code/restoreEditors/editorGroupsReady') // apply editor layout if any @@ -942,7 +857,7 @@ onRenderWorkbench(async (accessor) => { layoutRestoredPromises.push( Promise.all([ openEditorsPromise?.finally(() => mark('code/restoreEditors/editorsOpened')), - editorGroupService.whenRestored.finally(() => mark('code/restoreEditors/editorGroupsRestored')) + editorGroupService.mainPart.whenRestored.finally(() => mark('code/restoreEditors/editorGroupsRestored')) ]).finally(() => { // the `code/didRestoreEditors` perf mark is specifically // for when visible editors have resolved, so we only mark @@ -1104,14 +1019,13 @@ function getServiceOverride (openEditorFallback?: OpenEditor, _webviewIframeAlte [IViewsService.toString()]: new SyncDescriptor(ViewsService, [], false), [IViewDescriptorService.toString()]: new SyncDescriptor(ViewDescriptorService, [], true), [IActivityService.toString()]: new SyncDescriptor(ActivityService, [], true), - [IPaneCompositePartService.toString()]: new SyncDescriptor(PaneCompositeParts, [], true), + [IPaneCompositePartService.toString()]: new SyncDescriptor(PaneCompositePartService, [], true), [IHoverService.toString()]: new SyncDescriptor(HoverService, [], true), [IExplorerService.toString()]: new SyncDescriptor(ExplorerService, [], true), [ICodeEditorService.toString()]: new SyncDescriptor(CodeEditorService, [], true), [ITextEditorService.toString()]: new SyncDescriptor(TextEditorService, [], false), - [IEditorGroupsService.toString()]: new SyncDescriptor(MonacoEditorPart, [], false), - [IEditorDropService.toString()]: new SyncDescriptor(EditorDropService, [], true), + [IEditorGroupsService.toString()]: new SyncDescriptor(MonacoEditorParts, [], false), [IEditorService.toString()]: new SyncDescriptor(MonacoEditorService, [openEditorFallback, isEditorPartVisible], false), [IEditorResolverService.toString()]: new SyncDescriptor(EditorResolverService, [], false), [IBreadcrumbsService.toString()]: new SyncDescriptor(BreadcrumbsService, [], true), @@ -1123,7 +1037,8 @@ function getServiceOverride (openEditorFallback?: OpenEditor, _webviewIframeAlte [IWebviewService.toString()]: new SyncDescriptor(WebviewService, [], true), [IWebviewViewService.toString()]: new SyncDescriptor(WebviewViewService, [], true), [IWebviewWorkbenchService.toString()]: new SyncDescriptor(WebviewEditorService, [], true), - [IProgressService.toString()]: new SyncDescriptor(ProgressService, [], true) + [IProgressService.toString()]: new SyncDescriptor(ProgressService, [], true), + [IAuxiliaryWindowService.toString()]: new SyncDescriptor(BrowserAuxiliaryWindowService, [], true) } } diff --git a/src/services.ts b/src/services.ts index 350af382..b6d8d3a6 100644 --- a/src/services.ts +++ b/src/services.ts @@ -241,7 +241,7 @@ export { IActivityService, IBadge } from 'vs/workbench/services/activity/common/ export { IHoverService } from 'vs/workbench/services/hover/browser/hover' export { IExplorerService } from 'vs/workbench/contrib/files/browser/files' export { IStatusbarService } from 'vs/workbench/services/statusbar/browser/statusbar' -export { ITitleService } from 'vs/workbench/services/title/common/titleService' +export { ITitleService } from 'vs/workbench/services/title/browser/titleService' export { IBannerService } from 'vs/workbench/services/banner/browser/bannerService' export { IWorkspaceTrustManagementService, IWorkspaceTrustUriInfo, IWorkspaceTrustRequestService, IWorkspaceTrustEnablementService } from 'vs/platform/workspace/common/workspaceTrust' diff --git a/src/workbench.ts b/src/workbench.ts index 1a84fddb..56cf7a3e 100644 --- a/src/workbench.ts +++ b/src/workbench.ts @@ -1,6 +1,5 @@ import { IAnyWorkspaceIdentifier, UNKNOWN_EMPTY_WINDOW_WORKSPACE } from 'vs/platform/workspace/common/workspace' -import { IWorkspace } from 'vs/workbench/services/host/browser/browserHostService' -import { IWorkbenchConstructionOptions } from 'vs/workbench/browser/web.api' +import { IWorkbenchConstructionOptions, IWorkspace } from 'vs/workbench/browser/web.api' import { isFolderToOpen, isWorkspaceToOpen } from 'vs/platform/window/common/window' import { getSingleFolderWorkspaceIdentifier, getWorkspaceIdentifier as getWorkspaceIdentifierFromUri } from 'vs/workbench/services/workspaces/browser/workspaces' import { URI } from 'vs/base/common/uri' diff --git a/tsconfig.types.json b/tsconfig.types.json index af58a417..673e1611 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -14,6 +14,7 @@ "exactOptionalPropertyTypes": false, "useUnknownInCatchVariables": false, "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports": true, "lib": [ "ES2016", "ES2017.Object", From 64aeaff409af5419db11a9c4c1bb4d6d86453120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 20:46:58 +0100 Subject: [PATCH 03/10] fix: adapt rollup config --- rollup/rollup.config.ts | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/rollup/rollup.config.ts b/rollup/rollup.config.ts index 2bbb9de1..2cb1c2ef 100644 --- a/rollup/rollup.config.ts +++ b/rollup/rollup.config.ts @@ -163,7 +163,7 @@ function isCallPure (file: string, functionName: string, node: recast.types.name } if (functionName === 'CommandsRegistry.registerCommand') { - if (file.includes('workspaceCommands') || file.includes('mainThreadCLICommands')) { + if (file.includes('mainThreadCLICommands')) { return true } @@ -195,30 +195,6 @@ function isCallPure (file: string, functionName: string, node: recast.types.name } } - if (functionName.endsWith('registerAction2')) { - const firstParam = args[0]! - - const className = firstParam.type === 'Identifier' ? firstParam.name : firstParam.type === 'ClassExpression' ? firstParam.id?.name as string : undefined - if (className != null) { - if (['AddConfigurationAction', 'AskInInteractiveAction'].includes(className)) { - return true - } - if (['ToggleTabsVisibilityAction'].includes(className)) { - return false - } - } - - if (file.includes('windowActions') || file.includes('workspaceActions')) { - return true - } - - const firstParamCode = recast.print(firstParam).code - if (firstParamCode.includes('DEBUG_CONFIGURE_COMMAND_ID') || - firstParamCode.includes('OpenEditorsView')) { - return true - } - } - if (functionName === 'MenuRegistry.appendMenuItems') { if (file.includes('layoutActions')) { return true @@ -228,8 +204,8 @@ function isCallPure (file: string, functionName: string, node: recast.types.name const firstParamCode = recast.print(args[0]!).code if ( firstParamCode.startsWith('MenuId.MenubarDebugMenu') || - firstParamCode.startsWith('MenuId.MenubarFileMenu') || - firstParamCode.startsWith('MenuId.TouchBarContext') + firstParamCode.startsWith('MenuId.TouchBarContext') || + firstParamCode.startsWith('MenuId.AccountsContext') ) { return true } @@ -274,14 +250,6 @@ function isCallPure (file: string, functionName: string, node: recast.types.name return false } - if (functionName === 'registerViews') { - const firstParamCode = recast.print(args[0]!).code - if (firstParamCode.includes('WelcomeView.ID')) { - return true - } - return false - } - if (functionName === 'registerSingleton') { if (file.includes('vs/workbench/api/')) { return false From 11cd928bca5848ada41df760ae6f17df9b3844be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 20:47:22 +0100 Subject: [PATCH 04/10] feat: add glob parameter to rollup plugins --- src/rollup-extension-directory-plugin.ts | 13 +++++++++++-- src/rollup-vsix-plugin.ts | 18 +++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/rollup-extension-directory-plugin.ts b/src/rollup-extension-directory-plugin.ts index 5ad5fab5..3b6b2a47 100644 --- a/src/rollup-extension-directory-plugin.ts +++ b/src/rollup-extension-directory-plugin.ts @@ -1,6 +1,7 @@ import { createFilter, FilterPattern, dataToEsm } from '@rollup/pluginutils' import { Plugin } from 'rollup' import type { IExtensionManifest } from 'vs/platform/extensions/common/extensions' +import glob from 'fast-glob' import * as path from 'path' import * as fsPromise from 'fs/promises' import { ExtensionResource, extractResourcesFromExtensionManifest, parseJson } from './extension-tools.js' @@ -9,7 +10,7 @@ interface Options { include?: FilterPattern exclude?: FilterPattern transformManifest?: (manifest: IExtensionManifest) => IExtensionManifest - getAdditionalResources?: (manifest: IExtensionManifest, directory: string) => Promise + getAdditionalResources?: (manifest: IExtensionManifest, directory: string, glob: (pattern: string) => Promise) => Promise } export default function plugin ({ @@ -62,9 +63,17 @@ export default function plugin ({ return (await fsPromise.readdir(path.join(id, dirPath))) } const extensionResources = await extractResourcesFromExtensionManifest(manifest, getFileContent, listFiles) + + async function _glob (pattern: string) { + return (await glob(pattern, { + cwd: id, + onlyFiles: true + })).map(path => ({ path })) + } + const resources = Array.from(new Set([ ...extensionResources, - ...await getAdditionalResources(manifest, id) + ...await getAdditionalResources(manifest, id, _glob) ])) function generateFileRegistrationInstruction (filePath: string, importPath: string, mimeType?: string) { diff --git a/src/rollup-vsix-plugin.ts b/src/rollup-vsix-plugin.ts index 45a21691..e5621fff 100644 --- a/src/rollup-vsix-plugin.ts +++ b/src/rollup-vsix-plugin.ts @@ -1,8 +1,9 @@ import { createFilter, FilterPattern } from '@rollup/pluginutils' -import { InputPluginOption, Plugin } from 'rollup' +import { Plugin } from 'rollup' import * as yauzl from 'yauzl' import type { IExtensionManifest } from 'vs/platform/extensions/common/extensions' import { IFs, createFsFromVolume, Volume } from 'memfs' +import glob, { FileSystemAdapter } from 'fast-glob' import { Readable } from 'stream' import * as path from 'path' import { ExtensionResource, extractResourcesFromExtensionManifest, parseJson } from './extension-tools.js' @@ -10,9 +11,8 @@ import { ExtensionResource, extractResourcesFromExtensionManifest, parseJson } f interface Options { include?: FilterPattern exclude?: FilterPattern - rollupPlugins?: InputPluginOption[] transformManifest?: (manifest: IExtensionManifest) => IExtensionManifest - getAdditionalResources?: (manifest: IExtensionManifest, getFileContent: (path: string) => Promise, listFiles: (path: string) => Promise) => Promise + getAdditionalResources?: (manifest: IExtensionManifest, readFile: (path: string) => Promise, readDir: (path: string) => Promise, glob: (pattern: string) => Promise) => Promise } function read (stream: Readable): Promise { @@ -92,9 +92,17 @@ export default function plugin ({ const extensionResources = (await extractResourcesFromExtensionManifest(manifest, getFileContent, listFiles)) .filter(resource => vsixFS.existsSync(path.join('/', resource.realPath ?? resource.path))) - const resources = [ + async function _glob (pattern: string) { + return (await glob(pattern, { + fs: vsixFS, + cwd: '/', + onlyFiles: true + })).map(path => ({ path })) + } + + const resources: ExtensionResource[] = [ ...extensionResources, - ...await getAdditionalResources(manifest, getFileContent, listFiles) + ...await getAdditionalResources(manifest, getFileContent, listFiles, _glob) ] const pathMapping = (await Promise.all(resources.map(async resource => { From 06d87b492b739c2e793a2562b100e1d8bdf9a3bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 20:50:00 +0100 Subject: [PATCH 05/10] lib(demo): update monaco --- demo/package-lock.json | 481 +++++++++++++++++------------------------ demo/package.json | 4 +- 2 files changed, 204 insertions(+), 281 deletions(-) diff --git a/demo/package-lock.json b/demo/package-lock.json index 4a7f438d..2d786243 100644 --- a/demo/package-lock.json +++ b/demo/package-lock.json @@ -154,7 +154,7 @@ "ansi-colors": "^4.1.3", "dockerode": "^4.0.0", "express": "^4.18.2", - "monaco-editor": "^0.44.0", + "monaco-editor": "^0.45.0", "vscode": "file:../dist/main", "ws": "^8.14.2" }, @@ -166,12 +166,11 @@ "@types/ws": "^8.5.10", "fast-glob": "^3.3.2", "ts-node": "^10.9.1", - "typescript": "~5.3.2", + "typescript": "~5.3.3", "vite": "~4.4.12" } }, "../dist/default-extension-bat": { - "name": "@codingame/monaco-vscode-bat-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -179,7 +178,6 @@ } }, "../dist/default-extension-clojure": { - "name": "@codingame/monaco-vscode-clojure-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -187,7 +185,6 @@ } }, "../dist/default-extension-coffeescript": { - "name": "@codingame/monaco-vscode-coffeescript-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -195,7 +192,6 @@ } }, "../dist/default-extension-configuration-editing": { - "name": "@codingame/monaco-vscode-configuration-editing-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -203,7 +199,6 @@ } }, "../dist/default-extension-cpp": { - "name": "@codingame/monaco-vscode-cpp-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -211,7 +206,6 @@ } }, "../dist/default-extension-csharp": { - "name": "@codingame/monaco-vscode-csharp-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -219,7 +213,6 @@ } }, "../dist/default-extension-css": { - "name": "@codingame/monaco-vscode-css-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -227,7 +220,6 @@ } }, "../dist/default-extension-css-language-features": { - "name": "@codingame/monaco-vscode-css-language-features-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -235,7 +227,6 @@ } }, "../dist/default-extension-dart": { - "name": "@codingame/monaco-vscode-dart-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -243,7 +234,6 @@ } }, "../dist/default-extension-debug-auto-launch": { - "name": "@codingame/monaco-vscode-debug-auto-launch-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -251,7 +241,6 @@ } }, "../dist/default-extension-debug-server-ready": { - "name": "@codingame/monaco-vscode-debug-server-ready-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -259,7 +248,6 @@ } }, "../dist/default-extension-diff": { - "name": "@codingame/monaco-vscode-diff-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -267,7 +255,6 @@ } }, "../dist/default-extension-docker": { - "name": "@codingame/monaco-vscode-docker-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -275,7 +262,6 @@ } }, "../dist/default-extension-emmet": { - "name": "@codingame/monaco-vscode-emmet-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -283,7 +269,6 @@ } }, "../dist/default-extension-extension-editing": { - "name": "@codingame/monaco-vscode-extension-editing-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -291,7 +276,6 @@ } }, "../dist/default-extension-fsharp": { - "name": "@codingame/monaco-vscode-fsharp-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -299,7 +283,6 @@ } }, "../dist/default-extension-git": { - "name": "@codingame/monaco-vscode-git-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -307,7 +290,6 @@ } }, "../dist/default-extension-git-base": { - "name": "@codingame/monaco-vscode-git-base-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -315,7 +297,6 @@ } }, "../dist/default-extension-github": { - "name": "@codingame/monaco-vscode-github-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -323,7 +304,6 @@ } }, "../dist/default-extension-github-authentication": { - "name": "@codingame/monaco-vscode-github-authentication-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -331,7 +311,6 @@ } }, "../dist/default-extension-go": { - "name": "@codingame/monaco-vscode-go-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -339,7 +318,6 @@ } }, "../dist/default-extension-groovy": { - "name": "@codingame/monaco-vscode-groovy-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -347,7 +325,6 @@ } }, "../dist/default-extension-grunt": { - "name": "@codingame/monaco-vscode-grunt-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -355,7 +332,6 @@ } }, "../dist/default-extension-gulp": { - "name": "@codingame/monaco-vscode-gulp-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -363,7 +339,6 @@ } }, "../dist/default-extension-handlebars": { - "name": "@codingame/monaco-vscode-handlebars-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -371,7 +346,6 @@ } }, "../dist/default-extension-hlsl": { - "name": "@codingame/monaco-vscode-hlsl-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -379,7 +353,6 @@ } }, "../dist/default-extension-html": { - "name": "@codingame/monaco-vscode-html-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -387,7 +360,6 @@ } }, "../dist/default-extension-html-language-features": { - "name": "@codingame/monaco-vscode-html-language-features-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -395,7 +367,6 @@ } }, "../dist/default-extension-ini": { - "name": "@codingame/monaco-vscode-ini-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -403,7 +374,6 @@ } }, "../dist/default-extension-ipynb": { - "name": "@codingame/monaco-vscode-ipynb-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -411,7 +381,6 @@ } }, "../dist/default-extension-jake": { - "name": "@codingame/monaco-vscode-jake-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -419,7 +388,6 @@ } }, "../dist/default-extension-java": { - "name": "@codingame/monaco-vscode-java-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -427,7 +395,6 @@ } }, "../dist/default-extension-javascript": { - "name": "@codingame/monaco-vscode-javascript-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -435,7 +402,6 @@ } }, "../dist/default-extension-json": { - "name": "@codingame/monaco-vscode-json-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -443,7 +409,6 @@ } }, "../dist/default-extension-json-language-features": { - "name": "@codingame/monaco-vscode-json-language-features-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -451,7 +416,6 @@ } }, "../dist/default-extension-julia": { - "name": "@codingame/monaco-vscode-julia-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -459,7 +423,6 @@ } }, "../dist/default-extension-latex": { - "name": "@codingame/monaco-vscode-latex-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -467,7 +430,6 @@ } }, "../dist/default-extension-less": { - "name": "@codingame/monaco-vscode-less-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -475,7 +437,6 @@ } }, "../dist/default-extension-log": { - "name": "@codingame/monaco-vscode-log-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -483,7 +444,6 @@ } }, "../dist/default-extension-lua": { - "name": "@codingame/monaco-vscode-lua-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -491,7 +451,6 @@ } }, "../dist/default-extension-make": { - "name": "@codingame/monaco-vscode-make-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -499,7 +458,6 @@ } }, "../dist/default-extension-markdown-basics": { - "name": "@codingame/monaco-vscode-markdown-basics-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -507,7 +465,6 @@ } }, "../dist/default-extension-markdown-language-features": { - "name": "@codingame/monaco-vscode-markdown-language-features-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -515,7 +472,6 @@ } }, "../dist/default-extension-markdown-math": { - "name": "@codingame/monaco-vscode-markdown-math-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -523,7 +479,6 @@ } }, "../dist/default-extension-media-preview": { - "name": "@codingame/monaco-vscode-media-preview-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -531,7 +486,6 @@ } }, "../dist/default-extension-merge-conflict": { - "name": "@codingame/monaco-vscode-merge-conflict-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -539,7 +493,6 @@ } }, "../dist/default-extension-microsoft-authentication": { - "name": "@codingame/monaco-vscode-microsoft-authentication-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -547,7 +500,6 @@ } }, "../dist/default-extension-notebook-renderers": { - "name": "@codingame/monaco-vscode-notebook-renderers-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -555,7 +507,6 @@ } }, "../dist/default-extension-npm": { - "name": "@codingame/monaco-vscode-npm-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -563,7 +514,6 @@ } }, "../dist/default-extension-objective-c": { - "name": "@codingame/monaco-vscode-objective-c-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -571,7 +521,6 @@ } }, "../dist/default-extension-perl": { - "name": "@codingame/monaco-vscode-perl-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -579,7 +528,6 @@ } }, "../dist/default-extension-php": { - "name": "@codingame/monaco-vscode-php-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -587,7 +535,6 @@ } }, "../dist/default-extension-php-language-features": { - "name": "@codingame/monaco-vscode-php-language-features-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -595,7 +542,6 @@ } }, "../dist/default-extension-powershell": { - "name": "@codingame/monaco-vscode-powershell-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -603,7 +549,6 @@ } }, "../dist/default-extension-pug": { - "name": "@codingame/monaco-vscode-pug-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -611,7 +556,6 @@ } }, "../dist/default-extension-python": { - "name": "@codingame/monaco-vscode-python-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -619,7 +563,6 @@ } }, "../dist/default-extension-r": { - "name": "@codingame/monaco-vscode-r-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -627,7 +570,6 @@ } }, "../dist/default-extension-razor": { - "name": "@codingame/monaco-vscode-razor-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -635,7 +577,6 @@ } }, "../dist/default-extension-references-view": { - "name": "@codingame/monaco-vscode-references-view-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -643,7 +584,6 @@ } }, "../dist/default-extension-restructuredtext": { - "name": "@codingame/monaco-vscode-restructuredtext-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -651,7 +591,6 @@ } }, "../dist/default-extension-ruby": { - "name": "@codingame/monaco-vscode-ruby-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -659,7 +598,6 @@ } }, "../dist/default-extension-rust": { - "name": "@codingame/monaco-vscode-rust-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -667,7 +605,6 @@ } }, "../dist/default-extension-scss": { - "name": "@codingame/monaco-vscode-scss-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -675,7 +612,6 @@ } }, "../dist/default-extension-search-result": { - "name": "@codingame/monaco-vscode-search-result-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -683,7 +619,6 @@ } }, "../dist/default-extension-shaderlab": { - "name": "@codingame/monaco-vscode-shaderlab-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -691,7 +626,6 @@ } }, "../dist/default-extension-shellscript": { - "name": "@codingame/monaco-vscode-shellscript-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -699,7 +633,6 @@ } }, "../dist/default-extension-simple-browser": { - "name": "@codingame/monaco-vscode-simple-browser-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -707,7 +640,6 @@ } }, "../dist/default-extension-sql": { - "name": "@codingame/monaco-vscode-sql-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -715,7 +647,6 @@ } }, "../dist/default-extension-swift": { - "name": "@codingame/monaco-vscode-swift-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -723,7 +654,6 @@ } }, "../dist/default-extension-theme-abyss": { - "name": "@codingame/monaco-vscode-theme-abyss-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -731,7 +661,6 @@ } }, "../dist/default-extension-theme-defaults": { - "name": "@codingame/monaco-vscode-theme-defaults-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -739,7 +668,6 @@ } }, "../dist/default-extension-theme-kimbie-dark": { - "name": "@codingame/monaco-vscode-theme-kimbie-dark-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -747,7 +675,6 @@ } }, "../dist/default-extension-theme-monokai": { - "name": "@codingame/monaco-vscode-theme-monokai-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -755,7 +682,6 @@ } }, "../dist/default-extension-theme-monokai-dimmed": { - "name": "@codingame/monaco-vscode-theme-monokai-dimmed-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -763,7 +689,6 @@ } }, "../dist/default-extension-theme-quietlight": { - "name": "@codingame/monaco-vscode-theme-quietlight-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -771,7 +696,6 @@ } }, "../dist/default-extension-theme-red": { - "name": "@codingame/monaco-vscode-theme-red-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -779,7 +703,6 @@ } }, "../dist/default-extension-theme-seti": { - "name": "@codingame/monaco-vscode-theme-seti-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -787,7 +710,6 @@ } }, "../dist/default-extension-theme-solarized-dark": { - "name": "@codingame/monaco-vscode-theme-solarized-dark-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -795,7 +717,6 @@ } }, "../dist/default-extension-theme-solarized-light": { - "name": "@codingame/monaco-vscode-theme-solarized-light-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -803,7 +724,6 @@ } }, "../dist/default-extension-theme-tomorrow-night-blue": { - "name": "@codingame/monaco-vscode-theme-tomorrow-night-blue-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -811,7 +731,6 @@ } }, "../dist/default-extension-typescript-basics": { - "name": "@codingame/monaco-vscode-typescript-basics-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -819,7 +738,6 @@ } }, "../dist/default-extension-typescript-language-features": { - "name": "@codingame/monaco-vscode-typescript-language-features-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -827,7 +745,6 @@ } }, "../dist/default-extension-vb": { - "name": "@codingame/monaco-vscode-vb-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -835,7 +752,6 @@ } }, "../dist/default-extension-vscode-api-tests": { - "name": "@codingame/monaco-vscode-vscode-api-tests-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -843,7 +759,6 @@ } }, "../dist/default-extension-vscode-colorize-tests": { - "name": "@codingame/monaco-vscode-vscode-colorize-tests-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -851,7 +766,6 @@ } }, "../dist/default-extension-vscode-test-resolver": { - "name": "@codingame/monaco-vscode-vscode-test-resolver-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -859,7 +773,6 @@ } }, "../dist/default-extension-xml": { - "name": "@codingame/monaco-vscode-xml-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -867,7 +780,6 @@ } }, "../dist/default-extension-yaml": { - "name": "@codingame/monaco-vscode-yaml-default-extension", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -884,7 +796,7 @@ "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-quickaccess-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode-semver": "npm:semver@=5.5.0" }, "bin": { @@ -892,7 +804,6 @@ } }, "../dist/rollup-vsix-plugin": { - "name": "@codingame/monaco-vscode-rollup-vsix-plugin", "version": "0.0.0-semantic-release", "dev": true, "license": "MIT", @@ -904,7 +815,6 @@ } }, "../dist/server": { - "name": "@codingame/monaco-vscode-server", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -915,13 +825,14 @@ "@vscode/ripgrep": "^1.15.5", "@vscode/spdlog": "^0.13.11", "@vscode/windows-process-tree": "^0.5.0", + "@xterm/addon-serialize": "0.12.0-beta.9", + "@xterm/addon-unicode11": "0.7.0-beta.9", + "@xterm/headless": "5.4.0-beta.9", "cookie": "^0.5.0", "kerberos": "^2.0.1", "node-pty": "1.1.0-beta1", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", "vscode-regexpp": "^3.1.0", - "xterm-addon-serialize": "0.12.0-beta.26", - "xterm-addon-unicode11": "0.7.0-beta.26", "yauzl": "^2.10.0", "yazl": "^2.4.3" }, @@ -930,43 +841,38 @@ } }, "../dist/service-override-accessibility": { - "name": "@codingame/monaco-vscode-accessibility-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-audio-cue": { - "name": "@codingame/monaco-vscode-audio-cue-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-authentication": { - "name": "@codingame/monaco-vscode-authentication-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-bulk-edit": { - "name": "@codingame/monaco-vscode-bulk-edit-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-configuration": { - "name": "@codingame/monaco-vscode-configuration-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -975,321 +881,289 @@ "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-quickaccess-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-debug": { - "name": "@codingame/monaco-vscode-debug-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-dialogs": { - "name": "@codingame/monaco-vscode-dialogs-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-editor": { - "name": "@codingame/monaco-vscode-editor-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-environment": { - "name": "@codingame/monaco-vscode-environment-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-extension-gallery": { - "name": "@codingame/monaco-vscode-extension-gallery-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", "vscode-semver": "npm:semver@=5.5.0" } }, "../dist/service-override-extensions": { - "name": "@codingame/monaco-vscode-extensions-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", "vscode-semver": "npm:semver@=5.5.0" } }, "../dist/service-override-files": { - "name": "@codingame/monaco-vscode-files-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-keybindings": { - "name": "@codingame/monaco-vscode-keybindings-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-language-detection-worker": { - "name": "@codingame/monaco-vscode-language-detection-worker-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@vscode/vscode-languagedetection": "1.0.21", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-languages": { - "name": "@codingame/monaco-vscode-languages-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-layout": { - "name": "@codingame/monaco-vscode-layout-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-lifecycle": { - "name": "@codingame/monaco-vscode-lifecycle-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-log": { - "name": "@codingame/monaco-vscode-log-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-environment-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-markers": { - "name": "@codingame/monaco-vscode-markers-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-model": { - "name": "@codingame/monaco-vscode-model-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-notifications": { - "name": "@codingame/monaco-vscode-notifications-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-output": { - "name": "@codingame/monaco-vscode-output-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-log-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-preferences": { - "name": "@codingame/monaco-vscode-preferences-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-quickaccess": { - "name": "@codingame/monaco-vscode-quickaccess-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-remote-agent": { - "name": "@codingame/monaco-vscode-remote-agent-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-environment-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-scm": { - "name": "@codingame/monaco-vscode-scm-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-search": { - "name": "@codingame/monaco-vscode-search-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-snippets": { - "name": "@codingame/monaco-vscode-snippets-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-storage": { - "name": "@codingame/monaco-vscode-storage-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-terminal": { - "name": "@codingame/monaco-vscode-terminal-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", - "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", - "xterm": "5.4.0-beta.27", - "xterm-addon-canvas": "0.6.0-beta.27", - "xterm-addon-image": "0.6.0-beta.21", - "xterm-addon-search": "0.14.0-beta.27", - "xterm-addon-serialize": "0.12.0-beta.26", - "xterm-addon-unicode11": "0.7.0-beta.26", - "xterm-addon-webgl": "0.17.0-beta.26" + "@xterm/addon-canvas": "0.6.0-beta.9", + "@xterm/addon-image": "0.7.0-beta.7", + "@xterm/addon-search": "0.14.0-beta.9", + "@xterm/addon-serialize": "0.12.0-beta.9", + "@xterm/addon-unicode11": "0.7.0-beta.9", + "@xterm/addon-webgl": "0.17.0-beta.9", + "@xterm/xterm": "5.4.0-beta.9", + "monaco-editor": "0.45.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-testing": { - "name": "@codingame/monaco-vscode-testing-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", - "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", - "xterm-addon-canvas": "0.6.0-beta.27", - "xterm-addon-image": "0.6.0-beta.21", - "xterm-addon-search": "0.14.0-beta.27", - "xterm-addon-serialize": "0.12.0-beta.26", - "xterm-addon-unicode11": "0.7.0-beta.26", - "xterm-addon-webgl": "0.17.0-beta.26" + "@xterm/addon-canvas": "0.6.0-beta.9", + "@xterm/addon-image": "0.7.0-beta.7", + "@xterm/addon-search": "0.14.0-beta.9", + "@xterm/addon-serialize": "0.12.0-beta.9", + "@xterm/addon-unicode11": "0.7.0-beta.9", + "@xterm/addon-webgl": "0.17.0-beta.9", + "monaco-editor": "0.45.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-textmate": { - "name": "@codingame/monaco-vscode-textmate-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", "vscode-oniguruma": "1.7.0", "vscode-textmate": "9.0.0" } }, "../dist/service-override-theme": { - "name": "@codingame/monaco-vscode-theme-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-view-banner": { - "name": "@codingame/monaco-vscode-view-banner-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-view-status-bar": { - "name": "@codingame/monaco-vscode-view-status-bar-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-view-title-bar": { - "name": "@codingame/monaco-vscode-view-title-bar-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-views": { - "name": "@codingame/monaco-vscode-views-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1300,31 +1174,28 @@ "@codingame/monaco-vscode-keybindings-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-quickaccess-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-working-copy": { - "name": "@codingame/monaco-vscode-working-copy-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/service-override-workspace-trust": { - "name": "@codingame/monaco-vscode-workspace-trust-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { - "monaco-editor": "0.44.0", + "monaco-editor": "0.45.0", "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, "../dist/vscode-language-pack-cs": { - "name": "@codingame/monaco-vscode-language-pack-cs", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1332,7 +1203,6 @@ } }, "../dist/vscode-language-pack-de": { - "name": "@codingame/monaco-vscode-language-pack-de", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1340,7 +1210,6 @@ } }, "../dist/vscode-language-pack-es": { - "name": "@codingame/monaco-vscode-language-pack-es", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1348,7 +1217,6 @@ } }, "../dist/vscode-language-pack-fr": { - "name": "@codingame/monaco-vscode-language-pack-fr", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1356,7 +1224,6 @@ } }, "../dist/vscode-language-pack-it": { - "name": "@codingame/monaco-vscode-language-pack-it", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1364,7 +1231,6 @@ } }, "../dist/vscode-language-pack-ja": { - "name": "@codingame/monaco-vscode-language-pack-ja", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1372,7 +1238,6 @@ } }, "../dist/vscode-language-pack-ko": { - "name": "@codingame/monaco-vscode-language-pack-ko", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1380,7 +1245,6 @@ } }, "../dist/vscode-language-pack-pl": { - "name": "@codingame/monaco-vscode-language-pack-pl", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1388,7 +1252,6 @@ } }, "../dist/vscode-language-pack-pt-BR": { - "name": "@codingame/monaco-vscode-language-pack-pt-br", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1396,7 +1259,6 @@ } }, "../dist/vscode-language-pack-qps-ploc": { - "name": "@codingame/monaco-vscode-language-pack-qps-ploc", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1404,7 +1266,6 @@ } }, "../dist/vscode-language-pack-ru": { - "name": "@codingame/monaco-vscode-language-pack-ru", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1412,7 +1273,6 @@ } }, "../dist/vscode-language-pack-tr": { - "name": "@codingame/monaco-vscode-language-pack-tr", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1420,7 +1280,6 @@ } }, "../dist/vscode-language-pack-zh-hans": { - "name": "@codingame/monaco-vscode-language-pack-zh-hans", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1428,7 +1287,6 @@ } }, "../dist/vscode-language-pack-zh-hant": { - "name": "@codingame/monaco-vscode-language-pack-zh-hant", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -2461,9 +2319,9 @@ "dev": true }, "node_modules/@types/body-parser": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", - "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { "@types/connect": "*", @@ -2471,18 +2329,18 @@ } }, "node_modules/@types/connect": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", - "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/docker-modem": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.4.tgz", - "integrity": "sha512-INK4TOrJ9hbgaSqHA1HaEOCcYVftJRH0v03gCg6R57JGKgltkDvdFYBtoN4lHrJ3h8aF1upvEPN2eWVLIvKStQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==", "dev": true, "dependencies": { "@types/node": "*", @@ -2512,9 +2370,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.37", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", - "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "dev": true, "dependencies": { "@types/node": "*", @@ -2524,39 +2382,42 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", - "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, "node_modules/@types/node": { - "version": "20.7.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.0.tgz", - "integrity": "sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==", - "dev": true + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", - "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -2564,9 +2425,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", - "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -2575,19 +2436,22 @@ } }, "node_modules/@types/ssh2": { - "version": "1.11.14", - "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.14.tgz", - "integrity": "sha512-O/U38mvV4jVVrdtZz8KpmitkmeD/PUDeDNNueQhm34166dmaqb1iZ3sfarSxBArM2/iX4PZVJY3EOta0Zks9hw==", + "version": "1.11.18", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.18.tgz", + "integrity": "sha512-7eH4ppQMFlzvn//zhwD54MWaITR1aSc1oFBye9vb76GZ2Y9PSFYdwVIwOlxRXWs5+1hifntXyt+8a6SUbOD7Hg==", "dev": true, "dependencies": { "@types/node": "^18.11.18" } }, "node_modules/@types/ssh2/node_modules/@types/node": { - "version": "18.18.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.0.tgz", - "integrity": "sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw==", - "dev": true + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/wicg-file-system-access": { "version": "2023.10.4", @@ -2617,9 +2481,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2629,9 +2493,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2790,12 +2654,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2874,6 +2739,19 @@ } } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3155,19 +3033,22 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3185,15 +3066,26 @@ "node": ">= 6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "function-bind": "^1.1.1" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { @@ -3218,6 +3110,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -3391,9 +3294,9 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/monaco-editor": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", - "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==" + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", + "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==" }, "node_modules/ms": { "version": "2.1.2", @@ -3433,9 +3336,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3736,6 +3639,20 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -3908,9 +3825,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3920,6 +3837,12 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/demo/package.json b/demo/package.json index 75e11ffe..7708e582 100644 --- a/demo/package.json +++ b/demo/package.json @@ -22,7 +22,7 @@ "@types/ws": "^8.5.10", "fast-glob": "^3.3.2", "ts-node": "^10.9.1", - "typescript": "~5.3.2", + "typescript": "~5.3.3", "vite": "~4.4.12" }, "dependencies": { @@ -171,7 +171,7 @@ "ansi-colors": "^4.1.3", "dockerode": "^4.0.0", "express": "^4.18.2", - "monaco-editor": "^0.44.0", + "monaco-editor": "^0.45.0", "vscode": "file:../dist/main", "ws": "^8.14.2" }, From 6c1da40a97a6353468c6623931d0646900c28f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 20:50:25 +0100 Subject: [PATCH 06/10] fix(demo): add api proposal on defaut extension --- demo/src/setup.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/demo/src/setup.ts b/demo/src/setup.ts index f88d29d7..bb365688 100644 --- a/demo/src/setup.ts +++ b/demo/src/setup.ts @@ -32,7 +32,7 @@ import getMarkersServiceOverride from '@codingame/monaco-vscode-markers-service- import getAccessibilityServiceOverride from '@codingame/monaco-vscode-accessibility-service-override' import getLanguageDetectionWorkerServiceOverride from '@codingame/monaco-vscode-language-detection-worker-service-override' import getStorageServiceOverride, { BrowserStorageService } from '@codingame/monaco-vscode-storage-service-override' -import getExtensionServiceOverride from '@codingame/monaco-vscode-extensions-service-override' +import getExtensionServiceOverride, { ExtensionHostKind } from '@codingame/monaco-vscode-extensions-service-override' import getRemoteAgentServiceOverride from '@codingame/monaco-vscode-remote-agent-service-override' import getEnvironmentServiceOverride from '@codingame/monaco-vscode-environment-service-override' import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override' @@ -42,6 +42,7 @@ import { createIndexedDBProviders, initFile } from '@codingame/monaco-vscode-fil import getWorkingCopyServiceOverride from '@codingame/monaco-vscode-working-copy-service-override' import getTestingServiceOverride from '@codingame/monaco-vscode-testing-service-override' import * as monaco from 'monaco-editor' +import { registerExtension } from 'vscode/extensions' import { TerminalBackend } from './features/terminal' import { openNewCodeEditor } from './features/editor' import defaultConfiguration from './user/configuration.json?raw' @@ -211,3 +212,13 @@ for (const { part, element } of [ el.style.display = visible ? 'block' : 'none' }) } + +await registerExtension({ + name: 'demo', + publisher: 'codingame', + version: '1.0.0', + engines: { + vscode: '*' + }, + enabledApiProposals: ['testCoverage'] +}, ExtensionHostKind.LocalProcess).setAsDefaultApi() From 032093c071ad331d64844e0f48246d2a93dadcfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 21:12:12 +0100 Subject: [PATCH 07/10] fix: wrong branch --- release.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.ts b/release.ts index 6ab4a5da..f7545fed 100644 --- a/release.ts +++ b/release.ts @@ -119,7 +119,7 @@ async function releaseGithub (repoInfos: RepositoryInfos, version: string, relea const gitTag = `v${version}` await $`git tag -a ${gitTag} HEAD -m "chore(release): ${version} [skip ci]"` - await $`git push --follow-tags origin HEAD:refs/heads/master` + await $`git push --follow-tags origin HEAD:refs/heads/main` const octokit = new Octokit({ auth: `token ${githubToken}` From 3e286748ee31c26377b0ed5128c4a0cd0a69ceb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Thu, 7 Dec 2023 21:19:04 +0100 Subject: [PATCH 08/10] fix(demo): fix built version for some reasons... --- demo/src/features/testing.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/src/features/testing.ts b/demo/src/features/testing.ts index edae8f71..d12c61b4 100644 --- a/demo/src/features/testing.ts +++ b/demo/src/features/testing.ts @@ -1,3 +1,3 @@ import '../setup' // import setup file to wait for services initialization -await import('./testProviderExample/extension') +void import('./testProviderExample/extension') From c1909425dbfd36ce72407cd4959e72d5faa3d284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Mon, 11 Dec 2023 21:11:24 +0100 Subject: [PATCH 09/10] fix: add empty implementation to prevent crashes --- src/missing-services.ts | 73 ++++++++++++++++++++++++++-------- src/service-override/editor.ts | 66 ++++++++++++++++++++++++------ 2 files changed, 111 insertions(+), 28 deletions(-) diff --git a/src/missing-services.ts b/src/missing-services.ts index e32e52f6..cd82a8e3 100644 --- a/src/missing-services.ts +++ b/src/missing-services.ts @@ -5,7 +5,7 @@ import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/b import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity' import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles' import { IFileService } from 'vs/platform/files/common/files' -import { GroupOrientation, IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService' +import { GroupOrientation, IEditorGroup, IEditorGroupsService, IEditorPart } from 'vs/workbench/services/editor/common/editorGroupsService' import { IWorkingCopyFileService, WorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService' import { IPathService } from 'vs/workbench/services/path/common/pathService' import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions' @@ -161,7 +161,7 @@ import { IChatVariablesService } from 'vs/workbench/contrib/chat/common/chatVari import { IAiRelatedInformationService } from 'vs/workbench/services/aiRelatedInformation/common/aiRelatedInformation' import { IAiEmbeddingVectorService } from 'vs/workbench/services/aiEmbeddingVector/common/aiEmbeddingVectorService' import { ResourceSet } from 'vs/base/common/map' -import { IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor' +import { DEFAULT_EDITOR_PART_OPTIONS, IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor' import { IMessage, ISignService } from 'vs/platform/sign/common/sign' import { BrowserHostService } from 'vs/workbench/services/host/browser/browserHostService' import { IBannerService } from 'vs/workbench/services/banner/browser/bannerService' @@ -376,26 +376,67 @@ class EmptyEditorGroup implements IEditorGroup, IEditorGroupView { } const fakeActiveGroup = new EmptyEditorGroup() -class EmptyEditorGroupsService implements IEditorGroupsService { - onDidCreateAuxiliaryEditorPart = Event.None - parts = [] - get activePart () { - return this - } +class EmptyEditorPart implements IEditorPart { + onDidLayout = Event.None + onDidScroll = Event.None + get contentDimension (): never { return unsupported() } + isReady = true + whenReady = Promise.resolve() + whenRestored = Promise.resolve() + hasRestorableState = false + centerLayout = unsupported + isLayoutCentered = unsupported + enforcePartOptions = unsupported + onDidChangeActiveGroup = Event.None + onDidAddGroup = Event.None + onDidRemoveGroup = Event.None + onDidMoveGroup = Event.None + onDidActivateGroup = Event.None + onDidChangeGroupIndex = Event.None + onDidChangeGroupLocked = Event.None + onDidChangeGroupMaximized = Event.None + activeGroup = fakeActiveGroup + get sideGroup (): never { return unsupported() } + groups = [fakeActiveGroup] + count = 0 + orientation = GroupOrientation.HORIZONTAL + getGroups = () => [] + getGroup = () => undefined + activateGroup = unsupported + getSize = unsupported + setSize = unsupported + arrangeGroups = unsupported + toggleMaximizeGroup = unsupported + toggleExpandGroup = unsupported + applyLayout = unsupported + getLayout = unsupported + setGroupOrientation = unsupported + findGroup = () => undefined + addGroup = unsupported + removeGroup = unsupported + moveGroup = unsupported + mergeGroup = unsupported + mergeAllGroups = unsupported + copyGroup = unsupported + partOptions = DEFAULT_EDITOR_PART_OPTIONS - get mainPart () { - return this - } + onDidChangeEditorPartOptions = Event.None + createEditorDropTarget = unsupported +} + +class EmptyEditorGroupsService implements IEditorGroupsService { + onDidCreateAuxiliaryEditorPart = Event.None + mainPart = new EmptyEditorPart() + activePart = this.mainPart + parts = [this.mainPart] getPart = unsupported createAuxiliaryEditorPart = unsupported onDidChangeGroupMaximized = Event.None toggleMaximizeGroup = unsupported toggleExpandGroup = unsupported - get partOptions () { - return unsupported() - } + partOptions = DEFAULT_EDITOR_PART_OPTIONS createEditorDropTarget = unsupported readonly _serviceBrand = undefined @@ -1888,8 +1929,8 @@ registerSingleton(ICustomEditorService, class CustomEditorService implements ICu getAllCustomEditors = unsupported getContributedCustomEditors = unsupported getUserConfiguredCustomEditors = unsupported - registerCustomEditorCapabilities = unsupported - getCustomEditorCapabilities = unsupported + registerCustomEditorCapabilities = () => Disposable.None + getCustomEditorCapabilities = () => undefined }, InstantiationType.Delayed) registerSingleton(IWebviewService, class WebviewService implements IWebviewService { diff --git a/src/service-override/editor.ts b/src/service-override/editor.ts index 027774be..037d13fe 100644 --- a/src/service-override/editor.ts +++ b/src/service-override/editor.ts @@ -11,10 +11,10 @@ import { IReference } from 'vs/base/common/lifecycle' import { ITextEditorService, TextEditorService } from 'vs/workbench/services/textfile/common/textEditorService' import { Registry } from 'vs/platform/registry/common/platform' import { FILE_EDITOR_INPUT_ID } from 'vs/workbench/contrib/files/common/files' -import { GroupOrientation, IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService' +import { GroupOrientation, IEditorGroup, IEditorGroupsService, IEditorPart } from 'vs/workbench/services/editor/common/editorGroupsService' import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey' -import { IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor' +import { DEFAULT_EDITOR_PART_OPTIONS, IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor' import { MonacoDelegateEditorGroupsService, MonacoEditorService, OpenEditor } from './tools/editor' import { unsupported } from '../tools' import 'vs/workbench/browser/parts/editor/editor.contribution' @@ -103,25 +103,67 @@ class EmptyEditorGroup implements IEditorGroup, IEditorGroupView { const fakeActiveGroup = new EmptyEditorGroup() +class EmptyEditorPart implements IEditorPart { + onDidLayout = Event.None + onDidScroll = Event.None + get contentDimension (): never { return unsupported() } + isReady = true + whenReady = Promise.resolve() + whenRestored = Promise.resolve() + hasRestorableState = false + centerLayout = unsupported + isLayoutCentered = unsupported + enforcePartOptions = unsupported + onDidChangeActiveGroup = Event.None + onDidAddGroup = Event.None + onDidRemoveGroup = Event.None + onDidMoveGroup = Event.None + onDidActivateGroup = Event.None + onDidChangeGroupIndex = Event.None + onDidChangeGroupLocked = Event.None + onDidChangeGroupMaximized = Event.None + activeGroup = fakeActiveGroup + get sideGroup (): never { return unsupported() } + groups = [fakeActiveGroup] + count = 0 + orientation = GroupOrientation.HORIZONTAL + getGroups = () => [] + getGroup = () => undefined + activateGroup = unsupported + getSize = unsupported + setSize = unsupported + arrangeGroups = unsupported + toggleMaximizeGroup = unsupported + toggleExpandGroup = unsupported + applyLayout = unsupported + getLayout = unsupported + setGroupOrientation = unsupported + findGroup = () => undefined + addGroup = unsupported + removeGroup = unsupported + moveGroup = unsupported + mergeGroup = unsupported + mergeAllGroups = unsupported + copyGroup = unsupported + partOptions = DEFAULT_EDITOR_PART_OPTIONS + + onDidChangeEditorPartOptions = Event.None + createEditorDropTarget = unsupported +} + class EmptyEditorGroupsService implements IEditorGroupsService { onDidCreateAuxiliaryEditorPart = Event.None - parts = [] - get activePart () { - return unsupported() - } - get mainPart () { - return unsupported() - } + mainPart = new EmptyEditorPart() + activePart = this.mainPart + parts = [this.mainPart] getPart = unsupported createAuxiliaryEditorPart = unsupported onDidChangeGroupMaximized = Event.None toggleMaximizeGroup = unsupported toggleExpandGroup = unsupported - get partOptions () { - return unsupported() - } + partOptions = DEFAULT_EDITOR_PART_OPTIONS createEditorDropTarget = unsupported readonly _serviceBrand = undefined From 576b10812945fa3e0e6d92ab00eb3fdaaa9e3271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Tue, 2 Jan 2024 17:04:46 +0100 Subject: [PATCH 10/10] fix: fix diff editor, use proper editor impl --- src/monaco.ts | 131 ++++++++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 62 deletions(-) diff --git a/src/monaco.ts b/src/monaco.ts index bf936bd4..56624e2a 100644 --- a/src/monaco.ts +++ b/src/monaco.ts @@ -1,7 +1,7 @@ import { StandaloneKeybindingService, StandaloneServices } from 'vs/editor/standalone/browser/standaloneServices' import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfiguration' import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' -import { IStandaloneDiffEditorConstructionOptions, IStandaloneEditorConstructionOptions, StandaloneDiffEditor2, StandaloneEditor } from 'vs/editor/standalone/browser/standaloneCodeEditor' +import { IStandaloneDiffEditorConstructionOptions, IStandaloneEditorConstructionOptions, StandaloneCodeEditor, StandaloneDiffEditor2, StandaloneEditor } from 'vs/editor/standalone/browser/standaloneCodeEditor' import { IDiffEditorOptions, IEditorOptions } from 'vs/editor/common/config/editorOptions' import { IEditorConfiguration } from 'vs/workbench/browser/parts/editor/textEditor' import { isObject } from 'vs/base/common/types' @@ -78,79 +78,86 @@ function computeDiffConfiguration (configuration: IEditorConfiguration, override * So instead of just taking the options given by the user via the `updateOptions` method, * it fallbacks on the current configurationService configuration */ -class ConfiguredStandaloneEditor extends createInjectedClass(StandaloneEditor) { - private optionsOverrides: Readonly = {} - private lastAppliedEditorOptions?: IEditorOptions - - constructor ( - domElement: HTMLElement, - _options: Readonly = {}, - @IInstantiationService instantiationService: IInstantiationService, - @ITextResourceConfigurationService private textResourceConfigurationService: ITextResourceConfigurationService - ) { - // Remove Construction specific options - const { theme, autoDetectHighContrast, model, value, language, accessibilityHelpUrl, ariaContainerElement, overflowWidgetsDomNode, dimension, ...options } = _options - const computedOptions = computeConfiguration(textResourceConfigurationService.getValue(_options.model?.uri), options) - super(instantiationService, domElement, { ...computedOptions, overflowWidgetsDomNode, dimension, theme, autoDetectHighContrast, model, value, language, accessibilityHelpUrl, ariaContainerElement }) - this.lastAppliedEditorOptions = computedOptions +function createConfiguredEditorClass (impl: new (instantiationService: IInstantiationService, domElement: HTMLElement, _options: Readonly) => StandaloneCodeEditor) { + class ConfiguredStandaloneEditor extends impl { + private optionsOverrides: Readonly = {} + private lastAppliedEditorOptions?: IEditorOptions + + constructor ( + domElement: HTMLElement, + _options: Readonly = {}, + @IInstantiationService instantiationService: IInstantiationService, + @ITextResourceConfigurationService private textResourceConfigurationService: ITextResourceConfigurationService + ) { + // Remove Construction specific options + const { theme, autoDetectHighContrast, model, value, language, accessibilityHelpUrl, ariaContainerElement, overflowWidgetsDomNode, dimension, ...options } = _options + const computedOptions = computeConfiguration(textResourceConfigurationService.getValue(_options.model?.uri), options) + super(instantiationService, domElement, { ...computedOptions, overflowWidgetsDomNode, dimension, theme, autoDetectHighContrast, model, value, language, accessibilityHelpUrl, ariaContainerElement }) + this.lastAppliedEditorOptions = computedOptions + + this.optionsOverrides = options + this._register(textResourceConfigurationService.onDidChangeConfiguration((e) => { + const resource = this.getModel()?.uri + if (resource != null && e.affectsConfiguration(resource, 'editor')) { + this.updateEditorConfiguration() + } + })) + this._register(this.onDidChangeModelLanguage(() => this.updateEditorConfiguration())) + this._register(this.onDidChangeModel(() => this.updateEditorConfiguration())) + this.updateEditorConfiguration() + } - this.optionsOverrides = options - this._register(textResourceConfigurationService.onDidChangeConfiguration((e) => { - const resource = this.getModel()?.uri - if (resource != null && e.affectsConfiguration(resource, 'editor')) { - this.updateEditorConfiguration() + /** + * This method is widely inspired from vs/workbench/browser/parts/editor/textEditor + */ + private updateEditorConfiguration (): void { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!this.hasModel() || this.textResourceConfigurationService == null) { + // textResourceConfigurationService can be null if this method is called by the constructor of StandaloneEditor + return + } + const resource = this.getModel()!.uri + const configuration = this.textResourceConfigurationService.getValue(resource) + if (configuration == null) { + return } - })) - this._register(this.onDidChangeModelLanguage(() => this.updateEditorConfiguration())) - this._register(this.onDidChangeModel(() => this.updateEditorConfiguration())) - this.updateEditorConfiguration() - } - /** - * This method is widely inspired from vs/workbench/browser/parts/editor/textEditor - */ - private updateEditorConfiguration (): void { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (!this.hasModel() || this.textResourceConfigurationService == null) { - // textResourceConfigurationService can be null if this method is called by the constructor of StandaloneEditor - return - } - const resource = this.getModel()!.uri - const configuration = this.textResourceConfigurationService.getValue(resource) - if (configuration == null) { - return - } + const editorConfiguration = computeConfiguration(configuration, this.optionsOverrides) - const editorConfiguration = computeConfiguration(configuration, this.optionsOverrides) + // Try to figure out the actual editor options that changed from the last time we updated the editor. + // We do this so that we are not overwriting some dynamic editor settings (e.g. word wrap) that might + // have been applied to the editor directly. + let editorSettingsToApply = editorConfiguration + if (this.lastAppliedEditorOptions != null) { + editorSettingsToApply = distinct(this.lastAppliedEditorOptions, editorSettingsToApply) + } - // Try to figure out the actual editor options that changed from the last time we updated the editor. - // We do this so that we are not overwriting some dynamic editor settings (e.g. word wrap) that might - // have been applied to the editor directly. - let editorSettingsToApply = editorConfiguration - if (this.lastAppliedEditorOptions != null) { - editorSettingsToApply = distinct(this.lastAppliedEditorOptions, editorSettingsToApply) + if (Object.keys(editorSettingsToApply).length > 0) { + this.lastAppliedEditorOptions = editorConfiguration + + super.updateOptions(editorSettingsToApply) + } } - if (Object.keys(editorSettingsToApply).length > 0) { - this.lastAppliedEditorOptions = editorConfiguration + override updateOptions (newOptions: Readonly): void { + // it can be null if this method is called by the constructor of StandaloneEditor + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + this.optionsOverrides ??= {} + const didChange = EditorOptionsUtil.applyUpdate(this.optionsOverrides, newOptions) + if (!didChange) { + return + } - super.updateOptions(editorSettingsToApply) + this.updateEditorConfiguration() } } - override updateOptions (newOptions: Readonly): void { - // it can be null if this method is called by the constructor of StandaloneEditor - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - this.optionsOverrides ??= {} - const didChange = EditorOptionsUtil.applyUpdate(this.optionsOverrides, newOptions) - if (!didChange) { - return - } - - this.updateEditorConfiguration() - } + return ConfiguredStandaloneEditor } +const ConfiguredStandaloneCodeEditor = createConfiguredEditorClass(createInjectedClass(StandaloneCodeEditor)) +const ConfiguredStandaloneEditor = createConfiguredEditorClass(createInjectedClass(StandaloneEditor)) + class ConfiguredStandaloneDiffEditor extends createInjectedClass(StandaloneDiffEditor2) { private optionsOverrides: Readonly = {} private lastAppliedEditorOptions?: IEditorOptions @@ -224,7 +231,7 @@ class ConfiguredStandaloneDiffEditor extends createInjectedClass(StandaloneDiffE } protected override _createInnerEditor (instantiationService: IInstantiationService, container: HTMLElement, options: Readonly): CodeEditorWidget { - return instantiationService.createInstance(ConfiguredStandaloneEditor, container, options) + return instantiationService.createInstance(ConfiguredStandaloneCodeEditor, container, options) } }