diff --git a/README.md b/README.md index 77096c5b..c858542b 100644 --- a/README.md +++ b/README.md @@ -82,21 +82,6 @@ There are workarounds for both: } } ``` -- we can serialize and eval the code to prevent vite from touching it: -```typescript -{ - plugins: [{ - // prevent vite from trying to inject code into an extension file du to an `import()` in that file - name: 'hack-prevent-transform-javascript', - apply: 'serve', - load (source) { - if (source.includes('tsserver.web.js')) { - return `eval(${JSON.stringify(fs.readFileSync(source).toString('utf-8'))})` - } - } - }] -} -``` ### If using Angular and getting `Not allowed to load local resource:` errors @@ -134,70 +119,81 @@ await initialize({ }) ``` -Additionally, this library exposes 23 modules that include the vscode version of some services (with some glue to make it work with monaco): +Additionally, 25 packages that include the vscode version of some services (with some glue to make it work with monaco) are published: -- **Extensions** (included by default): `vscode/service-override/extensions` +- **Extensions** (included by default): `@codingame/monaco-vscode-extensions-service-override` - Support for VSCode extensions. A worker configuration can be past to it: - Then, everything runs in one worker, where extensions run in an iframe, with all the implications (can be created by the bundler directly). The worker script is expected to be hosted on a separate domain. -- **Files** (included by default): `vscode/service-override/files` +- **Files** (included by default): `@codingame/monaco-vscode-file-service-override` - It adds the memory filesystem for `file://` files, but also adds the support for lazy loaded extension files. It adds separate memory user files (e.g. config, keybindings), cache files and log files. -- **QuickAccess** (included by default): `vscode/service-override/quickaccess` +- **QuickAccess** (included by default): `@codingame/monaco-vscode-quickaccess-service-override` - Enables the quickaccess menu in the editor (press F1 or ctrl+shift+p) -- **Notifications**: `vscode/service-override/notifications` +- **Notifications**: `@codingame/monaco-vscode-notifications-service-override` - This services enables vscode notifications you usually find in the bottom right corner. -- **Dialogs**: `vscode/service-override/dialogs` +- **Dialogs**: `@codingame/monaco-vscode-dialogs-service-override` - Enable vscode modal dialogs. It allows users to select an action to do. Those actions are exposed to the vscode API. Additionally, this service can be used by the language client to delegate questions to the user. -- **Model**: `vscode/service-override/model` +- **Model**: `@codingame/monaco-vscode-model-service-override` - This service creates and takes care of model references. For example: - Create model if content is unknown - Count references - Destroy models when they are no longer used -- **Editor**: `vscode/service-override/editor` +- **Editor**: `@codingame/monaco-vscode-editor-service-override` - Enable editor support. This is usually needed when working with the language server protocol. Without enabling the editor service, it will only be able to resolve the currently open model (only internal file links will work). -- **Views**: `vscode/service-override/views` +- **Views**: `@codingame/monaco-vscode-views-service-override` - Enable full views support. Is exclusive with the `editor` service. Do not use both services at the same time. -- **Configuration**: `vscode/service-override/configuration` +- **Configuration**: `@codingame/monaco-vscode-configuration-service-override` - Allows to change the configuration of not only the editors, but every part of vscode. The language client for instance uses it to send the requested configuration to the server. The default configuration service already allows to change the configuration. This service overrides makes it rely on a user configuration file (with json schema, overridable by language including all vscode features). -- **Keybindings**: `vscode/service-override/keybindings` +- **Keybindings**: `@codingame/monaco-vscode-keybindings-service-override` - Enables platform specific keybindings and make it rely on a user definded keybindings configuration (if available). -- **Languages**: `vscode/service-override/languages` +- **Languages**: `@codingame/monaco-vscode-languages-service-override` - Enable language support. It's like the standalone service with 2 differences: - It handle the language extension point (getting languages from vscode extensions) - It triggers the `onLanguage:${language}` event (to load vscode extension listening to those events) -- **Textmate**: `vscode/service-override/textmate` +- **Textmate**: `@codingame/monaco-vscode-textmate-service-override` - Allows to use textmate grammars. Depends on *themes* service. vscode extensions use textmate grammars exclusively for highlighting. Once this is enabled monarch grammars can no longer be loaded by monaco-editor. -- **Themes**: `vscode/service-override/theme` +- **Themes**: `@codingame/monaco-vscode-theme-service-override` - Allows to use VSCode themes. -- **Snippets**: `vscode/service-override/snippets` +- **Snippets**: `@codingame/monaco-vscode-snippets-service-override` - Add snippet extension point (register vscode extension snippets) -- **Audio cue**: `vscode/service-override/audioCue` +- **Audio cue**: `@codingame/monaco-vscode-audio-cue-service-override` - If enabled the editor may provides audible hints -- **Debug**: `vscode/service-override/debug` +- **Debug**: `@codingame/monaco-vscode-debug-service-override` - Activate debugging support -- **Preferences**: `vscode/service-override/preferences` +- **Preferences**: `@codingame/monaco-vscode-preferences-service-override` - Allow to read and write preferences -- **Output**: `vscode/service-override/output` +- **Output**: `@codingame/monaco-vscode-output-service-override` - Output panel support. *Hint*: It only makes sense to enable it when *Views* service is used. -- **Terminal**: `vscode/service-override/terminal` +- **Terminal**: `@codingame/monaco-vscode-terminal-service-override` - Terminal panel support. *Hint*: It only makes sense to enable it when *Views* service is used. -- **Search**: `vscode/service-override/search` +- **Search**: `@codingame/monaco-vscode-search-service-override` - search panel support. *Hint*: It only makes sense to enable it when *Views* service is used. -- **Markers**: `vscode/service-override/markers` +- **Markers**: `@codingame/monaco-vscode-markers-service-override` - It adds the problems panel tab. *Hint*: It only makes sense to enable it when *Views* service is used. -- **Language detection worker**: `vscode/service-override/languageDetectionWorker` +- **Language detection worker**: `@codingame/monaco-vscode-language-detection-worker-service-override` - When opening an untitled model or a file without extension or if vscode is unable to guess the language simply by the file extension or by reading the first line. Then it will use tensorflow in a worker to try to guess the most probable language (here we are only able to rely on the open source model). -- **Storage**: `vscode/service-override/storage` +- **Storage**: `@codingame/monaco-vscode-storage-service-override` - Define your own storage or use the default BrowserStorageService. The storage service is used in many places either as a cache or as a user preference store. For instance: - Current loaded theme is stored in there to be loaded faster on start. - Every panel/view positions are stored in there. - +- **LifeCycle**: `@codingame/monaco-vscode-lifecycle-service-override` + - Allow other services to veto a page reload (for instance when not all open files are saved) +- **Remote agent**: `@codingame/monaco-vscode-remote-agent-service-override` + - Connect to a remote vscode agent and have access to: + - The remote filesystem + - The remote file search + - Running terminals + - Running vscode extensions (not web-compatible) + - and probably more? + This library exports a `vscode-ext-host-server` bin to start the remote agent +- **Accessibility**: `@codingame/monaco-vscode-accessibility-service-override` + - Register accessibility helpers Usage: ```typescript import * as vscode from 'vscode' import { initialize } from 'vscode/services' -import getEditorServiceOverride from 'vscode/service-override/editor' -import getConfigurationServiceOverride, { updateUserConfiguration, configurationRegistry } from 'vscode/service-override/configuration' +import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override' +import getConfigurationServiceOverride, { updateUserConfiguration, configurationRegistry } from '@codingame/monaco-vscode-configuration-service-override' await initialize({ ...getModelEditorServiceOverride((model, input, sideBySide) => { @@ -300,21 +296,21 @@ getApi().then(vscodeApi => vscodeApi.languages.registerCompletionItemProvider(.. VSCode uses a bunch of default extensions. Most of them are used to load the default languages and grammars (see https://github.com/microsoft/vscode/tree/main/extensions). -This library bundles most of them and allows to import the ones you want: +This library bundles and publishes them and allows to import the ones you want: ```typescript -import 'vscode/default-extensions/javascript' -import 'vscode/default-extensions/json' +import '@codingame/monaco-vscode-javascript-default-extension' +import '@codingame/monaco-vscode-json-default-extension' ... ``` ### Loading vsix file VSCode extension are bundled as vsix files. -This library exposes a rollup plugin (vite-compatible) that allows to load a vsix file. +This library publishes a rollup plugin (vite-compatible) that allows to load a vsix file. - rollup/vite config: ```typescript -import vsixPlugin from 'vscode/rollup-vsix-plugin' +import vsixPlugin from '@codingame/monaco-vscode-rollup-vsix-plugin' ... plugins: [ ..., @@ -357,6 +353,17 @@ For the debug feature, also run: npm run start:debugServer ``` +#### Remote agent + +To connect to a remote agent, run: +```bash +npm run start:extHostServer +``` + +Then go to http://localhost:5173/?remoteAuthority=localhost:8000 + +You can also go to http://localhost:5173/?remoteAuthority=localhost:8000&remotePath=/any/path/on/your/machine to open a directory on your machine as the current workspace + ### History This project was mainly created to make the implementation of [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient) more robust and maintainable. diff --git a/demo/.eslintrc b/demo/.eslintrc new file mode 100644 index 00000000..318680ac --- /dev/null +++ b/demo/.eslintrc @@ -0,0 +1,26 @@ +{ + "env": { + "es6": true, + "browser": true + }, + "parserOptions": { + "project": "./tsconfig.eslint.json" + }, + "extends": [ + "@codingame" + ], + "rules": { + "import/extensions": ["off"], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ] + }, + "ignorePatterns": [ + "dist/**/*" + ] +} \ No newline at end of file diff --git a/demo/package-lock.json b/demo/package-lock.json index 336d7743..e1b6ee36 100644 --- a/demo/package-lock.json +++ b/demo/package-lock.json @@ -9,22 +9,133 @@ "version": "0.0.0", "hasInstallScript": true, "dependencies": { + "@codingame/monaco-vscode-accessibility-service-override": "file:../dist/service-override-accessibility", + "@codingame/monaco-vscode-audio-cue-service-override": "file:../dist/service-override-audio-cue", + "@codingame/monaco-vscode-bat-default-extension": "file:../dist/default-extension-bat", + "@codingame/monaco-vscode-bulk-edit-service-override": "file:../dist/service-override-bulk-edit", + "@codingame/monaco-vscode-clojure-default-extension": "file:../dist/default-extension-clojure", + "@codingame/monaco-vscode-coffeescript-default-extension": "file:../dist/default-extension-coffeescript", + "@codingame/monaco-vscode-configuration-editing-default-extension": "file:../dist/default-extension-configuration-editing", + "@codingame/monaco-vscode-configuration-service-override": "file:../dist/service-override-configuration", + "@codingame/monaco-vscode-cpp-default-extension": "file:../dist/default-extension-cpp", + "@codingame/monaco-vscode-csharp-default-extension": "file:../dist/default-extension-csharp", + "@codingame/monaco-vscode-css-default-extension": "file:../dist/default-extension-css", + "@codingame/monaco-vscode-css-language-features-default-extension": "file:../dist/default-extension-css-language-features", + "@codingame/monaco-vscode-dart-default-extension": "file:../dist/default-extension-dart", + "@codingame/monaco-vscode-debug-auto-launch-default-extension": "file:../dist/default-extension-debug-auto-launch", + "@codingame/monaco-vscode-debug-server-ready-default-extension": "file:../dist/default-extension-debug-server-ready", + "@codingame/monaco-vscode-debug-service-override": "file:../dist/service-override-debug", + "@codingame/monaco-vscode-dialogs-service-override": "file:../dist/service-override-dialogs", + "@codingame/monaco-vscode-diff-default-extension": "file:../dist/default-extension-diff", + "@codingame/monaco-vscode-docker-default-extension": "file:../dist/default-extension-docker", + "@codingame/monaco-vscode-editor-service-override": "file:../dist/service-override-editor", + "@codingame/monaco-vscode-emmet-default-extension": "file:../dist/default-extension-emmet", + "@codingame/monaco-vscode-environment-service-override": "file:../dist/service-override-environment", + "@codingame/monaco-vscode-extension-editing-default-extension": "file:../dist/default-extension-extension-editing", + "@codingame/monaco-vscode-extensions-service-override": "file:../dist/service-override-extensions", + "@codingame/monaco-vscode-files-service-override": "file:../dist/service-override-files", + "@codingame/monaco-vscode-fsharp-default-extension": "file:../dist/default-extension-fsharp", + "@codingame/monaco-vscode-git-base-default-extension": "file:../dist/default-extension-git-base", + "@codingame/monaco-vscode-git-default-extension": "file:../dist/default-extension-git", + "@codingame/monaco-vscode-github-authentication-default-extension": "file:../dist/default-extension-github-authentication", + "@codingame/monaco-vscode-github-default-extension": "file:../dist/default-extension-github", + "@codingame/monaco-vscode-go-default-extension": "file:../dist/default-extension-go", + "@codingame/monaco-vscode-groovy-default-extension": "file:../dist/default-extension-groovy", + "@codingame/monaco-vscode-grunt-default-extension": "file:../dist/default-extension-grunt", + "@codingame/monaco-vscode-gulp-default-extension": "file:../dist/default-extension-gulp", + "@codingame/monaco-vscode-handlebars-default-extension": "file:../dist/default-extension-handlebars", + "@codingame/monaco-vscode-hlsl-default-extension": "file:../dist/default-extension-hlsl", + "@codingame/monaco-vscode-html-default-extension": "file:../dist/default-extension-html", + "@codingame/monaco-vscode-html-language-features-default-extension": "file:../dist/default-extension-html-language-features", + "@codingame/monaco-vscode-ini-default-extension": "file:../dist/default-extension-ini", + "@codingame/monaco-vscode-ipynb-default-extension": "file:../dist/default-extension-ipynb", + "@codingame/monaco-vscode-jake-default-extension": "file:../dist/default-extension-jake", + "@codingame/monaco-vscode-java-default-extension": "file:../dist/default-extension-java", + "@codingame/monaco-vscode-javascript-default-extension": "file:../dist/default-extension-javascript", + "@codingame/monaco-vscode-json-default-extension": "file:../dist/default-extension-json", + "@codingame/monaco-vscode-json-language-features-default-extension": "file:../dist/default-extension-json-language-features", + "@codingame/monaco-vscode-julia-default-extension": "file:../dist/default-extension-julia", + "@codingame/monaco-vscode-keybindings-service-override": "file:../dist/service-override-keybindings", + "@codingame/monaco-vscode-language-detection-worker-service-override": "file:../dist/service-override-language-detection-worker", + "@codingame/monaco-vscode-languages-service-override": "file:../dist/service-override-languages", + "@codingame/monaco-vscode-latex-default-extension": "file:../dist/default-extension-latex", + "@codingame/monaco-vscode-layout-service-override": "file:../dist/service-override-layout", + "@codingame/monaco-vscode-less-default-extension": "file:../dist/default-extension-less", + "@codingame/monaco-vscode-lifecycle-service-override": "file:../dist/service-override-lifecycle", + "@codingame/monaco-vscode-log-default-extension": "file:../dist/default-extension-log", + "@codingame/monaco-vscode-lua-default-extension": "file:../dist/default-extension-lua", + "@codingame/monaco-vscode-make-default-extension": "file:../dist/default-extension-make", + "@codingame/monaco-vscode-markdown-basics-default-extension": "file:../dist/default-extension-markdown-basics", + "@codingame/monaco-vscode-markdown-language-features-default-extension": "file:../dist/default-extension-markdown-language-features", + "@codingame/monaco-vscode-markdown-math-default-extension": "file:../dist/default-extension-markdown-math", + "@codingame/monaco-vscode-markers-service-override": "file:../dist/service-override-markers", + "@codingame/monaco-vscode-media-preview-default-extension": "file:../dist/default-extension-media-preview", + "@codingame/monaco-vscode-merge-conflict-default-extension": "file:../dist/default-extension-merge-conflict", + "@codingame/monaco-vscode-microsoft-authentication-default-extension": "file:../dist/default-extension-microsoft-authentication", + "@codingame/monaco-vscode-model-service-override": "file:../dist/service-override-model", + "@codingame/monaco-vscode-notebook-renderers-default-extension": "file:../dist/default-extension-notebook-renderers", + "@codingame/monaco-vscode-notifications-service-override": "file:../dist/service-override-notifications", + "@codingame/monaco-vscode-npm-default-extension": "file:../dist/default-extension-npm", + "@codingame/monaco-vscode-objective-c-default-extension": "file:../dist/default-extension-objective-c", + "@codingame/monaco-vscode-output-service-override": "file:../dist/service-override-output", + "@codingame/monaco-vscode-perl-default-extension": "file:../dist/default-extension-perl", + "@codingame/monaco-vscode-php-default-extension": "file:../dist/default-extension-php", + "@codingame/monaco-vscode-php-language-features-default-extension": "file:../dist/default-extension-php-language-features", + "@codingame/monaco-vscode-powershell-default-extension": "file:../dist/default-extension-powershell", + "@codingame/monaco-vscode-preferences-service-override": "file:../dist/service-override-preferences", + "@codingame/monaco-vscode-pug-default-extension": "file:../dist/default-extension-pug", + "@codingame/monaco-vscode-python-default-extension": "file:../dist/default-extension-python", + "@codingame/monaco-vscode-quickaccess-service-override": "file:../dist/service-override-quickaccess", + "@codingame/monaco-vscode-r-default-extension": "file:../dist/default-extension-r", + "@codingame/monaco-vscode-razor-default-extension": "file:../dist/default-extension-razor", + "@codingame/monaco-vscode-references-view-default-extension": "file:../dist/default-extension-references-view", + "@codingame/monaco-vscode-remote-agent-service-override": "file:../dist/service-override-remote-agent", + "@codingame/monaco-vscode-restructuredtext-default-extension": "file:../dist/default-extension-restructuredtext", + "@codingame/monaco-vscode-ruby-default-extension": "file:../dist/default-extension-ruby", + "@codingame/monaco-vscode-rust-default-extension": "file:../dist/default-extension-rust", + "@codingame/monaco-vscode-scss-default-extension": "file:../dist/default-extension-scss", + "@codingame/monaco-vscode-search-result-default-extension": "file:../dist/default-extension-search-result", + "@codingame/monaco-vscode-search-service-override": "file:../dist/service-override-search", + "@codingame/monaco-vscode-server": "file:../dist/server", + "@codingame/monaco-vscode-shaderlab-default-extension": "file:../dist/default-extension-shaderlab", + "@codingame/monaco-vscode-shellscript-default-extension": "file:../dist/default-extension-shellscript", + "@codingame/monaco-vscode-simple-browser-default-extension": "file:../dist/default-extension-simple-browser", + "@codingame/monaco-vscode-snippets-service-override": "file:../dist/service-override-snippets", + "@codingame/monaco-vscode-sql-default-extension": "file:../dist/default-extension-sql", + "@codingame/monaco-vscode-storage-service-override": "file:../dist/service-override-storage", + "@codingame/monaco-vscode-swift-default-extension": "file:../dist/default-extension-swift", + "@codingame/monaco-vscode-terminal-service-override": "file:../dist/service-override-terminal", + "@codingame/monaco-vscode-textmate-service-override": "file:../dist/service-override-textmate", + "@codingame/monaco-vscode-theme-abyss-default-extension": "file:../dist/default-extension-theme-abyss", + "@codingame/monaco-vscode-theme-defaults-default-extension": "file:../dist/default-extension-theme-defaults", + "@codingame/monaco-vscode-theme-kimbie-dark-default-extension": "file:../dist/default-extension-theme-kimbie-dark", + "@codingame/monaco-vscode-theme-monokai-default-extension": "file:../dist/default-extension-theme-monokai", + "@codingame/monaco-vscode-theme-monokai-dimmed-default-extension": "file:../dist/default-extension-theme-monokai-dimmed", + "@codingame/monaco-vscode-theme-quietlight-default-extension": "file:../dist/default-extension-theme-quietlight", + "@codingame/monaco-vscode-theme-red-default-extension": "file:../dist/default-extension-theme-red", + "@codingame/monaco-vscode-theme-service-override": "file:../dist/service-override-theme", + "@codingame/monaco-vscode-theme-seti-default-extension": "file:../dist/default-extension-theme-seti", + "@codingame/monaco-vscode-theme-solarized-dark-default-extension": "file:../dist/default-extension-theme-solarized-dark", + "@codingame/monaco-vscode-theme-solarized-light-default-extension": "file:../dist/default-extension-theme-solarized-light", + "@codingame/monaco-vscode-theme-tomorrow-night-blue-default-extension": "file:../dist/default-extension-theme-tomorrow-night-blue", + "@codingame/monaco-vscode-typescript-basics-default-extension": "file:../dist/default-extension-typescript-basics", + "@codingame/monaco-vscode-typescript-language-features-default-extension": "file:../dist/default-extension-typescript-language-features", + "@codingame/monaco-vscode-vb-default-extension": "file:../dist/default-extension-vb", + "@codingame/monaco-vscode-views-service-override": "file:../dist/service-override-views", + "@codingame/monaco-vscode-vscode-api-tests-default-extension": "file:../dist/default-extension-vscode-api-tests", + "@codingame/monaco-vscode-vscode-colorize-tests-default-extension": "file:../dist/default-extension-vscode-colorize-tests", + "@codingame/monaco-vscode-vscode-test-resolver-default-extension": "file:../dist/default-extension-vscode-test-resolver", + "@codingame/monaco-vscode-xml-default-extension": "file:../dist/default-extension-xml", + "@codingame/monaco-vscode-yaml-default-extension": "file:../dist/default-extension-yaml", "ansi-colors": "^4.1.3", "dockerode": "^3.3.5", "express": "^4.18.2", "monaco-editor": "^0.43.0", - "vscode": "file:../", - "vscode-oniguruma": "~2.0.0", - "ws": "^8.14.1", - "xterm": "5.3.0", - "xterm-addon-canvas": "0.5.0", - "xterm-addon-image": "0.5.0", - "xterm-addon-search": "0.13.0", - "xterm-addon-serialize": "0.11.0", - "xterm-addon-unicode11": "0.6.0", - "xterm-addon-webgl": "0.16.0" + "vscode": "file:../dist/main", + "ws": "^8.14.1" }, "devDependencies": { + "@codingame/monaco-vscode-rollup-vsix-plugin": "file:../dist/rollup-vsix-plugin", "@types/dockerode": "^3.3.19", "@types/express": "^4.17.17", "@types/wicg-file-system-access": "^2020.9.6", @@ -34,82 +145,1391 @@ "vite": "~4.4.9" } }, - "..": { + "../dist/default-extension-bat": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-clojure": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-coffeescript": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-configuration-editing": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-cpp": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-csharp": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-css": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-css-language-features": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-dart": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-debug-auto-launch": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-debug-server-ready": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-diff": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-docker": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-emmet": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-extension-editing": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-fsharp": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-git": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-git-base": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-github": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-github-authentication": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-go": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-groovy": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-grunt": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-gulp": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-handlebars": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-hlsl": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-html": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-html-language-features": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-ini": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-ipynb": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-jake": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-java": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-javascript": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-json": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-json-language-features": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-julia": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-latex": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-less": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-log": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-lua": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-make": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-markdown-basics": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-markdown-language-features": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-markdown-math": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-media-preview": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-merge-conflict": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-microsoft-authentication": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-notebook-renderers": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-npm": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-objective-c": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-perl": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-php": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-php-language-features": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-powershell": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-pug": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-python": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-r": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-razor": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-references-view": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-restructuredtext": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-ruby": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-rust": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-scss": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-search-result": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-shaderlab": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-shellscript": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-simple-browser": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-sql": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-swift": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-abyss": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-defaults": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-kimbie-dark": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-monokai": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-monokai-dimmed": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-quietlight": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-red": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-seti": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-solarized-dark": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-solarized-light": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-theme-tomorrow-night-blue": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-typescript-basics": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-typescript-language-features": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-vb": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-vscode-api-tests": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-vscode-colorize-tests": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-vscode-test-resolver": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-xml": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/default-extension-yaml": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/main": { "name": "@codingame/monaco-vscode-api", "version": "0.0.0-semantic-release", "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0" + }, "bin": { "monaco-treemending": "monaco-treemending.js" - }, - "devDependencies": { - "@babel/core": "^7.22.17", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-decorators": "^7.22.15", - "@babel/preset-env": "^7.22.15", - "@babel/preset-typescript": "^7.22.15", - "@codingame/eslint-config": "^1.1.10", - "@codingame/tsconfig": "^1.1.1", - "@octokit/rest": "^20.0.1", - "@rollup/plugin-commonjs": "^25.0.4", - "@rollup/plugin-dynamic-import-vars": "^2.0.5", - "@rollup/plugin-inject": "^5.0.3", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-replace": "^5.0.2", - "@rollup/plugin-typescript": "^11.1.3", - "@types/diff": "^5.0.3", - "@types/mime-types": "^2.1.1", - "@types/node": "^18.17.15", - "@types/semver": "^7.5.2", - "@types/vscode": "~1.82.0", - "@types/yauzl": "^2.10.0", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "@vscode/iconv-lite-umd": "^0.7.0", - "@web/rollup-plugin-import-meta-assets": "^2.1.0", - "css-url-parser": "^1.1.3", - "diff": "^5.1.0", - "eslint": "^8.49.0", - "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-n": "^16.1.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-unused-imports": "^2.0.0", - "fast-glob": "^3.3.1", - "js-cleanup": "^1.2.0", - "jschardet": "^3.0.0", + } + }, + "../dist/rollup-vsix-plugin": { + "version": "0.0.0-semantic-release", + "dev": true, + "license": "MIT", + "dependencies": { "mime-types": "^2.1.35", - "patch-package": "^8.0.0", - "recast": "^0.23.4", - "rollup": "^3.29.1", - "rollup-plugin-dts": "^6.0.2", - "rollup-plugin-styles": "^4.0.0", - "semver": "^7.5.4", - "ts-morph": "^19.0.0", - "ts-node": "^10.9.1", - "typescript": "5.2.2", - "zx": "^7.2.3" + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", + "yauzl": "^2.10.0" + } + }, + "../dist/server": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "@microsoft/1ds-core-js": "^3.2.13", + "@microsoft/1ds-post-js": "^3.2.13", + "@parcel/watcher": "^2.3.0", + "@vscode/proxy-agent": "^0.17.2", + "@vscode/ripgrep": "^1.15.5", + "@vscode/spdlog": "^0.13.11", + "@vscode/windows-process-tree": "^0.5.0", + "cookie": "^0.5.0", + "kerberos": "^2.0.2", + "keytar": "^7.9.0", + "node-pty": "^1.0.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", + "vscode-regexpp": "^3.1.0", + "xterm-addon-serialize": "0.10.0", + "xterm-addon-unicode11": "0.5.0", + "yauzl": "^2.10.0", + "yazl": "^2.5.1" }, - "peerDependencies": { + "bin": { + "vscode-ext-host-server": "server.js" + } + }, + "../dist/service-override-accessibility": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-audio-cue": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-bulk-edit": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-configuration": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-debug": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-dialogs": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-editor": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-environment": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-extensions": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-files": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-keybindings": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-language-detection-worker": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { "@vscode/vscode-languagedetection": "^1.0.22", "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-languages": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-layout": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-lifecycle": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-markers": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-model": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-notifications": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-output": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-preferences": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-quickaccess": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-remote-agent": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-search": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-snippets": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-storage": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-terminal": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", + "xterm": "5.2.1", + "xterm-addon-canvas": "0.4.0", + "xterm-addon-image": "0.4.1", + "xterm-addon-search": "0.12.0", + "xterm-addon-serialize": "0.10.0", + "xterm-addon-unicode11": "0.5.0", + "xterm-addon-webgl": "0.15.0" + } + }, + "../dist/service-override-textmate": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release", "vscode-oniguruma": "^2.0.0", - "vscode-textmate": "^9.0.0", - "xterm": "5.3.0", - "xterm-addon-canvas": "0.5.0", - "xterm-addon-image": "0.5.0", - "xterm-addon-search": "0.13.0", - "xterm-addon-serialize": "0.11.0", - "xterm-addon-unicode11": "0.6.0", - "xterm-addon-webgl": "0.16.0", - "xterm-headless": "5.3.0", - "yauzl": "^2.10.0" + "vscode-textmate": "^9.0.0" + } + }, + "../dist/service-override-theme": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, + "../dist/service-override-views": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.43.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, - "node_modules/@balena/dockerignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" + }, + "node_modules/@codingame/monaco-vscode-accessibility-service-override": { + "resolved": "../dist/service-override-accessibility", + "link": true + }, + "node_modules/@codingame/monaco-vscode-audio-cue-service-override": { + "resolved": "../dist/service-override-audio-cue", + "link": true + }, + "node_modules/@codingame/monaco-vscode-bat-default-extension": { + "resolved": "../dist/default-extension-bat", + "link": true + }, + "node_modules/@codingame/monaco-vscode-bulk-edit-service-override": { + "resolved": "../dist/service-override-bulk-edit", + "link": true + }, + "node_modules/@codingame/monaco-vscode-clojure-default-extension": { + "resolved": "../dist/default-extension-clojure", + "link": true + }, + "node_modules/@codingame/monaco-vscode-coffeescript-default-extension": { + "resolved": "../dist/default-extension-coffeescript", + "link": true + }, + "node_modules/@codingame/monaco-vscode-configuration-editing-default-extension": { + "resolved": "../dist/default-extension-configuration-editing", + "link": true + }, + "node_modules/@codingame/monaco-vscode-configuration-service-override": { + "resolved": "../dist/service-override-configuration", + "link": true + }, + "node_modules/@codingame/monaco-vscode-cpp-default-extension": { + "resolved": "../dist/default-extension-cpp", + "link": true + }, + "node_modules/@codingame/monaco-vscode-csharp-default-extension": { + "resolved": "../dist/default-extension-csharp", + "link": true + }, + "node_modules/@codingame/monaco-vscode-css-default-extension": { + "resolved": "../dist/default-extension-css", + "link": true + }, + "node_modules/@codingame/monaco-vscode-css-language-features-default-extension": { + "resolved": "../dist/default-extension-css-language-features", + "link": true + }, + "node_modules/@codingame/monaco-vscode-dart-default-extension": { + "resolved": "../dist/default-extension-dart", + "link": true + }, + "node_modules/@codingame/monaco-vscode-debug-auto-launch-default-extension": { + "resolved": "../dist/default-extension-debug-auto-launch", + "link": true + }, + "node_modules/@codingame/monaco-vscode-debug-server-ready-default-extension": { + "resolved": "../dist/default-extension-debug-server-ready", + "link": true + }, + "node_modules/@codingame/monaco-vscode-debug-service-override": { + "resolved": "../dist/service-override-debug", + "link": true + }, + "node_modules/@codingame/monaco-vscode-dialogs-service-override": { + "resolved": "../dist/service-override-dialogs", + "link": true + }, + "node_modules/@codingame/monaco-vscode-diff-default-extension": { + "resolved": "../dist/default-extension-diff", + "link": true + }, + "node_modules/@codingame/monaco-vscode-docker-default-extension": { + "resolved": "../dist/default-extension-docker", + "link": true + }, + "node_modules/@codingame/monaco-vscode-editor-service-override": { + "resolved": "../dist/service-override-editor", + "link": true + }, + "node_modules/@codingame/monaco-vscode-emmet-default-extension": { + "resolved": "../dist/default-extension-emmet", + "link": true + }, + "node_modules/@codingame/monaco-vscode-environment-service-override": { + "resolved": "../dist/service-override-environment", + "link": true + }, + "node_modules/@codingame/monaco-vscode-extension-editing-default-extension": { + "resolved": "../dist/default-extension-extension-editing", + "link": true + }, + "node_modules/@codingame/monaco-vscode-extensions-service-override": { + "resolved": "../dist/service-override-extensions", + "link": true + }, + "node_modules/@codingame/monaco-vscode-files-service-override": { + "resolved": "../dist/service-override-files", + "link": true + }, + "node_modules/@codingame/monaco-vscode-fsharp-default-extension": { + "resolved": "../dist/default-extension-fsharp", + "link": true + }, + "node_modules/@codingame/monaco-vscode-git-base-default-extension": { + "resolved": "../dist/default-extension-git-base", + "link": true + }, + "node_modules/@codingame/monaco-vscode-git-default-extension": { + "resolved": "../dist/default-extension-git", + "link": true + }, + "node_modules/@codingame/monaco-vscode-github-authentication-default-extension": { + "resolved": "../dist/default-extension-github-authentication", + "link": true + }, + "node_modules/@codingame/monaco-vscode-github-default-extension": { + "resolved": "../dist/default-extension-github", + "link": true + }, + "node_modules/@codingame/monaco-vscode-go-default-extension": { + "resolved": "../dist/default-extension-go", + "link": true + }, + "node_modules/@codingame/monaco-vscode-groovy-default-extension": { + "resolved": "../dist/default-extension-groovy", + "link": true + }, + "node_modules/@codingame/monaco-vscode-grunt-default-extension": { + "resolved": "../dist/default-extension-grunt", + "link": true + }, + "node_modules/@codingame/monaco-vscode-gulp-default-extension": { + "resolved": "../dist/default-extension-gulp", + "link": true + }, + "node_modules/@codingame/monaco-vscode-handlebars-default-extension": { + "resolved": "../dist/default-extension-handlebars", + "link": true + }, + "node_modules/@codingame/monaco-vscode-hlsl-default-extension": { + "resolved": "../dist/default-extension-hlsl", + "link": true + }, + "node_modules/@codingame/monaco-vscode-html-default-extension": { + "resolved": "../dist/default-extension-html", + "link": true + }, + "node_modules/@codingame/monaco-vscode-html-language-features-default-extension": { + "resolved": "../dist/default-extension-html-language-features", + "link": true + }, + "node_modules/@codingame/monaco-vscode-ini-default-extension": { + "resolved": "../dist/default-extension-ini", + "link": true + }, + "node_modules/@codingame/monaco-vscode-ipynb-default-extension": { + "resolved": "../dist/default-extension-ipynb", + "link": true + }, + "node_modules/@codingame/monaco-vscode-jake-default-extension": { + "resolved": "../dist/default-extension-jake", + "link": true + }, + "node_modules/@codingame/monaco-vscode-java-default-extension": { + "resolved": "../dist/default-extension-java", + "link": true + }, + "node_modules/@codingame/monaco-vscode-javascript-default-extension": { + "resolved": "../dist/default-extension-javascript", + "link": true + }, + "node_modules/@codingame/monaco-vscode-json-default-extension": { + "resolved": "../dist/default-extension-json", + "link": true + }, + "node_modules/@codingame/monaco-vscode-json-language-features-default-extension": { + "resolved": "../dist/default-extension-json-language-features", + "link": true + }, + "node_modules/@codingame/monaco-vscode-julia-default-extension": { + "resolved": "../dist/default-extension-julia", + "link": true + }, + "node_modules/@codingame/monaco-vscode-keybindings-service-override": { + "resolved": "../dist/service-override-keybindings", + "link": true + }, + "node_modules/@codingame/monaco-vscode-language-detection-worker-service-override": { + "resolved": "../dist/service-override-language-detection-worker", + "link": true + }, + "node_modules/@codingame/monaco-vscode-languages-service-override": { + "resolved": "../dist/service-override-languages", + "link": true + }, + "node_modules/@codingame/monaco-vscode-latex-default-extension": { + "resolved": "../dist/default-extension-latex", + "link": true + }, + "node_modules/@codingame/monaco-vscode-layout-service-override": { + "resolved": "../dist/service-override-layout", + "link": true + }, + "node_modules/@codingame/monaco-vscode-less-default-extension": { + "resolved": "../dist/default-extension-less", + "link": true + }, + "node_modules/@codingame/monaco-vscode-lifecycle-service-override": { + "resolved": "../dist/service-override-lifecycle", + "link": true + }, + "node_modules/@codingame/monaco-vscode-log-default-extension": { + "resolved": "../dist/default-extension-log", + "link": true + }, + "node_modules/@codingame/monaco-vscode-lua-default-extension": { + "resolved": "../dist/default-extension-lua", + "link": true + }, + "node_modules/@codingame/monaco-vscode-make-default-extension": { + "resolved": "../dist/default-extension-make", + "link": true + }, + "node_modules/@codingame/monaco-vscode-markdown-basics-default-extension": { + "resolved": "../dist/default-extension-markdown-basics", + "link": true + }, + "node_modules/@codingame/monaco-vscode-markdown-language-features-default-extension": { + "resolved": "../dist/default-extension-markdown-language-features", + "link": true + }, + "node_modules/@codingame/monaco-vscode-markdown-math-default-extension": { + "resolved": "../dist/default-extension-markdown-math", + "link": true + }, + "node_modules/@codingame/monaco-vscode-markers-service-override": { + "resolved": "../dist/service-override-markers", + "link": true + }, + "node_modules/@codingame/monaco-vscode-media-preview-default-extension": { + "resolved": "../dist/default-extension-media-preview", + "link": true + }, + "node_modules/@codingame/monaco-vscode-merge-conflict-default-extension": { + "resolved": "../dist/default-extension-merge-conflict", + "link": true + }, + "node_modules/@codingame/monaco-vscode-microsoft-authentication-default-extension": { + "resolved": "../dist/default-extension-microsoft-authentication", + "link": true + }, + "node_modules/@codingame/monaco-vscode-model-service-override": { + "resolved": "../dist/service-override-model", + "link": true + }, + "node_modules/@codingame/monaco-vscode-notebook-renderers-default-extension": { + "resolved": "../dist/default-extension-notebook-renderers", + "link": true + }, + "node_modules/@codingame/monaco-vscode-notifications-service-override": { + "resolved": "../dist/service-override-notifications", + "link": true + }, + "node_modules/@codingame/monaco-vscode-npm-default-extension": { + "resolved": "../dist/default-extension-npm", + "link": true + }, + "node_modules/@codingame/monaco-vscode-objective-c-default-extension": { + "resolved": "../dist/default-extension-objective-c", + "link": true + }, + "node_modules/@codingame/monaco-vscode-output-service-override": { + "resolved": "../dist/service-override-output", + "link": true + }, + "node_modules/@codingame/monaco-vscode-perl-default-extension": { + "resolved": "../dist/default-extension-perl", + "link": true + }, + "node_modules/@codingame/monaco-vscode-php-default-extension": { + "resolved": "../dist/default-extension-php", + "link": true + }, + "node_modules/@codingame/monaco-vscode-php-language-features-default-extension": { + "resolved": "../dist/default-extension-php-language-features", + "link": true + }, + "node_modules/@codingame/monaco-vscode-powershell-default-extension": { + "resolved": "../dist/default-extension-powershell", + "link": true + }, + "node_modules/@codingame/monaco-vscode-preferences-service-override": { + "resolved": "../dist/service-override-preferences", + "link": true + }, + "node_modules/@codingame/monaco-vscode-pug-default-extension": { + "resolved": "../dist/default-extension-pug", + "link": true + }, + "node_modules/@codingame/monaco-vscode-python-default-extension": { + "resolved": "../dist/default-extension-python", + "link": true + }, + "node_modules/@codingame/monaco-vscode-quickaccess-service-override": { + "resolved": "../dist/service-override-quickaccess", + "link": true + }, + "node_modules/@codingame/monaco-vscode-r-default-extension": { + "resolved": "../dist/default-extension-r", + "link": true + }, + "node_modules/@codingame/monaco-vscode-razor-default-extension": { + "resolved": "../dist/default-extension-razor", + "link": true + }, + "node_modules/@codingame/monaco-vscode-references-view-default-extension": { + "resolved": "../dist/default-extension-references-view", + "link": true + }, + "node_modules/@codingame/monaco-vscode-remote-agent-service-override": { + "resolved": "../dist/service-override-remote-agent", + "link": true + }, + "node_modules/@codingame/monaco-vscode-restructuredtext-default-extension": { + "resolved": "../dist/default-extension-restructuredtext", + "link": true + }, + "node_modules/@codingame/monaco-vscode-rollup-vsix-plugin": { + "resolved": "../dist/rollup-vsix-plugin", + "link": true + }, + "node_modules/@codingame/monaco-vscode-ruby-default-extension": { + "resolved": "../dist/default-extension-ruby", + "link": true + }, + "node_modules/@codingame/monaco-vscode-rust-default-extension": { + "resolved": "../dist/default-extension-rust", + "link": true + }, + "node_modules/@codingame/monaco-vscode-scss-default-extension": { + "resolved": "../dist/default-extension-scss", + "link": true + }, + "node_modules/@codingame/monaco-vscode-search-result-default-extension": { + "resolved": "../dist/default-extension-search-result", + "link": true + }, + "node_modules/@codingame/monaco-vscode-search-service-override": { + "resolved": "../dist/service-override-search", + "link": true + }, + "node_modules/@codingame/monaco-vscode-server": { + "resolved": "../dist/server", + "link": true + }, + "node_modules/@codingame/monaco-vscode-shaderlab-default-extension": { + "resolved": "../dist/default-extension-shaderlab", + "link": true + }, + "node_modules/@codingame/monaco-vscode-shellscript-default-extension": { + "resolved": "../dist/default-extension-shellscript", + "link": true + }, + "node_modules/@codingame/monaco-vscode-simple-browser-default-extension": { + "resolved": "../dist/default-extension-simple-browser", + "link": true + }, + "node_modules/@codingame/monaco-vscode-snippets-service-override": { + "resolved": "../dist/service-override-snippets", + "link": true + }, + "node_modules/@codingame/monaco-vscode-sql-default-extension": { + "resolved": "../dist/default-extension-sql", + "link": true + }, + "node_modules/@codingame/monaco-vscode-storage-service-override": { + "resolved": "../dist/service-override-storage", + "link": true + }, + "node_modules/@codingame/monaco-vscode-swift-default-extension": { + "resolved": "../dist/default-extension-swift", + "link": true + }, + "node_modules/@codingame/monaco-vscode-terminal-service-override": { + "resolved": "../dist/service-override-terminal", + "link": true + }, + "node_modules/@codingame/monaco-vscode-textmate-service-override": { + "resolved": "../dist/service-override-textmate", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-abyss-default-extension": { + "resolved": "../dist/default-extension-theme-abyss", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-defaults-default-extension": { + "resolved": "../dist/default-extension-theme-defaults", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-kimbie-dark-default-extension": { + "resolved": "../dist/default-extension-theme-kimbie-dark", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-monokai-default-extension": { + "resolved": "../dist/default-extension-theme-monokai", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-monokai-dimmed-default-extension": { + "resolved": "../dist/default-extension-theme-monokai-dimmed", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-quietlight-default-extension": { + "resolved": "../dist/default-extension-theme-quietlight", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-red-default-extension": { + "resolved": "../dist/default-extension-theme-red", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-service-override": { + "resolved": "../dist/service-override-theme", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-seti-default-extension": { + "resolved": "../dist/default-extension-theme-seti", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-solarized-dark-default-extension": { + "resolved": "../dist/default-extension-theme-solarized-dark", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-solarized-light-default-extension": { + "resolved": "../dist/default-extension-theme-solarized-light", + "link": true + }, + "node_modules/@codingame/monaco-vscode-theme-tomorrow-night-blue-default-extension": { + "resolved": "../dist/default-extension-theme-tomorrow-night-blue", + "link": true + }, + "node_modules/@codingame/monaco-vscode-typescript-basics-default-extension": { + "resolved": "../dist/default-extension-typescript-basics", + "link": true + }, + "node_modules/@codingame/monaco-vscode-typescript-language-features-default-extension": { + "resolved": "../dist/default-extension-typescript-language-features", + "link": true + }, + "node_modules/@codingame/monaco-vscode-vb-default-extension": { + "resolved": "../dist/default-extension-vb", + "link": true + }, + "node_modules/@codingame/monaco-vscode-views-service-override": { + "resolved": "../dist/service-override-views", + "link": true + }, + "node_modules/@codingame/monaco-vscode-vscode-api-tests-default-extension": { + "resolved": "../dist/default-extension-vscode-api-tests", + "link": true + }, + "node_modules/@codingame/monaco-vscode-vscode-colorize-tests-default-extension": { + "resolved": "../dist/default-extension-vscode-colorize-tests", + "link": true + }, + "node_modules/@codingame/monaco-vscode-vscode-test-resolver-default-extension": { + "resolved": "../dist/default-extension-vscode-test-resolver", + "link": true + }, + "node_modules/@codingame/monaco-vscode-xml-default-extension": { + "resolved": "../dist/default-extension-xml", + "link": true + }, + "node_modules/@codingame/monaco-vscode-yaml-default-extension": { + "resolved": "../dist/default-extension-yaml", + "link": true }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", @@ -124,9 +1544,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz", - "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], @@ -140,9 +1560,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz", - "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", "cpu": [ "arm64" ], @@ -156,9 +1576,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz", - "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", "cpu": [ "x64" ], @@ -172,9 +1592,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz", - "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], @@ -188,9 +1608,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz", - "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", "cpu": [ "x64" ], @@ -204,9 +1624,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz", - "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", "cpu": [ "arm64" ], @@ -220,9 +1640,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz", - "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", "cpu": [ "x64" ], @@ -236,9 +1656,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz", - "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", "cpu": [ "arm" ], @@ -252,9 +1672,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz", - "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", "cpu": [ "arm64" ], @@ -268,9 +1688,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz", - "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", "cpu": [ "ia32" ], @@ -284,9 +1704,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz", - "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], @@ -300,9 +1720,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz", - "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", "cpu": [ "mips64el" ], @@ -316,9 +1736,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz", - "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", "cpu": [ "ppc64" ], @@ -332,9 +1752,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz", - "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", "cpu": [ "riscv64" ], @@ -348,9 +1768,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz", - "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", "cpu": [ "s390x" ], @@ -364,9 +1784,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz", - "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", "cpu": [ "x64" ], @@ -380,9 +1800,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz", - "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", "cpu": [ "x64" ], @@ -396,9 +1816,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz", - "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", "cpu": [ "x64" ], @@ -412,9 +1832,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz", - "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", "cpu": [ "x64" ], @@ -428,9 +1848,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz", - "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", "cpu": [ "arm64" ], @@ -444,9 +1864,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz", - "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", "cpu": [ "ia32" ], @@ -460,9 +1880,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz", - "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ "x64" ], @@ -519,15 +1939,15 @@ "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", "dev": true, "dependencies": { "@types/connect": "*", @@ -535,18 +1955,18 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/docker-modem": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.2.tgz", - "integrity": "sha512-qC7prjoEYR2QEe6SmCVfB1x3rfcQtUr1n4x89+3e0wSTMQ/KYCyf+/RAA9n2tllkkNc6//JMUZePdFRiGIWfaQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.4.tgz", + "integrity": "sha512-INK4TOrJ9hbgaSqHA1HaEOCcYVftJRH0v03gCg6R57JGKgltkDvdFYBtoN4lHrJ3h8aF1upvEPN2eWVLIvKStQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -554,9 +1974,9 @@ } }, "node_modules/@types/dockerode": { - "version": "3.3.19", - "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.19.tgz", - "integrity": "sha512-7CC5yIpQi+bHXwDK43b/deYXteP3Lem9gdocVVHJPSRJJLMfbiOchQV3rDmAPkMw+n3GIVj7m1six3JW+VcwwA==", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.20.tgz", + "integrity": "sha512-Q+1e3z6SPWXR/Sk+WIyJFVsSDg78S7MDaGcwAh1WKlveO1tVO8TF1rOzJir5GLnqzEdUbclFKlw/4rhwESxwPw==", "dev": true, "dependencies": { "@types/docker-modem": "*", @@ -564,9 +1984,9 @@ } }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.18", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", + "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -576,9 +1996,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "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==", "dev": true, "dependencies": { "@types/node": "*", @@ -587,6 +2007,12 @@ "@types/send": "*" } }, + "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==", + "dev": true + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -594,15 +2020,15 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", + "version": "20.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.0.tgz", + "integrity": "sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==", "dev": true }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", "dev": true }, "node_modules/@types/range-parser": { @@ -612,9 +2038,9 @@ "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", + "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -622,34 +2048,41 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", + "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", "dev": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "node_modules/@types/ssh2": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.11.tgz", - "integrity": "sha512-LdnE7UBpvHCgUznvn2fwLt2hkaENcKPFqOyXGkvyTLfxCXBN6roc1RmECNYuzzbHePzD3PaAov5rri9hehzx9Q==", + "version": "1.11.14", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.14.tgz", + "integrity": "sha512-O/U38mvV4jVVrdtZz8KpmitkmeD/PUDeDNNueQhm34166dmaqb1iZ3sfarSxBArM2/iX4PZVJY3EOta0Zks9hw==", "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 + }, "node_modules/@types/wicg-file-system-access": { - "version": "2020.9.6", - "resolved": "https://registry.npmjs.org/@types/wicg-file-system-access/-/wicg-file-system-access-2020.9.6.tgz", - "integrity": "sha512-6hogE75Hl2Ov/jgp8ZhDaGmIF/q3J07GtXf8nCJCwKTHq7971po5+DId7grft09zG7plBwpF6ZU0yx9Du4/e1A==", + "version": "2020.9.8", + "resolved": "https://registry.npmjs.org/@types/wicg-file-system-access/-/wicg-file-system-access-2020.9.8.tgz", + "integrity": "sha512-ggMz8nOygG7d/stpH40WVaNvBwuyYLnrg5Mbyf6bmsj/8+gb6Ei4ZZ9/4PNpcPNTT8th9Q8sM8wYmWGjMWLX/A==", "dev": true }, "node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz", + "integrity": "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==", "dev": true, "dependencies": { "@types/node": "*" @@ -668,9 +2101,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -878,9 +2311,9 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/cpu-features": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.7.tgz", - "integrity": "sha512-fjzFmsUKKCrC9GrM1eQTvQx18e+kjXFzjRLvJPNEDjk31+bJ6ZiV6uchv/hzbzXVIgbWdrEyyX1IFKwse65+8w==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -988,9 +2421,9 @@ } }, "node_modules/esbuild": { - "version": "0.18.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz", - "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "bin": { @@ -1000,28 +2433,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.11", - "@esbuild/android-arm64": "0.18.11", - "@esbuild/android-x64": "0.18.11", - "@esbuild/darwin-arm64": "0.18.11", - "@esbuild/darwin-x64": "0.18.11", - "@esbuild/freebsd-arm64": "0.18.11", - "@esbuild/freebsd-x64": "0.18.11", - "@esbuild/linux-arm": "0.18.11", - "@esbuild/linux-arm64": "0.18.11", - "@esbuild/linux-ia32": "0.18.11", - "@esbuild/linux-loong64": "0.18.11", - "@esbuild/linux-mips64el": "0.18.11", - "@esbuild/linux-ppc64": "0.18.11", - "@esbuild/linux-riscv64": "0.18.11", - "@esbuild/linux-s390x": "0.18.11", - "@esbuild/linux-x64": "0.18.11", - "@esbuild/netbsd-x64": "0.18.11", - "@esbuild/openbsd-x64": "0.18.11", - "@esbuild/sunos-x64": "0.18.11", - "@esbuild/win32-arm64": "0.18.11", - "@esbuild/win32-ia32": "0.18.11", - "@esbuild/win32-x64": "0.18.11" + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/escape-html": { @@ -1143,9 +2576,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -1162,12 +2595,13 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" }, "funding": { @@ -1185,6 +2619,17 @@ "node": ">= 0.4.0" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -1327,9 +2772,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, "node_modules/nanoid": { @@ -1405,9 +2850,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "version": "8.4.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", "dev": true, "funding": [ { @@ -1503,9 +2948,9 @@ } }, "node_modules/rollup": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", - "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", + "version": "3.29.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.3.tgz", + "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -1630,19 +3075,19 @@ "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==" }, "node_modules/ssh2": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.12.0.tgz", - "integrity": "sha512-7mcLu8biO6/BjQQ1iCjCmuBiF0hXxo+JlHpJBPDTVsxU7evscWWiRUgYF5XIs4gLKmiPRHA0maund11QLWyDJg==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.14.0.tgz", + "integrity": "sha512-AqzD1UCqit8tbOKoj6ztDDi1ffJZ2rV2SwlgrVVrHPkV5vWqGJOVp5pmtj18PunkPJAuKQsnInyKV+/Nb2bUnA==", "hasInstallScript": true, "dependencies": { - "asn1": "^0.2.4", + "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2" }, "engines": { "node": ">=10.16.0" }, "optionalDependencies": { - "cpu-features": "~0.0.6", + "cpu-features": "~0.0.8", "nan": "^2.17.0" } }, @@ -1860,23 +3305,18 @@ } }, "node_modules/vscode": { - "resolved": "..", + "resolved": "../dist/main", "link": true }, - "node_modules/vscode-oniguruma": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-2.0.0.tgz", - "integrity": "sha512-QWb6OZHNMxk1/nNOA6gjmbwA7gkKOYPAgteCOy8hX8/3FzoEb4pLHt2b2VHGy9gDdzGt3l5NqiQyo1HEQIanhw==" - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", - "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "engines": { "node": ">=10.0.0" }, @@ -1893,59 +3333,6 @@ } } }, - "node_modules/xterm": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", - "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==" - }, - "node_modules/xterm-addon-canvas": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.5.0.tgz", - "integrity": "sha512-QOo/eZCMrCleAgMimfdbaZCgmQRWOml63Ued6RwQ+UTPvQj3Av9QKx3xksmyYrDGRO/AVRXa9oNuzlYvLdmoLQ==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-image": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xterm-addon-image/-/xterm-addon-image-0.5.0.tgz", - "integrity": "sha512-bWXUBeDzhisYh0clVKx4JgQrZjpn+/QRMRwNsfnRpjCMhgmZ+SL3Bivktd7q03O4uKMMcAOe6bSmppwP9/um0Q==", - "peerDependencies": { - "xterm": "^5.2.0" - } - }, - "node_modules/xterm-addon-search": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/xterm-addon-search/-/xterm-addon-search-0.13.0.tgz", - "integrity": "sha512-sDUwG4CnqxUjSEFh676DlS3gsh3XYCzAvBPSvJ5OPgF3MRL3iHLPfsb06doRicLC2xXNpeG2cWk8x1qpESWJMA==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-serialize": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/xterm-addon-serialize/-/xterm-addon-serialize-0.11.0.tgz", - "integrity": "sha512-2CNDnmLdLkNWfsxNFkGsI5FE9W/BbsMzeOrbu59yNqH9L6k1gmL+Ab6VXxEp2NQUJSzaiqi6t0nFR5k5EDkVIg==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-unicode11": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/xterm-addon-unicode11/-/xterm-addon-unicode11-0.6.0.tgz", - "integrity": "sha512-5pkb8YoS/deRtNqQRw8t640mu+Ga8B2MG3RXGQu0bwgcfr8XiXIRI880TWM49ICAHhTmnOLPzIIBIjEnCq7k2A==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, - "node_modules/xterm-addon-webgl": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/xterm-addon-webgl/-/xterm-addon-webgl-0.16.0.tgz", - "integrity": "sha512-E8cq1AiqNOv0M/FghPT+zPAEnvIQRDbAbkb04rRYSxUym69elPWVJ4sv22FCLBqM/3LcrmBLl/pELnBebVFKgA==", - "peerDependencies": { - "xterm": "^5.0.0" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/demo/package.json b/demo/package.json index bd0d4803..c5d6634e 100644 --- a/demo/package.json +++ b/demo/package.json @@ -11,9 +11,11 @@ "start:debug": "vite --config vite.config.ts --debug --force", "build": "vite --config vite.config.ts build", "build:github": "vite --config vite.github-page.config.ts build && touch dist/.nojekyll", - "start:debugServer": "node --loader ts-node/esm src/debugServer.ts" + "start:debugServer": "node --loader ts-node/esm src/debugServer.ts", + "start:extHostServer": "vscode-ext-host-server --without-connection-token" }, "devDependencies": { + "@codingame/monaco-vscode-rollup-vsix-plugin": "file:../dist/rollup-vsix-plugin", "@types/dockerode": "^3.3.19", "@types/express": "^4.17.17", "@types/wicg-file-system-access": "^2020.9.6", @@ -27,20 +29,130 @@ "textSearchProvider" ], "dependencies": { + "@codingame/monaco-vscode-accessibility-service-override": "file:../dist/service-override-accessibility", + "@codingame/monaco-vscode-audio-cue-service-override": "file:../dist/service-override-audio-cue", + "@codingame/monaco-vscode-bat-default-extension": "file:../dist/default-extension-bat", + "@codingame/monaco-vscode-bulk-edit-service-override": "file:../dist/service-override-bulk-edit", + "@codingame/monaco-vscode-clojure-default-extension": "file:../dist/default-extension-clojure", + "@codingame/monaco-vscode-coffeescript-default-extension": "file:../dist/default-extension-coffeescript", + "@codingame/monaco-vscode-configuration-editing-default-extension": "file:../dist/default-extension-configuration-editing", + "@codingame/monaco-vscode-configuration-service-override": "file:../dist/service-override-configuration", + "@codingame/monaco-vscode-cpp-default-extension": "file:../dist/default-extension-cpp", + "@codingame/monaco-vscode-csharp-default-extension": "file:../dist/default-extension-csharp", + "@codingame/monaco-vscode-css-default-extension": "file:../dist/default-extension-css", + "@codingame/monaco-vscode-css-language-features-default-extension": "file:../dist/default-extension-css-language-features", + "@codingame/monaco-vscode-dart-default-extension": "file:../dist/default-extension-dart", + "@codingame/monaco-vscode-debug-auto-launch-default-extension": "file:../dist/default-extension-debug-auto-launch", + "@codingame/monaco-vscode-debug-server-ready-default-extension": "file:../dist/default-extension-debug-server-ready", + "@codingame/monaco-vscode-debug-service-override": "file:../dist/service-override-debug", + "@codingame/monaco-vscode-dialogs-service-override": "file:../dist/service-override-dialogs", + "@codingame/monaco-vscode-diff-default-extension": "file:../dist/default-extension-diff", + "@codingame/monaco-vscode-docker-default-extension": "file:../dist/default-extension-docker", + "@codingame/monaco-vscode-editor-service-override": "file:../dist/service-override-editor", + "@codingame/monaco-vscode-emmet-default-extension": "file:../dist/default-extension-emmet", + "@codingame/monaco-vscode-environment-service-override": "file:../dist/service-override-environment", + "@codingame/monaco-vscode-extension-editing-default-extension": "file:../dist/default-extension-extension-editing", + "@codingame/monaco-vscode-extensions-service-override": "file:../dist/service-override-extensions", + "@codingame/monaco-vscode-files-service-override": "file:../dist/service-override-files", + "@codingame/monaco-vscode-fsharp-default-extension": "file:../dist/default-extension-fsharp", + "@codingame/monaco-vscode-git-base-default-extension": "file:../dist/default-extension-git-base", + "@codingame/monaco-vscode-git-default-extension": "file:../dist/default-extension-git", + "@codingame/monaco-vscode-github-authentication-default-extension": "file:../dist/default-extension-github-authentication", + "@codingame/monaco-vscode-github-default-extension": "file:../dist/default-extension-github", + "@codingame/monaco-vscode-go-default-extension": "file:../dist/default-extension-go", + "@codingame/monaco-vscode-groovy-default-extension": "file:../dist/default-extension-groovy", + "@codingame/monaco-vscode-grunt-default-extension": "file:../dist/default-extension-grunt", + "@codingame/monaco-vscode-gulp-default-extension": "file:../dist/default-extension-gulp", + "@codingame/monaco-vscode-handlebars-default-extension": "file:../dist/default-extension-handlebars", + "@codingame/monaco-vscode-hlsl-default-extension": "file:../dist/default-extension-hlsl", + "@codingame/monaco-vscode-html-default-extension": "file:../dist/default-extension-html", + "@codingame/monaco-vscode-html-language-features-default-extension": "file:../dist/default-extension-html-language-features", + "@codingame/monaco-vscode-ini-default-extension": "file:../dist/default-extension-ini", + "@codingame/monaco-vscode-ipynb-default-extension": "file:../dist/default-extension-ipynb", + "@codingame/monaco-vscode-jake-default-extension": "file:../dist/default-extension-jake", + "@codingame/monaco-vscode-java-default-extension": "file:../dist/default-extension-java", + "@codingame/monaco-vscode-javascript-default-extension": "file:../dist/default-extension-javascript", + "@codingame/monaco-vscode-json-default-extension": "file:../dist/default-extension-json", + "@codingame/monaco-vscode-json-language-features-default-extension": "file:../dist/default-extension-json-language-features", + "@codingame/monaco-vscode-julia-default-extension": "file:../dist/default-extension-julia", + "@codingame/monaco-vscode-keybindings-service-override": "file:../dist/service-override-keybindings", + "@codingame/monaco-vscode-language-detection-worker-service-override": "file:../dist/service-override-language-detection-worker", + "@codingame/monaco-vscode-languages-service-override": "file:../dist/service-override-languages", + "@codingame/monaco-vscode-latex-default-extension": "file:../dist/default-extension-latex", + "@codingame/monaco-vscode-layout-service-override": "file:../dist/service-override-layout", + "@codingame/monaco-vscode-less-default-extension": "file:../dist/default-extension-less", + "@codingame/monaco-vscode-lifecycle-service-override": "file:../dist/service-override-lifecycle", + "@codingame/monaco-vscode-log-default-extension": "file:../dist/default-extension-log", + "@codingame/monaco-vscode-lua-default-extension": "file:../dist/default-extension-lua", + "@codingame/monaco-vscode-make-default-extension": "file:../dist/default-extension-make", + "@codingame/monaco-vscode-markdown-basics-default-extension": "file:../dist/default-extension-markdown-basics", + "@codingame/monaco-vscode-markdown-language-features-default-extension": "file:../dist/default-extension-markdown-language-features", + "@codingame/monaco-vscode-markdown-math-default-extension": "file:../dist/default-extension-markdown-math", + "@codingame/monaco-vscode-markers-service-override": "file:../dist/service-override-markers", + "@codingame/monaco-vscode-media-preview-default-extension": "file:../dist/default-extension-media-preview", + "@codingame/monaco-vscode-merge-conflict-default-extension": "file:../dist/default-extension-merge-conflict", + "@codingame/monaco-vscode-microsoft-authentication-default-extension": "file:../dist/default-extension-microsoft-authentication", + "@codingame/monaco-vscode-model-service-override": "file:../dist/service-override-model", + "@codingame/monaco-vscode-notebook-renderers-default-extension": "file:../dist/default-extension-notebook-renderers", + "@codingame/monaco-vscode-notifications-service-override": "file:../dist/service-override-notifications", + "@codingame/monaco-vscode-npm-default-extension": "file:../dist/default-extension-npm", + "@codingame/monaco-vscode-objective-c-default-extension": "file:../dist/default-extension-objective-c", + "@codingame/monaco-vscode-output-service-override": "file:../dist/service-override-output", + "@codingame/monaco-vscode-perl-default-extension": "file:../dist/default-extension-perl", + "@codingame/monaco-vscode-php-default-extension": "file:../dist/default-extension-php", + "@codingame/monaco-vscode-php-language-features-default-extension": "file:../dist/default-extension-php-language-features", + "@codingame/monaco-vscode-powershell-default-extension": "file:../dist/default-extension-powershell", + "@codingame/monaco-vscode-preferences-service-override": "file:../dist/service-override-preferences", + "@codingame/monaco-vscode-pug-default-extension": "file:../dist/default-extension-pug", + "@codingame/monaco-vscode-python-default-extension": "file:../dist/default-extension-python", + "@codingame/monaco-vscode-quickaccess-service-override": "file:../dist/service-override-quickaccess", + "@codingame/monaco-vscode-r-default-extension": "file:../dist/default-extension-r", + "@codingame/monaco-vscode-razor-default-extension": "file:../dist/default-extension-razor", + "@codingame/monaco-vscode-references-view-default-extension": "file:../dist/default-extension-references-view", + "@codingame/monaco-vscode-remote-agent-service-override": "file:../dist/service-override-remote-agent", + "@codingame/monaco-vscode-restructuredtext-default-extension": "file:../dist/default-extension-restructuredtext", + "@codingame/monaco-vscode-ruby-default-extension": "file:../dist/default-extension-ruby", + "@codingame/monaco-vscode-rust-default-extension": "file:../dist/default-extension-rust", + "@codingame/monaco-vscode-scss-default-extension": "file:../dist/default-extension-scss", + "@codingame/monaco-vscode-search-result-default-extension": "file:../dist/default-extension-search-result", + "@codingame/monaco-vscode-search-service-override": "file:../dist/service-override-search", + "@codingame/monaco-vscode-server": "file:../dist/server", + "@codingame/monaco-vscode-shaderlab-default-extension": "file:../dist/default-extension-shaderlab", + "@codingame/monaco-vscode-shellscript-default-extension": "file:../dist/default-extension-shellscript", + "@codingame/monaco-vscode-simple-browser-default-extension": "file:../dist/default-extension-simple-browser", + "@codingame/monaco-vscode-snippets-service-override": "file:../dist/service-override-snippets", + "@codingame/monaco-vscode-sql-default-extension": "file:../dist/default-extension-sql", + "@codingame/monaco-vscode-storage-service-override": "file:../dist/service-override-storage", + "@codingame/monaco-vscode-swift-default-extension": "file:../dist/default-extension-swift", + "@codingame/monaco-vscode-terminal-service-override": "file:../dist/service-override-terminal", + "@codingame/monaco-vscode-textmate-service-override": "file:../dist/service-override-textmate", + "@codingame/monaco-vscode-theme-abyss-default-extension": "file:../dist/default-extension-theme-abyss", + "@codingame/monaco-vscode-theme-defaults-default-extension": "file:../dist/default-extension-theme-defaults", + "@codingame/monaco-vscode-theme-kimbie-dark-default-extension": "file:../dist/default-extension-theme-kimbie-dark", + "@codingame/monaco-vscode-theme-monokai-default-extension": "file:../dist/default-extension-theme-monokai", + "@codingame/monaco-vscode-theme-monokai-dimmed-default-extension": "file:../dist/default-extension-theme-monokai-dimmed", + "@codingame/monaco-vscode-theme-quietlight-default-extension": "file:../dist/default-extension-theme-quietlight", + "@codingame/monaco-vscode-theme-red-default-extension": "file:../dist/default-extension-theme-red", + "@codingame/monaco-vscode-theme-service-override": "file:../dist/service-override-theme", + "@codingame/monaco-vscode-theme-seti-default-extension": "file:../dist/default-extension-theme-seti", + "@codingame/monaco-vscode-theme-solarized-dark-default-extension": "file:../dist/default-extension-theme-solarized-dark", + "@codingame/monaco-vscode-theme-solarized-light-default-extension": "file:../dist/default-extension-theme-solarized-light", + "@codingame/monaco-vscode-theme-tomorrow-night-blue-default-extension": "file:../dist/default-extension-theme-tomorrow-night-blue", + "@codingame/monaco-vscode-typescript-basics-default-extension": "file:../dist/default-extension-typescript-basics", + "@codingame/monaco-vscode-typescript-language-features-default-extension": "file:../dist/default-extension-typescript-language-features", + "@codingame/monaco-vscode-vb-default-extension": "file:../dist/default-extension-vb", + "@codingame/monaco-vscode-views-service-override": "file:../dist/service-override-views", + "@codingame/monaco-vscode-vscode-api-tests-default-extension": "file:../dist/default-extension-vscode-api-tests", + "@codingame/monaco-vscode-vscode-colorize-tests-default-extension": "file:../dist/default-extension-vscode-colorize-tests", + "@codingame/monaco-vscode-vscode-test-resolver-default-extension": "file:../dist/default-extension-vscode-test-resolver", + "@codingame/monaco-vscode-xml-default-extension": "file:../dist/default-extension-xml", + "@codingame/monaco-vscode-yaml-default-extension": "file:../dist/default-extension-yaml", "ansi-colors": "^4.1.3", "dockerode": "^3.3.5", "express": "^4.18.2", "monaco-editor": "^0.43.0", - "vscode": "file:../", - "vscode-oniguruma": "~2.0.0", - "ws": "^8.14.1", - "xterm": "5.3.0", - "xterm-addon-canvas": "0.5.0", - "xterm-addon-image": "0.5.0", - "xterm-addon-search": "0.13.0", - "xterm-addon-serialize": "0.11.0", - "xterm-addon-unicode11": "0.6.0", - "xterm-addon-webgl": "0.16.0" + "vscode": "file:../dist/main", + "ws": "^8.14.1" }, "volta": { "node": "18.18.0", diff --git a/demo/src/features/customView.ts b/demo/src/features/customView.ts index 86f04e18..ae439b53 100644 --- a/demo/src/features/customView.ts +++ b/demo/src/features/customView.ts @@ -1,6 +1,6 @@ import { IDialogService } from 'vscode/services' -import { registerCustomView, registerEditorPane, ViewContainerLocation } from 'vscode/service-override/views' -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js' +import { registerCustomView, registerEditorPane, ViewContainerLocation } from '@codingame/monaco-vscode-views-service-override' +import * as monaco from 'monaco-editor' import iconUrl from '../Visual_Studio_Code_1.35_icon.svg?url' registerCustomView({ diff --git a/demo/src/features/editor.ts b/demo/src/features/editor.ts index 25752faa..08ba9b75 100644 --- a/demo/src/features/editor.ts +++ b/demo/src/features/editor.ts @@ -1,5 +1,5 @@ -import { IResolvedTextEditorModel, IReference, OpenEditor } from 'vscode/service-override/views' -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js' +import { IResolvedTextEditorModel, IReference, OpenEditor } from '@codingame/monaco-vscode-views-service-override' +import * as monaco from 'monaco-editor' import { createConfiguredEditor } from 'vscode/monaco' let currentEditor: ({ diff --git a/demo/src/features/filesystem.ts b/demo/src/features/filesystem.ts index 94177c44..5993d5ba 100644 --- a/demo/src/features/filesystem.ts +++ b/demo/src/features/filesystem.ts @@ -1,4 +1,4 @@ -import { RegisteredFileSystemProvider, registerFileSystemOverlay, RegisteredReadOnlyFile, RegisteredMemoryFile } from 'vscode/service-override/files' +import { RegisteredFileSystemProvider, registerFileSystemOverlay, RegisteredReadOnlyFile, RegisteredMemoryFile } from '@codingame/monaco-vscode-files-service-override' import * as vscode from 'vscode' const fileSystemProvider = new RegisteredFileSystemProvider(false) diff --git a/demo/src/features/intellisense.ts b/demo/src/features/intellisense.ts index 407869d4..5aab5abe 100644 --- a/demo/src/features/intellisense.ts +++ b/demo/src/features/intellisense.ts @@ -1,10 +1,10 @@ import * as vscode from 'vscode' import { onExtHostInitialized } from 'vscode/extensions' -import 'vscode/default-extensions/json-language-features' -import 'vscode/default-extensions/typescript-language-features' -import 'vscode/default-extensions/html-language-features' -import 'vscode/default-extensions/css-language-features' -import 'vscode/default-extensions/markdown-language-features' +import '@codingame/monaco-vscode-json-language-features-default-extension' +import '@codingame/monaco-vscode-typescript-language-features-default-extension' +import '@codingame/monaco-vscode-html-language-features-default-extension' +import '@codingame/monaco-vscode-css-language-features-default-extension' +import '@codingame/monaco-vscode-markdown-language-features-default-extension' await new Promise(resolve => onExtHostInitialized(resolve)) diff --git a/demo/src/features/remoteExtension.ts b/demo/src/features/remoteExtension.ts new file mode 100644 index 00000000..7f58805b --- /dev/null +++ b/demo/src/features/remoteExtension.ts @@ -0,0 +1,14 @@ +import { ExtensionHostKind, registerExtension } from 'vscode/extensions' +import manifest from './remoteExtensionExample/package.json' + +declare global { + interface Window { + rootDirectory?: string + } +} + +if (window.rootDirectory != null) { + registerExtension(manifest, ExtensionHostKind.Remote, { + path: `${window.rootDirectory}/src/features/remoteExtensionExample/` + }) +} diff --git a/demo/src/features/remoteExtensionExample/main.js b/demo/src/features/remoteExtensionExample/main.js new file mode 100644 index 00000000..d6041de3 --- /dev/null +++ b/demo/src/features/remoteExtensionExample/main.js @@ -0,0 +1,8 @@ +const vscode = require('vscode') +const os = require("os") + +void vscode.window.showInformationMessage('Hello', { + detail: `Hello from remote extension running from ${os.hostname()}`, + modal: true +}) + diff --git a/demo/src/features/remoteExtensionExample/package.json b/demo/src/features/remoteExtensionExample/package.json new file mode 100644 index 00000000..29bc36e1 --- /dev/null +++ b/demo/src/features/remoteExtensionExample/package.json @@ -0,0 +1,10 @@ +{ + "name": "remote_extension_example", + "publisher": "codingame", + "version": "1.0.0", + "activationEvents": ["*"], + "engines": { + "vscode": "*" + }, + "main": "./main.js" + } \ No newline at end of file diff --git a/demo/src/features/search.ts b/demo/src/features/search.ts index f664e7d3..94752d52 100644 --- a/demo/src/features/search.ts +++ b/demo/src/features/search.ts @@ -1,7 +1,7 @@ /// /// import { ExtensionHostKind, registerExtension } from 'vscode/extensions' -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js' +import * as monaco from 'monaco-editor' const { getApi } = registerExtension({ name: 'searchProvider', diff --git a/demo/src/features/terminal.ts b/demo/src/features/terminal.ts index b5cb75b7..0f760d35 100644 --- a/demo/src/features/terminal.ts +++ b/demo/src/features/terminal.ts @@ -1,4 +1,4 @@ -import { ITerminalChildProcess, SimpleTerminalBackend, SimpleTerminalProcess } from 'vscode/service-override/terminal' +import { ITerminalChildProcess, SimpleTerminalBackend, SimpleTerminalProcess } from '@codingame/monaco-vscode-terminal-service-override' import ansiColors from 'ansi-colors' import * as vscode from 'vscode' diff --git a/demo/src/main.ts b/demo/src/main.ts index b3136e8b..39febbe4 100644 --- a/demo/src/main.ts +++ b/demo/src/main.ts @@ -1,10 +1,10 @@ import './style.css' import * as monaco from 'monaco-editor' import { createConfiguredEditor, createModelReference } from 'vscode/monaco' -import { registerFileSystemOverlay, HTMLFileSystemProvider } from 'vscode/service-override/files' +import { registerFileSystemOverlay, HTMLFileSystemProvider } from '@codingame/monaco-vscode-files-service-override' import * as vscode from 'vscode' import { ILogService, StandaloneServices, IPreferencesService, IEditorService, IDialogService, getService } from 'vscode/services' -import { ConfirmResult, Parts, isPartVisibile, setPartVisibility } from 'vscode/service-override/views' +import { ConfirmResult, Parts, isPartVisibile, setPartVisibility } from '@codingame/monaco-vscode-views-service-override' import { clearStorage } from './setup' import { CustomEditorInput } from './features/customView' import './features/debugger' @@ -14,48 +14,49 @@ import './features/filesystem' import './features/intellisense' import './features/notifications' import './features/terminal' - -import 'vscode/default-extensions/clojure' -import 'vscode/default-extensions/coffeescript' -import 'vscode/default-extensions/cpp' -import 'vscode/default-extensions/csharp' -import 'vscode/default-extensions/css' -import 'vscode/default-extensions/diff' -import 'vscode/default-extensions/fsharp' -import 'vscode/default-extensions/go' -import 'vscode/default-extensions/groovy' -import 'vscode/default-extensions/html' -import 'vscode/default-extensions/java' -import 'vscode/default-extensions/javascript' -import 'vscode/default-extensions/json' -import 'vscode/default-extensions/julia' -import 'vscode/default-extensions/lua' -import 'vscode/default-extensions/markdown-basics' -import 'vscode/default-extensions/objective-c' -import 'vscode/default-extensions/perl' -import 'vscode/default-extensions/php' -import 'vscode/default-extensions/powershell' -import 'vscode/default-extensions/python' -import 'vscode/default-extensions/r' -import 'vscode/default-extensions/ruby' -import 'vscode/default-extensions/rust' -import 'vscode/default-extensions/scss' -import 'vscode/default-extensions/shellscript' -import 'vscode/default-extensions/sql' -import 'vscode/default-extensions/swift' -import 'vscode/default-extensions/typescript-basics' -import 'vscode/default-extensions/vb' -import 'vscode/default-extensions/xml' -import 'vscode/default-extensions/yaml' - -import 'vscode/default-extensions/theme-defaults' -import 'vscode/default-extensions/theme-seti' -import 'vscode/default-extensions/references-view' -import 'vscode/default-extensions/search-result' -import 'vscode/default-extensions/configuration-editing' -import 'vscode/default-extensions/markdown-math' -import 'vscode/default-extensions/npm' -import 'vscode/default-extensions/media-preview' +import './features/remoteExtension' + +import '@codingame/monaco-vscode-clojure-default-extension' +import '@codingame/monaco-vscode-coffeescript-default-extension' +import '@codingame/monaco-vscode-cpp-default-extension' +import '@codingame/monaco-vscode-csharp-default-extension' +import '@codingame/monaco-vscode-css-default-extension' +import '@codingame/monaco-vscode-diff-default-extension' +import '@codingame/monaco-vscode-fsharp-default-extension' +import '@codingame/monaco-vscode-go-default-extension' +import '@codingame/monaco-vscode-groovy-default-extension' +import '@codingame/monaco-vscode-html-default-extension' +import '@codingame/monaco-vscode-java-default-extension' +import '@codingame/monaco-vscode-javascript-default-extension' +import '@codingame/monaco-vscode-json-default-extension' +import '@codingame/monaco-vscode-julia-default-extension' +import '@codingame/monaco-vscode-lua-default-extension' +import '@codingame/monaco-vscode-markdown-basics-default-extension' +import '@codingame/monaco-vscode-objective-c-default-extension' +import '@codingame/monaco-vscode-perl-default-extension' +import '@codingame/monaco-vscode-php-default-extension' +import '@codingame/monaco-vscode-powershell-default-extension' +import '@codingame/monaco-vscode-python-default-extension' +import '@codingame/monaco-vscode-r-default-extension' +import '@codingame/monaco-vscode-ruby-default-extension' +import '@codingame/monaco-vscode-rust-default-extension' +import '@codingame/monaco-vscode-scss-default-extension' +import '@codingame/monaco-vscode-shellscript-default-extension' +import '@codingame/monaco-vscode-sql-default-extension' +import '@codingame/monaco-vscode-swift-default-extension' +import '@codingame/monaco-vscode-typescript-basics-default-extension' +import '@codingame/monaco-vscode-vb-default-extension' +import '@codingame/monaco-vscode-xml-default-extension' +import '@codingame/monaco-vscode-yaml-default-extension' + +import '@codingame/monaco-vscode-theme-defaults-default-extension' +import '@codingame/monaco-vscode-theme-seti-default-extension' +import '@codingame/monaco-vscode-references-view-default-extension' +import '@codingame/monaco-vscode-search-result-default-extension' +import '@codingame/monaco-vscode-configuration-editing-default-extension' +import '@codingame/monaco-vscode-markdown-math-default-extension' +import '@codingame/monaco-vscode-npm-default-extension' +import '@codingame/monaco-vscode-media-preview-default-extension' const modelRef = await createModelReference(monaco.Uri.file('/tmp/test.js'), `// import anotherfile let variable = 1 diff --git a/demo/src/setup.ts b/demo/src/setup.ts index f6d7bfc8..329b398c 100644 --- a/demo/src/setup.ts +++ b/demo/src/setup.ts @@ -1,39 +1,42 @@ import { ILogService, IStorageService, LogLevel, StandaloneServices, getService, initialize as initializeMonacoService } from 'vscode/services' import { initialize as initializeVscodeExtensions } from 'vscode/extensions' -import getModelServiceOverride from 'vscode/service-override/model' -import getNotificationServiceOverride from 'vscode/service-override/notifications' -import getDialogsServiceOverride from 'vscode/service-override/dialogs' -import getConfigurationServiceOverride from 'vscode/service-override/configuration' -import getKeybindingsServiceOverride from 'vscode/service-override/keybindings' -import getTextmateServiceOverride from 'vscode/service-override/textmate' -import getThemeServiceOverride from 'vscode/service-override/theme' -import getLanguagesServiceOverride from 'vscode/service-override/languages' -import getAudioCueServiceOverride from 'vscode/service-override/audioCue' +import getModelServiceOverride from '@codingame/monaco-vscode-model-service-override' +import getNotificationServiceOverride from '@codingame/monaco-vscode-notifications-service-override' +import getDialogsServiceOverride from '@codingame/monaco-vscode-dialogs-service-override' +import getConfigurationServiceOverride from '@codingame/monaco-vscode-configuration-service-override' +import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override' +import getTextmateServiceOverride from '@codingame/monaco-vscode-textmate-service-override' +import getThemeServiceOverride from '@codingame/monaco-vscode-theme-service-override' +import getLanguagesServiceOverride from '@codingame/monaco-vscode-languages-service-override' +import getAudioCueServiceOverride from '@codingame/monaco-vscode-audio-cue-service-override' import getViewsServiceOverride, { isEditorPartVisible, Parts, onPartVisibilityChange, isPartVisibile, attachPart -} from 'vscode/service-override/views' -import getDebugServiceOverride from 'vscode/service-override/debug' -import getPreferencesServiceOverride from 'vscode/service-override/preferences' -import getSnippetServiceOverride from 'vscode/service-override/snippets' -import getQuickAccessServiceOverride from 'vscode/service-override/quickaccess' -import getOutputServiceOverride from 'vscode/service-override/output' -import getTerminalServiceOverride from 'vscode/service-override/terminal' -import getSearchServiceOverride from 'vscode/service-override/search' -import getMarkersServiceOverride from 'vscode/service-override/markers' -import getAccessibilityServiceOverride from 'vscode/service-override/accessibility' -import getLanguageDetectionWorkerServiceOverride from 'vscode/service-override/languageDetectionWorker' -import getStorageServiceOverride, { BrowserStorageService } from 'vscode/service-override/storage' -import getExtensionServiceOverride from 'vscode/service-override/extensions' +} from '@codingame/monaco-vscode-views-service-override' +import getDebugServiceOverride from '@codingame/monaco-vscode-debug-service-override' +import getPreferencesServiceOverride from '@codingame/monaco-vscode-preferences-service-override' +import getSnippetServiceOverride from '@codingame/monaco-vscode-snippets-service-override' +import getQuickAccessServiceOverride from '@codingame/monaco-vscode-quickaccess-service-override' +import getOutputServiceOverride from '@codingame/monaco-vscode-output-service-override' +import getTerminalServiceOverride from '@codingame/monaco-vscode-terminal-service-override' +import getSearchServiceOverride from '@codingame/monaco-vscode-search-service-override' +import getMarkersServiceOverride from '@codingame/monaco-vscode-markers-service-override' +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 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' import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker' -import TextMateWorker from 'vscode/workers/textMate.worker?worker' -import OutputLinkComputerWorker from 'vscode/workers/outputLinkComputer.worker?worker' +import TextMateWorker from '@codingame/monaco-vscode-textmate-service-override/worker?worker' +import OutputLinkComputerWorker from '@codingame/monaco-vscode-output-service-override/worker?worker' import ExtensionHostWorker from 'vscode/workers/extensionHost.worker?worker' -import LanguageDetectionWorker from 'vscode/workers/languageDetection.worker?worker' -import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js' +import LanguageDetectionWorker from '@codingame/monaco-vscode-language-detection-worker-service-override/worker?worker' +import * as monaco from 'monaco-editor' import { TerminalBackend } from './features/terminal' import { openNewCodeEditor } from './features/editor' import { toCrossOriginWorker, toWorkerConfig } from './tools/workers' @@ -56,13 +59,20 @@ window.MonacoEnvironment = { } } +const params = new URL(document.location.href).searchParams +const remoteAuthority = params.get('remoteAuthority') ?? undefined +const connectionToken = params.get('connectionToken') ?? undefined +const remotePath = remoteAuthority != null ? params.get('remotePath') ?? undefined : undefined + // Override services await initializeMonacoService({ ...getExtensionServiceOverride(toWorkerConfig(ExtensionHostWorker)), ...getModelServiceOverride(), ...getNotificationServiceOverride(), ...getDialogsServiceOverride(), - ...getConfigurationServiceOverride(monaco.Uri.file('/tmp')), + ...getConfigurationServiceOverride(remotePath == null + ? monaco.Uri.file('/tmp') + : { id: 'remote-workspace', uri: monaco.Uri.from({ scheme: 'vscode-remote', path: remotePath, authority: remoteAuthority }) }), ...getKeybindingsServiceOverride(), ...getTextmateServiceOverride(), ...getThemeServiceOverride(), @@ -74,7 +84,7 @@ await initializeMonacoService({ ...getSnippetServiceOverride(), ...getQuickAccessServiceOverride({ isKeybindingConfigurationVisible: isEditorPartVisible, - shouldUseGlobalPicker: isEditorPartVisible + shouldUseGlobalPicker: (_editor, isStandalone) => !isStandalone && isEditorPartVisible() }), ...getOutputServiceOverride(), ...getTerminalServiceOverride(new TerminalBackend()), @@ -82,7 +92,12 @@ await initializeMonacoService({ ...getMarkersServiceOverride(), ...getAccessibilityServiceOverride(), ...getLanguageDetectionWorkerServiceOverride(), - ...getStorageServiceOverride() + ...getStorageServiceOverride(), + ...getRemoteAgentServiceOverride(connectionToken), + ...getLifecycleServiceOverride(), + ...getEnvironmentServiceOverride({ + remoteAuthority + }) }) StandaloneServices.get(ILogService).setLevel(LogLevel.Off) diff --git a/demo/src/tools/workers.ts b/demo/src/tools/workers.ts index ec498d7f..1d60e47d 100644 --- a/demo/src/tools/workers.ts +++ b/demo/src/tools/workers.ts @@ -1,4 +1,4 @@ -import type { WorkerConfig } from 'vscode/service-override/extensions' +import type { WorkerConfig } from '@codingame/monaco-vscode-extensions-service-override' /** * Cross origin workers don't work diff --git a/demo/tsconfig.json b/demo/tsconfig.json index edb16cd4..1d7f1e98 100644 --- a/demo/tsconfig.json +++ b/demo/tsconfig.json @@ -13,7 +13,11 @@ "noEmit": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noImplicitReturns": true + "noImplicitReturns": true, + "baseUrl": ".", + "paths": { + "vscode/*": ["../dist/main/*"] + } }, "include": ["src"] } diff --git a/demo/vite.config.ts b/demo/vite.config.ts index 7fef3dec..84a34391 100644 --- a/demo/vite.config.ts +++ b/demo/vite.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from 'vite' import * as fs from 'fs' import url from 'url' +import path from 'path' const cdnDomain = 'http://127.0.0.2:5173' @@ -21,32 +22,55 @@ export default defineConfig({ next() }) } + }, + { + name: 'force-prevent-transform-assets', + apply: 'serve', + configureServer (server) { + return () => { + server.middlewares.use(async (req, res, next) => { + if (req.originalUrl != null) { + const pathname = new URL(req.originalUrl, import.meta.url).pathname + if (pathname.endsWith('.html')) { + res.setHeader('Content-Type', 'text/html') + res.writeHead(200) + res.write(fs.readFileSync(path.join(__dirname, pathname))) + res.end() + } + } + + next() + }) + } + } } ], optimizeDeps: { // This is require because vscode is a local dependency // and vite doesn't want to optimize it and the number of modules makes chrome hang include: [ - 'vscode', 'vscode/extensions', 'vscode/services', 'vscode/monaco', 'vscode/service-override/model', 'vscode/service-override/editor', - 'vscode/service-override/extensions', 'vscode/service-override/notifications', 'vscode/service-override/bulkEdit', 'vscode/service-override/dialogs', 'vscode/service-override/configuration', - 'vscode/service-override/keybindings', 'vscode/service-override/textmate', 'vscode/service-override/theme', 'vscode/service-override/languages', - 'vscode/service-override/audioCue', 'vscode/service-override/views', 'vscode/service-override/quickaccess', 'vscode/service-override/debug', - 'vscode/service-override/preferences', 'vscode/service-override/snippets', 'vscode/service-override/files', 'vscode/service-override/output', - 'vscode/service-override/terminal', 'vscode/service-override/search', 'vscode/service-override/markers', 'vscode/service-override/accessibility', 'vscode/service-override/storage', - 'vscode/service-override/languageDetectionWorker', 'vscode/default-extensions/clojure', 'vscode/default-extensions/coffeescript', 'vscode/default-extensions/cpp', - 'vscode/default-extensions/csharp', 'vscode/default-extensions/css', 'vscode/default-extensions/diff', 'vscode/default-extensions/fsharp', 'vscode/default-extensions/go', - 'vscode/default-extensions/groovy', 'vscode/default-extensions/html', 'vscode/default-extensions/java', 'vscode/default-extensions/javascript', - 'vscode/default-extensions/json', 'vscode/default-extensions/julia', 'vscode/default-extensions/lua', 'vscode/default-extensions/markdown-basics', - 'vscode/default-extensions/objective-c', 'vscode/default-extensions/perl', 'vscode/default-extensions/php', 'vscode/default-extensions/powershell', - 'vscode/default-extensions/python', 'vscode/default-extensions/r', 'vscode/default-extensions/ruby', 'vscode/default-extensions/rust', - 'vscode/default-extensions/scss', 'vscode/default-extensions/shellscript', 'vscode/default-extensions/sql', 'vscode/default-extensions/swift', - 'vscode/default-extensions/typescript-basics', 'vscode/default-extensions/typescript-language-features', 'vscode/default-extensions/vb', - 'vscode/default-extensions/xml', 'vscode/default-extensions/yaml', 'vscode/default-extensions/theme-defaults', 'vscode/default-extensions/theme-seti', - 'vscode/default-extensions/references-view', 'vscode/default-extensions/search-result', 'vscode/default-extensions/markdown-language-features', - 'vscode/default-extensions/json-language-features', 'vscode/default-extensions/css-language-features', - 'vscode/default-extensions/npm', 'vscode/default-extensions/css', 'vscode/default-extensions/markdown-basics', 'vscode/default-extensions/html', - 'vscode/default-extensions/html-language-features', 'vscode/default-extensions/configuration-editing', 'vscode/default-extensions/media-preview', 'vscode/default-extensions/markdown-math', - 'vscode/workers/extensionHost.worker', 'vscode/workers/languageDetection.worker' + 'vscode', 'vscode/extensions', 'vscode/services', 'vscode/monaco', '@codingame/monaco-vscode-model-service-override', '@codingame/monaco-vscode-editor-service-override', + '@codingame/monaco-vscode-extensions-service-override', '@codingame/monaco-vscode-notifications-service-override', '@codingame/monaco-vscode-bulk-edit-service-override', '@codingame/monaco-vscode-dialogs-service-override', '@codingame/monaco-vscode-configuration-service-override', + '@codingame/monaco-vscode-keybindings-service-override', '@codingame/monaco-vscode-textmate-service-override', '@codingame/monaco-vscode-theme-service-override', '@codingame/monaco-vscode-languages-service-override', + '@codingame/monaco-vscode-audio-cue-service-override', '@codingame/monaco-vscode-views-service-override', '@codingame/monaco-vscode-quickaccess-service-override', '@codingame/monaco-vscode-debug-service-override', + '@codingame/monaco-vscode-preferences-service-override', '@codingame/monaco-vscode-snippets-service-override', '@codingame/monaco-vscode-files-service-override', '@codingame/monaco-vscode-output-service-override', + '@codingame/monaco-vscode-terminal-service-override', '@codingame/monaco-vscode-search-service-override', '@codingame/monaco-vscode-markers-service-override', '@codingame/monaco-vscode-accessibility-service-override', '@codingame/monaco-vscode-storage-service-override', + '@codingame/monaco-vscode-language-detection-worker-service-override', '@codingame/monaco-vscode-remote-agent-service-override', '@codingame/monaco-vscode-environment-service-override', '@codingame/monaco-vscode-lifecycle-service-override', + '@codingame/monaco-vscode-clojure-default-extension', '@codingame/monaco-vscode-coffeescript-default-extension', '@codingame/monaco-vscode-cpp-default-extension', + '@codingame/monaco-vscode-csharp-default-extension', '@codingame/monaco-vscode-css-default-extension', '@codingame/monaco-vscode-diff-default-extension', '@codingame/monaco-vscode-fsharp-default-extension', '@codingame/monaco-vscode-go-default-extension', + '@codingame/monaco-vscode-groovy-default-extension', '@codingame/monaco-vscode-html-default-extension', '@codingame/monaco-vscode-java-default-extension', '@codingame/monaco-vscode-javascript-default-extension', + '@codingame/monaco-vscode-json-default-extension', '@codingame/monaco-vscode-julia-default-extension', '@codingame/monaco-vscode-lua-default-extension', '@codingame/monaco-vscode-markdown-basics-default-extension', + '@codingame/monaco-vscode-objective-c-default-extension', '@codingame/monaco-vscode-perl-default-extension', '@codingame/monaco-vscode-php-default-extension', '@codingame/monaco-vscode-powershell-default-extension', + '@codingame/monaco-vscode-python-default-extension', '@codingame/monaco-vscode-r-default-extension', '@codingame/monaco-vscode-ruby-default-extension', '@codingame/monaco-vscode-rust-default-extension', + '@codingame/monaco-vscode-scss-default-extension', '@codingame/monaco-vscode-shellscript-default-extension', '@codingame/monaco-vscode-sql-default-extension', '@codingame/monaco-vscode-swift-default-extension', + '@codingame/monaco-vscode-typescript-basics-default-extension', '@codingame/monaco-vscode-vb-default-extension', '@codingame/monaco-vscode-xml-default-extension', '@codingame/monaco-vscode-yaml-default-extension', + '@codingame/monaco-vscode-theme-defaults-default-extension', '@codingame/monaco-vscode-theme-seti-default-extension', + '@codingame/monaco-vscode-references-view-default-extension', '@codingame/monaco-vscode-typescript-basics-default-extension', '@codingame/monaco-vscode-search-result-default-extension', + '@codingame/monaco-vscode-typescript-language-features-default-extension', '@codingame/monaco-vscode-markdown-language-features-default-extension', + '@codingame/monaco-vscode-json-language-features-default-extension', '@codingame/monaco-vscode-css-language-features-default-extension', + '@codingame/monaco-vscode-npm-default-extension', '@codingame/monaco-vscode-css-default-extension', '@codingame/monaco-vscode-markdown-basics-default-extension', '@codingame/monaco-vscode-html-default-extension', + '@codingame/monaco-vscode-html-language-features-default-extension', '@codingame/monaco-vscode-configuration-editing-default-extension', '@codingame/monaco-vscode-media-preview-default-extension', '@codingame/monaco-vscode-markdown-math-default-extension', + 'vscode/workers/textmate.worker' ], esbuildOptions: { plugins: [{ @@ -85,7 +109,10 @@ export default defineConfig({ allow: ['../'] // allow to load codicon.ttf from monaco-editor in the parent folder } }, + define: { + rootDirectory: JSON.stringify(__dirname) + }, resolve: { - dedupe: ['monaco-editor'] + dedupe: ['monaco-editor', 'vscode'] } }) diff --git a/docs/vscode_monaco_upgrade.md b/docs/vscode_monaco_upgrade.md index 463a1856..4568c02b 100644 --- a/docs/vscode_monaco_upgrade.md +++ b/docs/vscode_monaco_upgrade.md @@ -18,7 +18,6 @@ ## monaco-vscode-api repository - Update `monaco-editor` and other dependencies and update to the new `vscodeRef` from above - - Run `npx @vscode/dts dev` afterwards to update the `vscode.proposed.xxx.d.ts` files. It fixes potential errors in `api.ts` - Wait for the new vscode version to be downloaded and built - Fix errors, adapt code, build, include the `vscode.patch` into this commit - Do not hesitate to run the eslint autofix, it gets rid of the majority of your errors diff --git a/monaco-treemending.js b/monaco-treemending.js deleted file mode 100755 index 23826e32..00000000 --- a/monaco-treemending.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -import './dist/monaco-treemending.js' diff --git a/package-lock.json b/package-lock.json index 0a034980..27bae26a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,38 @@ "name": "@codingame/monaco-vscode-api", "version": "0.0.0-semantic-release", "license": "MIT", + "dependencies": { + "@microsoft/1ds-core-js": "^3.2.13", + "@microsoft/1ds-post-js": "^3.2.13", + "@parcel/watcher": "^2.3.0", + "@vscode/proxy-agent": "^0.17.2", + "@vscode/ripgrep": "^1.15.5", + "@vscode/spdlog": "^0.13.11", + "@vscode/vscode-languagedetection": "^1.0.22", + "@vscode/windows-process-tree": "^0.5.0", + "cookie": "^0.5.0", + "kerberos": "^2.0.2", + "keytar": "^7.9.0", + "mime-types": "^2.1.35", + "monaco-editor": "0.43.0", + "node-pty": "^1.0.0", + "vscode-oniguruma": "^2.0.0", + "vscode-regexpp": "^3.1.0", + "vscode-textmate": "^9.0.0", + "xterm": "5.2.1", + "xterm-addon-canvas": "0.4.0", + "xterm-addon-image": "0.4.1", + "xterm-addon-search": "0.12.0", + "xterm-addon-serialize": "0.10.0", + "xterm-addon-unicode11": "0.5.0", + "xterm-addon-webgl": "0.15.0", + "xterm-headless": "5.3.0", + "yauzl": "^2.10.0", + "yazl": "^2.5.1" + }, "bin": { - "monaco-treemending": "monaco-treemending.js" + "monaco-treemending": "monaco-treemending.js", + "vscode-ext-host-server": "ext-host-server.js" }, "devDependencies": { "@babel/core": "^7.22.17", @@ -22,7 +52,6 @@ "@octokit/rest": "^20.0.1", "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-dynamic-import-vars": "^2.0.5", - "@rollup/plugin-inject": "^5.0.3", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-replace": "^5.0.2", @@ -46,34 +75,26 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-unused-imports": "^2.0.0", "fast-glob": "^3.3.1", + "graceful-fs": "^4.2.11", + "is-builtin-module": "^3.2.1", "js-cleanup": "^1.2.0", "jschardet": "^3.0.0", - "mime-types": "^2.1.35", + "package-json": "^8.1.1", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", "patch-package": "^8.0.0", "recast": "^0.23.4", "rollup": "^3.29.1", + "rollup-plugin-copy": "^3.5.0", "rollup-plugin-dts": "^6.0.2", "rollup-plugin-styles": "^4.0.0", "semver": "^7.5.4", "ts-morph": "^19.0.0", "ts-node": "^10.9.1", + "type-fest": "^4.3.1", "typescript": "5.2.2", + "xterm-headless": "^5.3.0", "zx": "^7.2.3" - }, - "peerDependencies": { - "@vscode/vscode-languagedetection": "^1.0.22", - "monaco-editor": "0.43.0", - "vscode-oniguruma": "^2.0.0", - "vscode-textmate": "^9.0.0", - "xterm": "5.3.0", - "xterm-addon-canvas": "0.5.0", - "xterm-addon-image": "0.5.0", - "xterm-addon-search": "0.13.0", - "xterm-addon-serialize": "0.11.0", - "xterm-addon-unicode11": "0.6.0", - "xterm-addon-webgl": "0.16.0", - "xterm-headless": "5.3.0", - "yauzl": "^2.10.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -2003,6 +2024,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { "version": "8.49.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", @@ -2099,6 +2132,48 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@microsoft/1ds-core-js": { + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-3.2.14.tgz", + "integrity": "sha512-UW1YrUTPuvXmAarzqVSeYU1vwTzxCCZdd+ANcf/SDkxm53mCCgxSodVP9yrxtGOQdKhE9Y3rZdETRSvBBdKdXg==", + "dependencies": { + "@microsoft/applicationinsights-core-js": "2.8.16", + "@microsoft/applicationinsights-shims": "^2.0.2", + "@microsoft/dynamicproto-js": "^1.1.7" + } + }, + "node_modules/@microsoft/1ds-post-js": { + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-3.2.14.tgz", + "integrity": "sha512-pXTfyW8SI6LS2r92W2Zaxl/YjJCHTEX9ej/GdabtlMAikGGgAlEsMlk5a4SJ3BI3K8sDUSGi+oTmJ1FtVes+bQ==", + "dependencies": { + "@microsoft/1ds-core-js": "3.2.14", + "@microsoft/applicationinsights-shims": "^2.0.2", + "@microsoft/dynamicproto-js": "^1.1.7" + } + }, + "node_modules/@microsoft/applicationinsights-core-js": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-2.8.16.tgz", + "integrity": "sha512-pO5rR6UuiPymiHFj8XxNXhQgBSTvyHWygf+gdEVDh0xpUXYFO99bZe0Ux0D0HqYqVkJrRfXzL1Ocru6+S0x53Q==", + "dependencies": { + "@microsoft/applicationinsights-shims": "2.0.2", + "@microsoft/dynamicproto-js": "^1.1.9" + }, + "peerDependencies": { + "tslib": "*" + } + }, + "node_modules/@microsoft/applicationinsights-shims": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-2.0.2.tgz", + "integrity": "sha512-PoHEgsnmcqruLNHZ/amACqdJ6YYQpED0KSRe6J7gIJTtpZC1FfFU9b1fmDKDKtFoUSrPzEh1qzO3kmRZP0betg==" + }, + "node_modules/@microsoft/dynamicproto-js": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-1.1.9.tgz", + "integrity": "sha512-n1VPsljTSkthsAFYdiWfC+DKzK2WwcRp83Y1YAqdX552BstvsDjft9YXppjUzp11BPsapDoO1LDgrDB0XVsfNQ==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2291,6 +2366,118 @@ "@octokit/openapi-types": "^18.0.0" } }, + "node_modules/@parcel/watcher": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", + "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.3.0", + "@parcel/watcher-darwin-arm64": "2.3.0", + "@parcel/watcher-darwin-x64": "2.3.0", + "@parcel/watcher-freebsd-x64": "2.3.0", + "@parcel/watcher-linux-arm-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-glibc": "2.3.0", + "@parcel/watcher-linux-arm64-musl": "2.3.0", + "@parcel/watcher-linux-x64-glibc": "2.3.0", + "@parcel/watcher-linux-x64-musl": "2.3.0", + "@parcel/watcher-win32-arm64": "2.3.0", + "@parcel/watcher-win32-ia32": "2.3.0", + "@parcel/watcher-win32-x64": "2.3.0" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", + "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dev": true, + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@rollup/plugin-commonjs": { "version": "25.0.4", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz", @@ -2340,28 +2527,6 @@ } } }, - "node_modules/@rollup/plugin-inject": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz", - "integrity": "sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "estree-walker": "^2.0.2", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/plugin-json": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", @@ -2476,6 +2641,38 @@ } } }, + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tootallnate/once": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-3.0.0.tgz", + "integrity": "sha512-OAdBVB7rlwvLD+DiecSAyVKzKVmSfXbouCyM5I6wHGi4MGXIyFqErg1IvyJ7PI1e+GYZuZh7cCHV/c4LA8SKMw==", + "engines": { + "node": ">= 10" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -2568,15 +2765,30 @@ "dev": true }, "node_modules/@types/fs-extra": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", - "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.3.tgz", + "integrity": "sha512-7IdV01N0u/CaVO0fuY1YmEg14HQN3+EW8mpNgg6NEfxEl/lzCa5OxlBu3iFsCAdamnYOcTQ7oEi43Xc/67Rgzw==", "dev": true, "dependencies": { - "@types/jsonfile": "*", "@types/node": "*" } }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", + "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -2590,9 +2802,9 @@ "dev": true }, "node_modules/@types/jsonfile": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", - "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.2.tgz", + "integrity": "sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==", "dev": true, "dependencies": { "@types/node": "*" @@ -2604,6 +2816,12 @@ "integrity": "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==", "dev": true }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -2623,9 +2841,9 @@ "dev": true }, "node_modules/@types/ps-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/ps-tree/-/ps-tree-1.1.2.tgz", - "integrity": "sha512-ZREFYlpUmPQJ0esjxoG1fMvB2HNaD3z+mjqdSosZvd3RalncI9NEur73P8ZJz4YQdL64CmV1w0RuqoRUlhQRBw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/ps-tree/-/ps-tree-1.1.3.tgz", + "integrity": "sha512-J8IrehehphLtxpABSekURTw9jthrlLcM4llH1I2fZ0zKaxq8jI/O1+Q/tabAJgBY/ffoqDxPRNYBM1lFUXm0lw==", "dev": true }, "node_modules/@types/resolve": { @@ -2855,15 +3073,94 @@ "integrity": "sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==", "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==", + "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", + "socks-proxy-agent": "^8.0.1" + }, + "optionalDependencies": { + "@vscode/windows-ca-certs": "^0.3.1" + } + }, + "node_modules/@vscode/ripgrep": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.15.5.tgz", + "integrity": "sha512-PVvKNEmtnlek3i4MJMaB910dz46CKQqcIY2gKR3PSlfz/ZPlSYuSuyQMS7iK20KL4hGUdSbWt964B5S5EIojqw==", + "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" + } + }, + "node_modules/@vscode/spdlog": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/@vscode/spdlog/-/spdlog-0.13.11.tgz", + "integrity": "sha512-4qk6G3XKTJNsrqsGwmo9lr8NPaH84WeLsoFVPrpvoEC1t1tFu7H6l4RRMgzKNeE92nwRbjejLv1nATJNoabRfA==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "mkdirp": "^0.5.5", + "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" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/@vscode/vscode-languagedetection": { "version": "1.0.22", "resolved": "https://registry.npmjs.org/@vscode/vscode-languagedetection/-/vscode-languagedetection-1.0.22.tgz", "integrity": "sha512-rQ/BgMyLuIXSmbA0MSkIPHtcOw14QkeDbAq19sjvaS9LTRr905yij0S8lsyqN5JgOsbtIx7pAcyOxFMzPmqhZQ==", - "peer": true, "bin": { "vscode-languagedetection": "cli/index.js" } }, + "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", + "integrity": "sha512-y8Oliel/rBSYh9f1T4F0zQjJNPeJRgYRhEKZsjas7JXKLf46FpE3Ux8e9+7HelUD8dXFH7C7N6895nU0WhrMlg==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.17.0" + } + }, "node_modules/@web/rollup-plugin-import-meta-assets": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@web/rollup-plugin-import-meta-assets/-/rollup-plugin-import-meta-assets-2.1.0.tgz", @@ -2959,6 +3256,17 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3212,12 +3520,49 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3238,7 +3583,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -3278,11 +3622,33 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "peer": true, "engines": { "node": "*" } @@ -3308,22 +3674,73 @@ "semver": "^7.0.0" } }, - "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==", + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.13", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.13.tgz", + "integrity": "sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=14.16" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "node_modules/cacheable-request/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { @@ -3376,6 +3793,11 @@ "node": ">=4" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "node_modules/ci-info": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", @@ -3418,6 +3840,12 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -3430,12 +3858,30 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/core-js-compat": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", @@ -3675,7 +4121,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3697,6 +4142,28 @@ "node": ">=0.10" } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3712,6 +4179,15 @@ "node": ">=0.10.0" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -3734,6 +4210,17 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -3822,6 +4309,16 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -3834,6 +4331,14 @@ "integrity": "sha512-TxLRpRUj/107ATefeP8VIUWNOv90xJxZZbCW/eIbSZQiuiFANCx2b7u+GbVc9X4gU+xnbvypNMYVM/WArE1DNQ==", "dev": true }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -4388,6 +4893,18 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -4492,6 +5009,14 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4551,7 +5076,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "peer": true, "dependencies": { "pend": "~1.2.0" } @@ -4591,11 +5115,15 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4665,6 +5193,15 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -4683,18 +5220,41 @@ "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", "dev": true }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=14.14" + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/fs.realpath": { @@ -4703,20 +5263,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4751,9 +5297,9 @@ } }, "node_modules/fx": { - "version": "28.0.0", - "resolved": "https://registry.npmjs.org/fx/-/fx-28.0.0.tgz", - "integrity": "sha512-vKQDA9g868cZiW8ulgs2uN1yx1i7/nsS33jTMOxekk0Z03BJLffVcdW6AVD32fWb3E6RtmWWuBXBZOk8cLXFNQ==", + "version": "30.1.1", + "resolved": "https://registry.npmjs.org/fx/-/fx-30.1.1.tgz", + "integrity": "sha512-Ntv0ZqytFEwbt2UX2PZie2IYpqrBUKpxHm4lxnQ1fKvcMq5m2Ou6LpSoF7OBHD4vKL7FqXrQ2/s9Fhm+SgCDHg==", "dev": true, "bin": { "fx": "index.js" @@ -4783,6 +5329,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -4811,6 +5369,11 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, "node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -4919,6 +5482,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -5012,6 +5600,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -5024,6 +5655,25 @@ "postcss": "^8.1.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -5071,8 +5721,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/internal-slot": { "version": "1.0.5", @@ -5088,6 +5742,11 @@ "node": ">= 0.4" } }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -5225,7 +5884,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5249,7 +5907,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -5295,7 +5952,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -5511,6 +6167,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -5574,6 +6236,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/kerberos": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-2.0.3.tgz", + "integrity": "sha512-p2EgcmKCdFyGbvReS3+YZMDss7e4xYE4H6KYKzk0Vd9zj0nUt02I9DpD/+cMBsOcPHoqlHr1tm6RWY/SHCQVtw==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^6.1.0", + "prebuild-install": "7.1.1" + }, + "engines": { + "node": ">=12.9.0" + } + }, + "node_modules/kerberos/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/keytar/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/klaw-sync": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", @@ -5650,6 +6355,27 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5702,7 +6428,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -5715,7 +6440,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -5724,7 +6448,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -5732,6 +6455,17 @@ "node": ">= 0.6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5748,7 +6482,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5768,17 +6501,25 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "node_modules/monaco-editor": { "version": "0.43.0", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.43.0.tgz", - "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==", - "peer": true + "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==" }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" }, "node_modules/nanoid": { "version": "3.3.6", @@ -5798,6 +6539,11 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5810,8 +6556,34 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abi": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", + "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + }, + "node_modules/node-domexception": { + "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dev": true, @@ -5829,6 +6601,33 @@ "node": ">=10.5.0" } }, + "node_modules/node-fetch": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", + "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-pty": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.0.0.tgz", + "integrity": "sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.17.0" + } + }, "node_modules/node-releases": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", @@ -5961,7 +6760,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -6008,6 +6806,15 @@ "node": ">=0.10.0" } }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -6075,6 +6882,34 @@ "node": ">=8" } }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dev": true, + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6105,6 +6940,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/patch-package": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", @@ -6321,8 +7166,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "peer": true + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/perf-regexes": { "version": "1.0.1", @@ -6343,7 +7187,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -6862,6 +7705,39 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install/node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6871,6 +7747,17 @@ "node": ">= 0.8.0" } }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/ps-tree": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", @@ -6886,6 +7773,15 @@ "node": ">= 0.10" } }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -6933,6 +7829,53 @@ } ] }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/recast": { "version": "0.23.4", "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", @@ -7029,6 +7972,33 @@ "node": ">=4" } }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -7067,6 +8037,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -7085,6 +8061,21 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -7146,6 +8137,70 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-copy": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", + "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^8.0.1", + "colorette": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "10.0.1", + "is-plain-object": "^3.0.0" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-plugin-copy/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup-plugin-copy/node_modules/globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-copy/node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rollup-plugin-dts": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.0.2.tgz", @@ -7262,6 +8317,25 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -7280,7 +8354,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -7295,7 +8368,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -7306,8 +8378,7 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -7344,6 +8415,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/skip-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz", @@ -7362,6 +8476,41 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7433,6 +8582,14 @@ "node": ">=4" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -7581,6 +8738,32 @@ "node": ">= 10" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -7618,7 +8801,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -7715,8 +8897,7 @@ "node_modules/tslib": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", - "dev": true + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -7739,6 +8920,17 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7752,12 +8944,12 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", + "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7915,8 +9107,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", @@ -7927,14 +9118,23 @@ "node_modules/vscode-oniguruma": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-2.0.0.tgz", - "integrity": "sha512-QWb6OZHNMxk1/nNOA6gjmbwA7gkKOYPAgteCOy8hX8/3FzoEb4pLHt2b2VHGy9gDdzGt3l5NqiQyo1HEQIanhw==", - "peer": true + "integrity": "sha512-QWb6OZHNMxk1/nNOA6gjmbwA7gkKOYPAgteCOy8hX8/3FzoEb4pLHt2b2VHGy9gDdzGt3l5NqiQyo1HEQIanhw==" + }, + "node_modules/vscode-regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-regexpp/-/vscode-regexpp-3.1.0.tgz", + "integrity": "sha512-pqtN65VC1jRLawfluX4Y80MMG0DHJydWhe5ZwMHewZD6sys4LbU6lHwFAHxeuaVE6Y6+xZOtAw+9hvq7/0ejkg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } }, "node_modules/vscode-textmate": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.0.0.tgz", - "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==", - "peer": true + "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" }, "node_modules/web-streams-polyfill": { "version": "3.2.1", @@ -8008,65 +9208,57 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/xterm": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", - "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==", - "peer": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.2.1.tgz", + "integrity": "sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA==" }, "node_modules/xterm-addon-canvas": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.5.0.tgz", - "integrity": "sha512-QOo/eZCMrCleAgMimfdbaZCgmQRWOml63Ued6RwQ+UTPvQj3Av9QKx3xksmyYrDGRO/AVRXa9oNuzlYvLdmoLQ==", - "peer": true, + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0.tgz", + "integrity": "sha512-iTC8CdjX9+hGX7jiEuiDMXzHsY/FKJdVnbjep5xjRXNu7RKOk15xuecIkJ7HZORqMVPpr4DGS3jyd9XUoBuxqw==", "peerDependencies": { "xterm": "^5.0.0" } }, "node_modules/xterm-addon-image": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xterm-addon-image/-/xterm-addon-image-0.5.0.tgz", - "integrity": "sha512-bWXUBeDzhisYh0clVKx4JgQrZjpn+/QRMRwNsfnRpjCMhgmZ+SL3Bivktd7q03O4uKMMcAOe6bSmppwP9/um0Q==", - "peer": true, + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/xterm-addon-image/-/xterm-addon-image-0.4.1.tgz", + "integrity": "sha512-iJpYyvtbHg4oXSv+D6J73ZfCjnboZpbZ567MLplXDBlYSUknv3kvPTfVMPJATV7Zsx7+bDgyXboCh9vsDf/m/w==", "peerDependencies": { - "xterm": "^5.2.0" + "xterm": "~5.2.0" } }, "node_modules/xterm-addon-search": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/xterm-addon-search/-/xterm-addon-search-0.13.0.tgz", - "integrity": "sha512-sDUwG4CnqxUjSEFh676DlS3gsh3XYCzAvBPSvJ5OPgF3MRL3iHLPfsb06doRicLC2xXNpeG2cWk8x1qpESWJMA==", - "peer": true, + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/xterm-addon-search/-/xterm-addon-search-0.12.0.tgz", + "integrity": "sha512-hXAuO7Ts2+Jf9K8mZrUx8IFd7c/Flgks/jyqA1L4reymyfmXtcsd+WDLel8R9Tgy2CLyKABVBP09/Ua/FmXcvg==", "peerDependencies": { "xterm": "^5.0.0" } }, "node_modules/xterm-addon-serialize": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/xterm-addon-serialize/-/xterm-addon-serialize-0.11.0.tgz", - "integrity": "sha512-2CNDnmLdLkNWfsxNFkGsI5FE9W/BbsMzeOrbu59yNqH9L6k1gmL+Ab6VXxEp2NQUJSzaiqi6t0nFR5k5EDkVIg==", - "peer": true, + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0.tgz", + "integrity": "sha512-Syp9eSBypn70iAczcJ+kAi0foQIepAvFS6x53JwI4XylTBHn87Ep9fovslhwmUV3rwH2yMnpdDjXH5W/whx2lA==", "peerDependencies": { "xterm": "^5.0.0" } }, "node_modules/xterm-addon-unicode11": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/xterm-addon-unicode11/-/xterm-addon-unicode11-0.6.0.tgz", - "integrity": "sha512-5pkb8YoS/deRtNqQRw8t640mu+Ga8B2MG3RXGQu0bwgcfr8XiXIRI880TWM49ICAHhTmnOLPzIIBIjEnCq7k2A==", - "peer": true, + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz", + "integrity": "sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg==", "peerDependencies": { "xterm": "^5.0.0" } }, "node_modules/xterm-addon-webgl": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/xterm-addon-webgl/-/xterm-addon-webgl-0.16.0.tgz", - "integrity": "sha512-E8cq1AiqNOv0M/FghPT+zPAEnvIQRDbAbkb04rRYSxUym69elPWVJ4sv22FCLBqM/3LcrmBLl/pELnBebVFKgA==", - "peer": true, + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0.tgz", + "integrity": "sha512-ZLcqogMFHr4g/YRhcCh3xE8tTklnyut/M+O/XhVsFBRB/YCvYhPdLQ5/AQk54V0wjWAQpa8CF3W8DVR9OqyMCg==", "peerDependencies": { "xterm": "^5.0.0" } @@ -8075,7 +9267,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/xterm-headless/-/xterm-headless-5.3.0.tgz", "integrity": "sha512-HjKkEgvjlyXfZvI0LdQChOqGL5nDiXge6X2IvoQbOn+oavAKUCX9hKHtDxmWVwxgNCCvXDnfQCYL+3wyHQ9PXA==", - "peer": true + "dev": true }, "node_modules/yallist": { "version": "3.1.1", @@ -8096,12 +9288,19 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "peer": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -8152,10 +9351,20 @@ "node": ">= 16.0.0" } }, + "node_modules/zx/node_modules/@types/fs-extra": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz", + "integrity": "sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==", + "dev": true, + "dependencies": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "node_modules/zx/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -8164,41 +9373,37 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/zx/node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "node_modules/zx/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.14" } }, - "node_modules/zx/node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", + "node_modules/zx/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zx/node_modules/slash": { diff --git a/package.json b/package.json index 88dca6c6..d91dbb9c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@codingame/monaco-vscode-api", "version": "0.0.0-semantic-release", - "private": false, + "private": true, "description": "VSCode public API plugged on the monaco editor", "keywords": [], "author": { @@ -11,98 +11,24 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/CodinGame/monaco-vscode-api" + "url": "git+https://github.com/CodinGame/monaco-vscode-api.git" }, "type": "module", - "main": "dist/api.js", - "module": "dist/api.js", - "enabledApiProposals": [ - "fileSearchProvider", - "textSearchProvider", - "extensionsAny", - "documentPaste", - "externalUriOpener" - ], - "exports": { - ".": { - "default": "./dist/api.js" - }, - "./services": { - "types": "./dist/services.d.ts", - "default": "./dist/services.js" - }, - "./extensions": { - "types": "./dist/extensions.d.ts", - "default": "./dist/extensions.js" - }, - "./service-override/*": { - "types": "./dist/service-override/*.d.ts", - "default": "./dist/service-override/*.js" - }, - "./workers/*": { - "types": "./dist/workers/*.d.ts", - "default": "./dist/workers/*.js" - }, - "./monaco": { - "types": "./dist/monaco.d.ts", - "default": "./dist/monaco.js" - }, - "./default-extensions/*": { - "default": "./dist/default-extensions/*.js" - }, - "./rollup-vsix-plugin": { - "types": "./dist/rollup-vsix-plugin.d.ts", - "default": "./dist/rollup-vsix-plugin.js" - }, - "./rollup-extension-directory-plugin": { - "types": "./dist/rollup-extension-directory-plugin.d.ts", - "default": "./dist/rollup-extension-directory-plugin.js" - } - }, - "typesVersions": { - "*": { - "services": [ - "./dist/services.d.ts" - ], - "extensions": [ - "./dist/extensions.d.ts" - ], - "service-override/*": [ - "./dist/service-override/*.d.ts" - ], - "monaco": [ - "./dist/monaco.d.ts" - ], - "rollup-vsix-plugin": [ - "./dist/rollup-vsix-plugin.d.ts" - ], - "rollup-extension_directory-plugin": [ - "./dist/rollup-extension_directory-plugin.d.ts" - ] - } - }, - "files": [ - "dist", - "monaco-treemending.js", - "monaco-editor-treemending.patch", - "README.md" - ], "scripts": { - "build": "npm run clean && npm run generate-types && npm run lint && npm run compile-rollup-plugins && npm run compile-treemending-script && npm run compile && npm run compile-default-extensions", + "build": "npm run clean && npm run generate-types && npm run lint && npm run compile-rollup-plugins && npm run compile-treemending-script && npm run compile && npm run compile-server && npm run compile-default-extensions", "compile": "NODE_OPTIONS=--max_old_space_size=8192 rollup --config rollup/rollup.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config.json`}' --vscode-version ${npm_package_config_vscode_version} --vscode-ref ${npm_package_config_vscode_ref}", "compile-default-extensions": "NODE_OPTIONS=--max_old_space_size=8192 rollup --config rollup/rollup.default-extensions.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-default-extensions.json`}'", "clean": "rm -rf dist/", - "compile-treemending-script": "rollup --config rollup/rollup.treemending-script.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-treemending-script.json`, include: [`./rollup/rollup.treemending-script.config.ts`]}'", - "compile-rollup-plugins": "rollup --config rollup/rollup.rollup-plugins.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-plugins.json`, include: [`./rollup/rollup.rollup-plugins.config.ts`]}'", + "compile-server": "rollup --config rollup/rollup.server.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-server.json`, include: [`./rollup/rollup.server.config.ts`, `./rollup/rollup-metadata-plugin.ts`]}'", + "compile-treemending-script": "rollup --config rollup/rollup.treemending-script.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-treemending-script.json`, include: [`./rollup/rollup.treemending-script.config.ts`, `./rollup/rollup-metadata-plugin.ts`]}'", + "compile-rollup-plugins": "rollup --config rollup/rollup.rollup-plugins.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-plugins.json`, include: [`./rollup/rollup.rollup-plugins.config.ts`, `./rollup/rollup-metadata-plugin.ts`]}'", "preprepare": "./scripts/install-vscode && node --loader ts-node/esm src/monaco-treemending.ts && patch-package", - "lint": "eslint {/src/**/*.ts,./rollup/*.ts,./*.ts}", + "lint": "eslint '{src/**/*.ts,rollup/*.ts,*.ts}'", "generate-types": "./scripts/generate-types", "release": "node --loader ts-node/esm release.ts ${npm_package_config_vscode_version}", + "releaseNext": "node --loader ts-node/esm releaseNext.ts ${npm_package_config_vscode_version}", "reset:repo": "git clean -f -X -d" }, - "bin": { - "monaco-treemending": "./monaco-treemending.js" - }, "config": { "vscode": { "version": "1.82.0", @@ -120,7 +46,6 @@ "@octokit/rest": "^20.0.1", "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-dynamic-import-vars": "^2.0.5", - "@rollup/plugin-inject": "^5.0.3", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-replace": "^5.0.2", @@ -144,34 +69,55 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-unused-imports": "^2.0.0", "fast-glob": "^3.3.1", + "graceful-fs": "^4.2.11", + "is-builtin-module": "^3.2.1", "js-cleanup": "^1.2.0", "jschardet": "^3.0.0", - "mime-types": "^2.1.35", + "package-json": "^8.1.1", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", "patch-package": "^8.0.0", "recast": "^0.23.4", "rollup": "^3.29.1", + "rollup-plugin-copy": "^3.5.0", "rollup-plugin-dts": "^6.0.2", "rollup-plugin-styles": "^4.0.0", "semver": "^7.5.4", "ts-morph": "^19.0.0", "ts-node": "^10.9.1", + "xterm-headless": "^5.3.0", + "type-fest": "^4.3.1", "typescript": "5.2.2", "zx": "^7.2.3" }, - "peerDependencies": { + "dependencies": { + "@microsoft/1ds-core-js": "^3.2.13", + "@microsoft/1ds-post-js": "^3.2.13", + "@parcel/watcher": "^2.3.0", + "@vscode/proxy-agent": "^0.17.2", + "@vscode/ripgrep": "^1.15.5", + "@vscode/spdlog": "^0.13.11", "@vscode/vscode-languagedetection": "^1.0.22", "monaco-editor": "0.43.0", "vscode-oniguruma": "^2.0.0", + "@vscode/windows-process-tree": "^0.5.0", + "cookie": "^0.5.0", + "kerberos": "^2.0.2", + "keytar": "^7.9.0", + "mime-types": "^2.1.35", + "node-pty": "^1.0.0", + "vscode-regexpp": "^3.1.0", "vscode-textmate": "^9.0.0", - "xterm": "5.3.0", - "xterm-addon-canvas": "0.5.0", - "xterm-addon-image": "0.5.0", - "xterm-addon-search": "0.13.0", - "xterm-addon-serialize": "0.11.0", - "xterm-addon-unicode11": "0.6.0", - "xterm-addon-webgl": "0.16.0", + "xterm": "5.2.1", + "xterm-addon-canvas": "0.4.0", + "xterm-addon-image": "0.4.1", + "xterm-addon-search": "0.12.0", + "xterm-addon-serialize": "0.10.0", + "xterm-addon-unicode11": "0.5.0", + "xterm-addon-webgl": "0.15.0", "xterm-headless": "5.3.0", - "yauzl": "^2.10.0" + "yauzl": "^2.10.0", + "yazl": "^2.5.1" }, "overrides": { "typescript": "5.2.2", diff --git a/release.ts b/release.ts index 5e579ad0..f22b0f90 100644 --- a/release.ts +++ b/release.ts @@ -5,7 +5,11 @@ import { $ } from 'zx' import semver from 'semver' import { Octokit } from '@octokit/rest' +import path from 'path' import fs from 'fs/promises' +import syncFs from 'fs' +import { fileURLToPath } from 'url' +const __dirname = path.dirname(fileURLToPath(import.meta.url)) const githubToken = process.env.GH_TOKEN ?? process.env.GITHUB_TOKEN if (githubToken == null) { @@ -130,8 +134,28 @@ async function releaseGithub (repoInfos: RepositoryInfos, version: string, relea async function publishNpm (version: string) { await fs.writeFile('.npmrc', `//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n`) - await $`npm --no-git-tag-version version ${version}` - await $`npm publish --no-git-tag-version` + + const distDir = path.resolve(__dirname, 'dist') + for (const dirName of await fs.readdir(distDir)) { + const libDir = path.resolve(distDir, dirName) + const packageJsonFile = path.resolve(libDir, 'package.json') + if (syncFs.existsSync(packageJsonFile)) { + const packageJson = JSON.parse((await fs.readFile(packageJsonFile)).toString()) + packageJson.version = version + if (packageJson.dependencies?.vscode != null) { + packageJson.dependencies.vscode = `npm:@codingame/monaco-vscode-api@${version}` + } + for (const dependency in packageJson.dependencies) { + if (dependency.startsWith('@codingame/monaco-vscode-')) { + packageJson.dependencies[dependency] = version + } + } + await fs.writeFile(packageJsonFile, JSON.stringify(packageJson, null, 2)) + + $.cwd = libDir + await $`npm publish --access public` + } + } } async function run () { diff --git a/releaseNext.ts b/releaseNext.ts new file mode 100644 index 00000000..fa627ce6 --- /dev/null +++ b/releaseNext.ts @@ -0,0 +1,78 @@ +/** + * This script was inspired by https://dev.to/antongolub/you-don-t-need-semantic-release-sometimes-3k6k + */ + +import { $ } from 'zx' +import semver from 'semver' +import packageJson from 'package-json' +import path from 'path' +import fs from 'fs/promises' +import syncFs from 'fs' +import { fileURLToPath } from 'url' +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +/** + * Comes from https://github.com/semantic-release/semantic-release/blob/9589a96239826abe9b07e8deffcc7d8aeb9c2e40/index.js#L45 + */ +const COMMIT_NAME = 'release-bot' +const COMMIT_EMAIL = 'release-bot@codingame.com' +$.env = { + GIT_AUTHOR_NAME: COMMIT_NAME, + GIT_AUTHOR_EMAIL: COMMIT_EMAIL, + GIT_COMMITTER_NAME: COMMIT_NAME, + GIT_COMMITTER_EMAIL: COMMIT_EMAIL, + ...process.env, + GIT_ASKPASS: 'echo', + GIT_TERMINAL_PROMPT: '0' +} + +const vscodeVersion = process.argv[process.argv.length - 1]! +const vscodeVersionRange = `${semver.major(vscodeVersion)}.${semver.minor(vscodeVersion)}.*` + +async function getNextVersion () { + const allVersions = new Set(Object.keys((await packageJson('@codingame/monaco-vscode-api', { + allVersions: true + })).versions)) + + const lastPublishedVersion = semver.maxSatisfying(Array.from(allVersions), vscodeVersionRange, { includePrerelease: true }) + + if (lastPublishedVersion != null) { + return semver.inc(lastPublishedVersion, 'prerelease', true, 'next')! + } else { + return `${semver.major(vscodeVersion)}.${semver.minor(vscodeVersion)}.0-next.0` + } +} + +async function publishNpm (version: string) { + const distDir = path.resolve(__dirname, 'dist') + for (const dirName of await fs.readdir(distDir)) { + const libDir = path.resolve(distDir, dirName) + const packageJsonFile = path.resolve(libDir, 'package.json') + if (syncFs.existsSync(packageJsonFile)) { + const packageJson = JSON.parse((await fs.readFile(packageJsonFile)).toString()) + packageJson.version = version + if (packageJson.dependencies?.vscode != null) { + packageJson.dependencies.vscode = `npm:@codingame/monaco-vscode-api@${version}` + } + for (const dependency in packageJson.dependencies) { + if (dependency.startsWith('@codingame/monaco-vscode-')) { + packageJson.dependencies[dependency] = version + } + } + await fs.writeFile(packageJsonFile, JSON.stringify(packageJson, null, 2)) + + $.cwd = libDir + await $`npm publish --tag next --access public` + } + } +} + +async function run () { + const nextVersion = await getNextVersion() + await publishNpm(nextVersion) +} + +run().catch(error => { + console.error(error) + process.exit(1) +}) diff --git a/rollup/rollup-metadata-plugin.ts b/rollup/rollup-metadata-plugin.ts new file mode 100644 index 00000000..6c1e43a7 --- /dev/null +++ b/rollup/rollup-metadata-plugin.ts @@ -0,0 +1,58 @@ +import type { OutputBundle, OutputOptions, Plugin, PluginContext } from 'rollup' +import { builtinModules } from 'module' + +interface Group { + name: string + dependencies: Set + entrypoints: Set +} + +interface Options { + getGroup?: (entryPoint: string, options: OutputOptions) => string + handle (this: PluginContext, groupName: string, dependencies: Set, entrypoints: Set, options: OutputOptions, bundle: OutputBundle): void | Promise +} + +export default ({ handle, getGroup = () => 'main' }: Options): Plugin => ({ + name: 'generate-metadata', + async generateBundle (options: OutputOptions, bundle: OutputBundle) { + const externalDependencyCache = new Map>() + const getModuleExternalDependencies = (id: string, path: string[]): Set => { + if (!externalDependencyCache.has(id)) { + const moduleInfo = this.getModuleInfo(id)! + if (moduleInfo.isExternal) { + const match = /^(?:@[^/]*\/)?[^/]*/.exec(id) + externalDependencyCache.set(id, new Set(match != null && !builtinModules.includes(match[0]) ? [match[0]] : [])) + } else { + externalDependencyCache.set(id, new Set([...moduleInfo.importedIds, ...moduleInfo.dynamicallyImportedIds].flatMap(depId => Array.from(getModuleExternalDependencies(depId, [...path, id]))))) + } + } + + return externalDependencyCache.get(id)! + } + + const groups = new Map() + for (const id of this.getModuleIds()) { + const moduleInfo = this.getModuleInfo(id)! + if (!moduleInfo.isEntry) { + continue + } + const groupName = getGroup(id, options) + const externalDependencies = getModuleExternalDependencies(moduleInfo.id, []) + + if (!groups.has(groupName)) { + groups.set(groupName, { + dependencies: new Set(), + entrypoints: new Set(), + name: groupName + }) + } + const group = groups.get(groupName)! + externalDependencies.forEach(d => group.dependencies.add(d)) + group.entrypoints.add(id) + } + + await Promise.all(Array.from(groups.entries()).map(async ([name, group]) => { + await handle.call(this, name, group.dependencies, group.entrypoints, options, bundle) + })) + } +}) diff --git a/rollup/rollup.config.ts b/rollup/rollup.config.ts index b889511c..33c75060 100644 --- a/rollup/rollup.config.ts +++ b/rollup/rollup.config.ts @@ -11,10 +11,14 @@ import dynamicImportVars from '@rollup/plugin-dynamic-import-vars' import styles from 'rollup-plugin-styles' import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets' import glob from 'fast-glob' +import { paramCase } from 'param-case' +import { PackageJson } from 'type-fest' +import copy from 'rollup-plugin-copy' import * as fs from 'fs' import * as fsPromise from 'fs/promises' import * as path from 'path' import { fileURLToPath } from 'url' +import metadataPlugin from './rollup-metadata-plugin' import pkg from '../package.json' assert { type: 'json' } const __dirname = path.dirname(fileURLToPath(import.meta.url)) @@ -98,8 +102,6 @@ const REMOVE_WORKBENCH_CONTRIBUTIONS = new Set([ 'ResetConfigurationDefaultsOverridesCache', 'ConfigurationMigrationWorkbenchContribution', 'RegisterSearchViewContribution', - 'RemoteTerminalBackendContribution', - 'DebugStatusContribution', 'ExtensionPoints' ]) @@ -110,11 +112,12 @@ const TSCONFIG = path.resolve(BASE_DIR, 'tsconfig.rollup.json') const SRC_DIR = path.resolve(BASE_DIR, 'src') const DIST_DIR = path.resolve(BASE_DIR, 'dist') const VSCODE_DIR = path.resolve(BASE_DIR, 'vscode') +const VSCODE_SRC_DIR = path.resolve(VSCODE_DIR, 'src') const NODE_MODULES_DIR = path.resolve(BASE_DIR, 'node_modules') const MONACO_EDITOR_DIR = path.resolve(NODE_MODULES_DIR, './monaco-editor') const MONACO_EDITOR_ESM_DIR = path.resolve(MONACO_EDITOR_DIR, './esm') const OVERRIDE_PATH = path.resolve(BASE_DIR, 'src/override') -const KEYBOARD_LAYOUT_DIR = path.resolve(VSCODE_DIR, 'vs/workbench/services/keybinding/browser/keyboardLayouts') +const KEYBOARD_LAYOUT_DIR = path.resolve(VSCODE_SRC_DIR, 'vs/workbench/services/keybinding/browser/keyboardLayouts') function getMemberExpressionPath (node: recast.types.namedTypes.MemberExpression | recast.types.namedTypes.Identifier): string | null { if (node.type === 'MemberExpression') { @@ -451,8 +454,8 @@ function resolveVscode (importee: string, importer?: string) { return resolve(path.relative('vscode', importee), [VSCODE_DIR]) } let vscodeImportPath = importee - if (importee.startsWith(VSCODE_DIR)) { - vscodeImportPath = path.relative(VSCODE_DIR, importee) + if (importee.startsWith(VSCODE_SRC_DIR)) { + vscodeImportPath = path.relative(VSCODE_SRC_DIR, importee) } const overridePath = resolve(vscodeImportPath, [OVERRIDE_PATH]) if (overridePath != null) { @@ -464,7 +467,7 @@ function resolveVscode (importee: string, importer?: string) { // File exists on monaco, import from monaco esm return path.relative(NODE_MODULES_DIR, path.resolve(MONACO_EDITOR_ESM_DIR, vscodeImportPath)) + '.js' } - return resolve(vscodeImportPath, [VSCODE_DIR]) + return resolve(vscodeImportPath, [VSCODE_SRC_DIR]) } return undefined } @@ -494,7 +497,13 @@ const input = { ) } -const externals = Object.keys({ ...pkg.peerDependencies }) +const workerGroups: Record = { + languageDetection: 'service-override:language-detection-worker', + outputLinkComputer: 'service-override:output', + textmate: 'service-override:textmate' +} + +const externals = Object.keys({ ...pkg.dependencies }) const external: rollup.ExternalOption = (source) => { if (source.includes('tas-client-umd')) return true if (source.startsWith(MONACO_EDITOR_DIR) || source.startsWith('monaco-editor/')) { @@ -549,8 +558,15 @@ export default (args: Record): rollup.RollupOptions[] => { minifyInternalExports: false, assetFileNames: 'assets/[name][extname]', format: 'esm', - dir: 'dist', - entryFileNames: '[name].js', + dir: 'dist/main', + entryFileNames: (chunkInfo) => { + // Rename node_modules to external so it's not removing while publishing the package + // tslib and rollup-plugin-styles and bundled + if (chunkInfo.name.includes('node_modules')) { + return chunkInfo.name.replace('node_modules', 'external') + '.js' + } + return '[name].js' + }, chunkFileNames: '[name].js', hoistTransitiveImports: false, paths: { @@ -580,7 +596,7 @@ export default (args: Record): rollup.RollupOptions[] => { return undefined }, async load (id) { - if (!id.startsWith(VSCODE_DIR)) { + if (!id.startsWith(VSCODE_SRC_DIR)) { return undefined } const [, path, query] = /^(.*?)(\?.*?)?$/.exec(id)! @@ -616,6 +632,9 @@ export default (args: Record): rollup.RollupOptions[] => { typescript({ noEmitOnError: true, tsconfig: TSCONFIG, + compilerOptions: { + outDir: 'dist/main' + }, transformers: { before: [{ type: 'program', @@ -676,7 +695,7 @@ export default (args: Record): rollup.RollupOptions[] => { return null } - const fakePath = path.resolve(VSCODE_DIR, importee.replace(/\*/, 'all')) + const fakePath = path.resolve(VSCODE_SRC_DIR, importee.replace(/\*/, 'all')) realPaths.set(fakePath, importee) return fakePath }, @@ -685,10 +704,10 @@ export default (args: Record): rollup.RollupOptions[] => { if (realPath == null) { return undefined } - const files = await glob(realPath, { cwd: VSCODE_DIR }) + const files = await glob(realPath, { cwd: VSCODE_SRC_DIR }) const fileRefs = await Promise.all(files.map(async file => { - const filePath = path.resolve(VSCODE_DIR, file) + const filePath = path.resolve(VSCODE_SRC_DIR, file) const ref = this.emitFile({ type: 'asset', name: path.basename(file), @@ -728,14 +747,14 @@ export default (args: Record): rollup.RollupOptions[] => { } }, external, - input: Object.fromEntries(Object.keys(input).map(f => [f, `./dist/${f}`])), + input: Object.fromEntries(Object.keys(input).map(f => [f, `./dist/main/${f}`])), output: [{ preserveModules: true, - preserveModulesRoot: 'dist', + preserveModulesRoot: 'dist/main', minifyInternalExports: false, assetFileNames: 'assets/[name][extname]', format: 'esm', - dir: 'dist', + dir: 'dist/main', entryFileNames: '[name].js', chunkFileNames: '[name].js', hoistTransitiveImports: false @@ -801,7 +820,147 @@ export default (args: Record): rollup.RollupOptions[] => { sourcemap: false }).code } - }] + }, + copy({ + targets: [ + { src: ['README.md'], dest: 'dist/main' } + ] + }), + metadataPlugin({ + // generate package.json and meta packages + getGroup (id: string, options) { + const serviceOverrideDir = path.resolve(options.dir!, 'service-override') + const workersDir = path.resolve(options.dir!, 'workers') + + if (id.startsWith(serviceOverrideDir)) { + return `service-override:${paramCase(path.basename(id, '.js'))}` + } + if (id.startsWith(workersDir)) { + return workerGroups[path.basename(id, '.worker.js')] ?? 'main' + } + return 'main' + }, + async handle (groupName, dependencies, entrypoints, options) { + if (groupName === 'main') { + // Generate package.json + const packageJson: PackageJson = { + ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['name', 'description', 'version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), + private: false, + main: 'api.js', + module: 'api.js', + exports: { + '.': { + default: './api.js' + }, + './services': { + types: './services.d.ts', + default: './services.js' + }, + './extensions': { + types: './extensions.d.ts', + default: './extensions.js' + }, + './service-override/*': { + types: './service-override/*.d.ts', + default: './service-override/*.js' + }, + './workers/*': { + default: './workers/*.js' + }, + './monaco': { + types: './monaco.d.ts', + default: './monaco.js' + } + }, + typesVersions: { + '*': { + services: [ + './services.d.ts' + ], + extensions: [ + './extensions.d.ts' + ], + 'service-override/*': [ + './service-override/*.d.ts' + ], + monaco: [ + './monaco.d.ts' + ] + } + }, + bin: { + 'monaco-treemending': './monaco-treemending.js' + }, + dependencies: { + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))) + } + } + this.emitFile({ + fileName: 'package.json', + needsCodeReference: false, + source: JSON.stringify(packageJson, null, 2), + type: 'asset' + }) + } else { + const [_, category, name] = /^(.*):(.*)$/.exec(groupName)! + + const directory = path.resolve(DIST_DIR, `${category}-${name}`) + + await fsPromise.mkdir(directory, { + recursive: true + }) + const serviceOverrideEntryPoint = Array.from(entrypoints).find(e => e.includes('/service-override/'))! + const workerEntryPoint = Array.from(entrypoints).find(e => e.includes('/workers/')) + + const packageJson: PackageJson = { + name: `@codingame/monaco-vscode-${name}-${category}`, + ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), + private: false, + description: `${pkg.description} - ${name} ${category} meta package`, + main: 'index.js', + module: 'index.js', + types: 'index.d.ts', + dependencies: { + vscode: `npm:${pkg.name}@^${pkg.version}`, + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))) + } + } + + const reexportFrom = `vscode/${path.relative(options.dir!, serviceOverrideEntryPoint).slice(0, -3)}` + + const entrypointInfo = this.getModuleInfo(serviceOverrideEntryPoint)! + const codeLines: string[] = [] + if ((entrypointInfo.exports ?? []).includes('default')) { + codeLines.push(`export { default } from '${reexportFrom}'`) + } + if ((entrypointInfo.exports ?? []).some(e => e !== 'default')) { + codeLines.push(`export * from '${reexportFrom}'`) + } + if ((entrypointInfo.exports ?? []).length === 0) { + codeLines.push(`import '${reexportFrom}'`) + } + await fsPromise.writeFile(path.resolve(directory, 'index.js'), codeLines.join('\n')) + await fsPromise.writeFile(path.resolve(directory, 'index.d.ts'), codeLines.join('\n')) + + if (workerEntryPoint != null) { + const workerFrom = `vscode/${path.relative(options.dir!, workerEntryPoint).slice(0, -3)}` + await fsPromise.writeFile(path.resolve(directory, 'worker.js'), `import '${workerFrom}'`) + + packageJson.exports = { + '.': { + default: './index.js' + }, + './worker': { + default: './worker.js' + } + } + } + + await fsPromise.writeFile(path.resolve(directory, 'package.json'), JSON.stringify(packageJson, null, 2)) + } + } + }) + ] }]) } diff --git a/rollup/rollup.default-extensions.ts b/rollup/rollup.default-extensions.ts index 3631f9cb..3b640403 100644 --- a/rollup/rollup.default-extensions.ts +++ b/rollup/rollup.default-extensions.ts @@ -1,11 +1,15 @@ import nodeResolve from '@rollup/plugin-node-resolve' import * as rollup from 'rollup' import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets' +import { PackageJson } from 'type-fest' +import { pascalCase } from 'pascal-case' import * as fs from 'fs' import * as fsPromise from 'fs/promises' import * as path from 'path' import { fileURLToPath } from 'url' -import extensionDirectoryPlugin from '../dist/rollup-extension-directory-plugin.js' +import metadataPlugin from './rollup-metadata-plugin' +import extensionDirectoryPlugin from '../dist/rollup-extension-directory-plugin/rollup-extension-directory-plugin.js' +import pkg from '../package.json' assert { type: 'json' } const __dirname = path.dirname(fileURLToPath(import.meta.url)) @@ -18,87 +22,195 @@ const defaultExtensions = fs.readdirSync(DEFAULT_EXTENSIONS_PATH, { withFileType .filter(f => f.isDirectory() && fs.existsSync(path.resolve(DEFAULT_EXTENSIONS_PATH, f.name, 'package.json'))) .map(f => f.name) -export default rollup.defineConfig(defaultExtensions.map(name => ({ - // default entensions - input: path.resolve(DEFAULT_EXTENSIONS_PATH, name), - output: [{ - minifyInternalExports: false, - assetFileNames: chunkInfo => { - if (chunkInfo.name != null && chunkInfo.name.endsWith('d.ts')) { +const languageGrammarExtensions: string[] = [] +const languageFeatureExtensions: string[] = [] +for (const extension of defaultExtensions) { + const extensionPath = path.resolve(DEFAULT_EXTENSIONS_PATH, extension, 'package.json') + const packageJson = JSON.parse(fs.readFileSync(extensionPath).toString()) + if ((packageJson.contributes?.languages ?? []).length > 0) { + languageGrammarExtensions.push(extension) + } + if (extension.endsWith('language-features')) { + languageFeatureExtensions.push(extension) + } +} + +export default rollup.defineConfig([ + ...defaultExtensions.map(name => ({ + input: path.resolve(DEFAULT_EXTENSIONS_PATH, name), + output: [{ + minifyInternalExports: false, + assetFileNames: chunkInfo => { + if (chunkInfo.name != null && chunkInfo.name.endsWith('d.ts')) { // append .txt at the end of d.ts files: those file are required by the typescript extension and are just expected to be loaded as simple text - return `default-extensions/${name}/[name][extname].txt` - } - return `default-extensions/${name}/[name][extname]` - }, - format: 'esm', - dir: 'dist', - entryFileNames: `default-extensions/${name}.js`, - chunkFileNames: `default-extensions/${name}/[name].js`, - hoistTransitiveImports: false - }], - plugins: [ - { - name: 'resolve', - resolveId (importee) { - if (importee === 'vscode/extensions') { - return { - id: '../extensions.js', - external: true - } + return '[name][extname].txt' } - return undefined - } + return '[name][extname]' + }, + format: 'esm', + dir: `dist/default-extension-${name}`, + entryFileNames: 'index.js', + chunkFileNames: '[name].js', + hoistTransitiveImports: false + }], + external (source) { + return source === 'vscode/extensions' }, - { - name: 'resolve-asset-url', - resolveFileUrl (options) { - let relativePath = options.relativePath - if (!relativePath.startsWith('.')) { - relativePath = `./${options.relativePath}` + plugins: [ + { + name: 'resolve-asset-url', + resolveFileUrl (options) { + let relativePath = options.relativePath + if (!relativePath.startsWith('.')) { + relativePath = `./${options.relativePath}` + } + return `'${relativePath}'` } - return `'${relativePath}'` - } - }, - nodeResolve({ - extensions: EXTENSIONS - }), - importMetaAssets(), - { - name: 'dynamic-import-polyfill', - renderDynamicImport (): { left: string, right: string } { - return { - left: 'import(', - right: ').then(module => module.default ?? module)' + }, + nodeResolve({ + extensions: EXTENSIONS + }), + importMetaAssets(), + { + name: 'dynamic-import-polyfill', + renderDynamicImport (): { left: string, right: string } { + return { + left: 'import(', + right: ').then(module => module.default ?? module)' + } } - } - }, - extensionDirectoryPlugin({ - include: `${DEFAULT_EXTENSIONS_PATH}/**/*`, - transformManifest (manifest) { - if (manifest.name === 'configuration-editing') { + }, + extensionDirectoryPlugin({ + include: `${DEFAULT_EXTENSIONS_PATH}/**/*`, + transformManifest (manifest) { + if (manifest.name === 'configuration-editing') { + manifest = { + ...manifest, + contributes: { + ...manifest.contributes, + jsonValidation: manifest.contributes!.jsonValidation!.map(validation => { + return { + fileMatch: (validation.fileMatch as string).replaceAll('%APP_SETTINGS_HOME%', 'user:'), + url: validation.url + } + }) + } + } + } return { ...manifest, - contributes: { - ...manifest.contributes, - jsonValidation: manifest.contributes!.jsonValidation!.map(validation => { - return { - fileMatch: (validation.fileMatch as string).replaceAll('%APP_SETTINGS_HOME%', 'user:'), - url: validation.url - } - }) + main: undefined + } + }, + async getAdditionalResources (manifest, directory) { + if (manifest.name === 'typescript-language-features') { + const files = (await fsPromise.readdir(path.resolve(directory, 'dist/browser/typescript'), { + withFileTypes: true + })).filter(f => f.isFile()).map(f => f.name) + return files.map(file => ({ path: path.join('./dist/browser/typescript', file), mimeType: 'text/plain' })) + } + return [] + } + }), + metadataPlugin({ + handle (_, dependencies, entrypoints, options, bundle) { + const entrypoint = Object.values(bundle).filter(v => (v as rollup.OutputChunk).isEntry)[0]!.fileName + const packageJson: PackageJson = { + name: `@codingame/monaco-vscode-${name}-default-extension`, + ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), + private: false, + description: `Default VSCode extension designed to be used with ${pkg.name}`, + main: entrypoint, + module: entrypoint, + types: 'index.d.ts', + dependencies: { + vscode: `npm:${pkg.name}@^${pkg.version}`, + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))) } } + + this.emitFile({ + fileName: 'package.json', + needsCodeReference: false, + source: JSON.stringify(packageJson, null, 2), + type: 'asset' + }) + + this.emitFile({ + fileName: 'index.d.ts', + needsCodeReference: false, + source: 'declare const whenReady: () => Promise\nexport { whenReady }', + type: 'asset' + }) } - return manifest + }) + ] + })), ...[{ + name: '@codingame/monaco-vscode-all-default-extensions', + directory: 'default-extension-all', + extensions: defaultExtensions + }, { + name: '@codingame/monaco-vscode-all-language-default-extensions', + directory: 'default-extension-all-languages', + extensions: languageGrammarExtensions + }, { + name: '@codingame/monaco-vscode-all-language-feature-default-extensions', + directory: 'default-extension-all-language-features', + extensions: languageFeatureExtensions + }].map(({ name, directory, extensions }) => ({ + input: 'index.js', + output: [{ + format: 'esm', + dir: 'dist/' + directory, + entryFileNames: 'index.js' + }], + external () { + return true + }, + plugins: [{ + name: 'code-loader', + resolveId () { + return 'index.js' }, - async getAdditionalResources (manifest, directory) { - if (manifest.name === 'typescript-language-features') { - const files = (await fsPromise.readdir(path.resolve(directory, 'dist/browser/typescript'), { - withFileTypes: true - })).filter(f => f.isFile()).map(f => f.name) - return files.map(file => ({ path: path.join('./dist/browser/typescript', file), mimeType: 'text/plain' })) + load () { + return ` +${extensions.map(name => `import { whenReady as whenReady${pascalCase(name)} } from '@codingame/monaco-vscode-${name}-default-extension'`).join('\n')} +const whenReady = Promise.all( +${extensions.map(name => ` whenReady${pascalCase(name)}()`).join(',\n')} +) + ` + } + }, + metadataPlugin({ + handle (_, dependencies, entrypoints, options, bundle) { + const entrypoint = Object.values(bundle).filter(v => (v as rollup.OutputChunk).isEntry)[0]!.fileName + const packageJson: PackageJson = { + name, + ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), + private: false, + description: `Meta package including default VSCode extensions designed to be used with ${pkg.name}`, + main: entrypoint, + module: entrypoint, + types: 'index.d.ts', + dependencies: Object.fromEntries(Array.from(dependencies).map(name => [ + name, + pkg.version + ])) } - return [] + + this.emitFile({ + fileName: 'package.json', + needsCodeReference: false, + source: JSON.stringify(packageJson, null, 2), + type: 'asset' + }) + + this.emitFile({ + fileName: 'index.d.ts', + needsCodeReference: false, + source: 'declare const whenReady: () => Promise\nexport { whenReady }', + type: 'asset' + }) } })] -}))) + }))]) diff --git a/rollup/rollup.rollup-plugins.config.ts b/rollup/rollup.rollup-plugins.config.ts index d38b8e0a..39fbedcd 100644 --- a/rollup/rollup.rollup-plugins.config.ts +++ b/rollup/rollup.rollup-plugins.config.ts @@ -3,45 +3,82 @@ import * as rollup from 'rollup' import typescript from '@rollup/plugin-typescript' import commonjs from '@rollup/plugin-commonjs' import json from '@rollup/plugin-json' +import { PackageJson } from 'type-fest' import * as path from 'path' import { fileURLToPath } from 'url' +import metadataPlugin from './rollup-metadata-plugin' +import pkg from '../package.json' assert { type: 'json' } const __dirname = path.dirname(fileURLToPath(import.meta.url)) const EXTENSIONS = ['', '.ts', '.js'] const BASE_DIR = path.resolve(__dirname, '..') const TSCONFIG = path.resolve(BASE_DIR, 'tsconfig.rollup.json') -const config: rollup.RollupOptions = { +const config: rollup.RollupOptions[] = [{ + input: 'src/rollup-vsix-plugin.ts', + output: 'dist/rollup-vsix-plugin', + description: `Rollup plugin used to load VSCode extension files (VSIX), designed to be used with ${pkg.name}` +}, { + input: 'src/rollup-extension-directory-plugin.ts', + output: 'dist/rollup-extension-directory-plugin', + description: `Rollup plugin used to load VSCode extension already extracted inside a directory, designed to be used with ${pkg.name}` +}].map(({ input, output, description }) => ({ cache: false, - external: ['@rollup/pluginutils', 'path', 'yauzl', 'fsevents'], + external: [ + ...Object.keys({ ...pkg.dependencies }), + '@rollup/pluginutils' + ], output: [{ format: 'esm', - dir: 'dist', + dir: output, entryFileNames: '[name].js', chunkFileNames: '[name].js' }], - input: [ - 'src/rollup-vsix-plugin.ts', - 'src/rollup-extension-directory-plugin.ts' - ], + input, plugins: [ commonjs(), nodeResolve({ extensions: EXTENSIONS, - modulePaths: ['vscode/'], + modulePaths: ['vscode/src/'], browser: false, preferBuiltins: true }), typescript({ noEmitOnError: true, - tsconfig: TSCONFIG + tsconfig: TSCONFIG, + compilerOptions: { + outDir: output + } }), json({ compact: true, namedExports: false, preferConst: false + }), + metadataPlugin({ + handle (_, dependencies) { + const packageJson: PackageJson = { + name: `@codingame/monaco-vscode-${path.basename(output)}`, + ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), + private: false, + description, + main: `${path.basename(output)}.js`, + module: `${path.basename(output)}.js`, + types: `${path.basename(output)}.d.ts`, + dependencies: { + vscode: `npm:${pkg.name}@^${pkg.version}`, + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))) + } + } + this.emitFile({ + fileName: 'package.json', + needsCodeReference: false, + source: JSON.stringify(packageJson, null, 2), + type: 'asset' + }) + } }) ] -} +})) export default config diff --git a/rollup/rollup.server.config.ts b/rollup/rollup.server.config.ts new file mode 100644 index 00000000..8cfacd67 --- /dev/null +++ b/rollup/rollup.server.config.ts @@ -0,0 +1,86 @@ +import nodeResolve from '@rollup/plugin-node-resolve' +import * as rollup from 'rollup' +import typescript from '@rollup/plugin-typescript' +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import { PackageJson } from 'type-fest' +import * as path from 'path' +import { fileURLToPath } from 'url' +import metadataPlugin from './rollup-metadata-plugin.js' +import pkg from '../package.json' assert { type: 'json' } + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const EXTENSIONS = ['', '.ts', '.js'] +const BASE_DIR = path.resolve(__dirname, '..') +const TSCONFIG = path.resolve(BASE_DIR, 'tsconfig.rollup.json') + +const externals = Object.keys(pkg.dependencies) +const config: rollup.RollupOptions = { + cache: false, + external: (source) => { + if (source === 'graceful-fs' || source === 'xterm-headless') { + // commonjs module + return false + } + return externals.some(external => source === external || source.startsWith(`${external}/`)) + }, + output: [{ + format: 'esm', + dir: 'dist/server', + entryFileNames: '[name].js', + chunkFileNames: '[name].js', + banner: (module) => module.isEntry ? '#!/usr/bin/env node' : '' + }], + input: { + server: 'src/server/server.ts', + 'bootstrap-fork': 'src/server/bootstrap-fork.ts' + }, + plugins: [ + json({ + compact: true, + namedExports: false, + preferConst: false + }), + commonjs({ + ignoreDynamicRequires: true + }), + nodeResolve({ + extensions: EXTENSIONS, + modulePaths: ['vscode/src'], + browser: false, + preferBuiltins: true + }), + typescript({ + noEmitOnError: true, + tsconfig: TSCONFIG, + compilerOptions: { + outDir: 'dist/server' + } + }), + metadataPlugin({ + handle (_, dependencies) { + const packageJson: PackageJson = { + name: '@codingame/monaco-vscode-server', + ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), + private: false, + description: `VSCode server designed to be used with ${pkg.name}`, + bin: { + 'vscode-ext-host-server': './server.js' + }, + dependencies: { + vscode: `npm:${pkg.name}@^${pkg.version}`, + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))) + } + } + this.emitFile({ + fileName: 'package.json', + needsCodeReference: false, + source: JSON.stringify(packageJson, null, 2), + type: 'asset' + }) + } + }) + ] +} + +export default config diff --git a/rollup/rollup.treemending-script.config.ts b/rollup/rollup.treemending-script.config.ts index 2644ef4f..87bcb23a 100644 --- a/rollup/rollup.treemending-script.config.ts +++ b/rollup/rollup.treemending-script.config.ts @@ -1,8 +1,11 @@ import nodeResolve from '@rollup/plugin-node-resolve' import * as rollup from 'rollup' import typescript from '@rollup/plugin-typescript' +import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets' +import replace from '@rollup/plugin-replace' import * as path from 'path' import { fileURLToPath } from 'url' +import pkg from '../package.json' assert { type: 'json' } const __dirname = path.dirname(fileURLToPath(import.meta.url)) const EXTENSIONS = ['', '.ts', '.js'] @@ -14,23 +17,33 @@ const config: rollup.RollupOptions = { external: ['path'], output: [{ format: 'esm', - dir: 'dist', - entryFileNames: '[name].js' + dir: 'dist/main', + entryFileNames: '[name].js', + assetFileNames: '[name][extname]', + banner: (module) => module.isEntry ? '#!/usr/bin/env node' : '' }], input: [ 'src/monaco-treemending.ts' ], plugins: [ + replace({ + MONACO_VERSION: JSON.stringify(pkg.dependencies['monaco-editor']), + preventAssignment: true + }), nodeResolve({ extensions: EXTENSIONS, - modulePaths: ['vscode/'], + modulePaths: ['vscode/src/'], browser: false, preferBuiltins: true }), typescript({ noEmitOnError: true, - tsconfig: TSCONFIG - }) + tsconfig: TSCONFIG, + compilerOptions: { + outDir: 'dist/main' + } + }), + importMetaAssets() ] } diff --git a/rollup/rollup.types.config.ts b/rollup/rollup.types.config.ts index 6ed24533..2c3d5312 100644 --- a/rollup/rollup.types.config.ts +++ b/rollup/rollup.types.config.ts @@ -15,6 +15,7 @@ const project = new tsMorph.Project({ }) const VSCODE_DIR = path.join(__dirname, '../vscode') +const VSCODE_SRC_DIR = path.join(VSCODE_DIR, 'src') const DIST_DIR = path.join(__dirname, '../dist') const interfaceOverride = new Map() @@ -30,25 +31,37 @@ interfaceOverride.set('IStandaloneDiffEditor', 'monaco.editor.IStandaloneDiffEdi interfaceOverride.set('IStandaloneEditorConstructionOptions', 'monaco.editor.IStandaloneEditorConstructionOptions') interfaceOverride.set('IStandaloneDiffEditorConstructionOptions', 'monaco.editor.IStandaloneDiffEditorConstructionOptions') -export default rollup.defineConfig({ - input: Object.fromEntries([ +export default rollup.defineConfig([{ + input: [ './dist/types/src/services.d.ts', './dist/types/src/extensions.d.ts', ...fs.readdirSync(path.resolve(DIST_DIR, 'types/src/service-override'), { withFileTypes: true }) .filter(f => f.isFile()) .map(f => f.name) .map(name => `./dist/types/src/service-override/${name}`), - './dist/types/src/monaco.d.ts', - './dist/types/src/rollup-vsix-plugin.d.ts', + './dist/types/src/monaco.d.ts' + ], + output: 'dist/main' +}, { + input: [ + './dist/types/src/rollup-vsix-plugin.d.ts' + ], + output: 'dist/rollup-vsix-plugin' +}, { + input: [ './dist/types/src/rollup-extension-directory-plugin.d.ts' - ].map(input => ([ + ], + output: 'dist/rollup-extension-directory-plugin' +}].map(({ input, output }) => ({ + input: Object.fromEntries(input.map(input => ([ path.relative(path.resolve(DIST_DIR, 'types/src'), path.resolve(__dirname, '..', input)).slice(0, -3), input ]))), output: { preserveModules: true, + preserveModulesRoot: 'dist/types/src', format: 'esm', - dir: 'dist', + dir: output, entryFileNames: chunk => `${chunk.name}.ts`, chunkFileNames: chunk => `${chunk.name}.ts`, assetFileNames: chunk => `${chunk.name}.ts` @@ -114,11 +127,11 @@ export default rollup.defineConfig({ if (importee.startsWith('vscode/')) { return path.resolve(VSCODE_DIR, path.relative('vscode', `${importee}.d.ts`)) } - if (!importee.startsWith('vs/') && importer != null && importer.startsWith(VSCODE_DIR)) { - importee = path.relative(VSCODE_DIR, path.resolve(path.dirname(importer), importee)) + if (!importee.startsWith('vs/') && importer != null && importer.startsWith(VSCODE_SRC_DIR)) { + importee = path.relative(VSCODE_SRC_DIR, path.resolve(path.dirname(importer), importee)) } if (importee.startsWith('vs/')) { - return path.join(VSCODE_DIR, `${importee}.d.ts`) + return path.join(VSCODE_SRC_DIR, `${importee}.d.ts`) } return undefined } @@ -127,4 +140,4 @@ export default rollup.defineConfig({ respectExternal: true }) ] -}) +}))) diff --git a/scripts/generate-types b/scripts/generate-types index 806e7b02..4eb40f18 100755 --- a/scripts/generate-types +++ b/scripts/generate-types @@ -11,4 +11,4 @@ rollup --config rollup/rollup.types.config.ts --configPlugin 'typescript={tsconf rm -rf ./dist/types # copy vscode required namespaces -cp vscode/vs/workbench/contrib/debug/common/debugProtocol.d.ts dist/ +cp vscode/src/vs/workbench/contrib/debug/common/debugProtocol.d.ts dist/main/ diff --git a/scripts/install-vscode b/scripts/install-vscode index cf606e22..fe01601e 100755 --- a/scripts/install-vscode +++ b/scripts/install-vscode @@ -75,7 +75,6 @@ cat << EOF | node - 'vs/base/worker/workerMain.ts', ], renames: { - 'vs/nls.mock.ts': 'vs/nls.ts' } }); EOF @@ -88,16 +87,14 @@ cd src # Remove useless files rm -rf `find . -name '*.test.ts' -o -name 'test' -o -name 'electron-browser'` rm -rf vs/code -rm -rf vs/server -rm *.js mkdir -p $output_directory echo $vscodeRef > $version_info echo "Building vscode..." -NODE_OPTIONS=--max-old-space-size=8192 npx tsc --declaration --importHelpers --module es2020 --preserveConstEnums --outDir "$output_directory/vs" +NODE_OPTIONS=--max-old-space-size=8192 npx tsc --declaration --importHelpers --module es2020 --preserveConstEnums --outDir "$output_directory" # Copy files that are already built -find ./vs \( -name '*.js' -o -name '*.d.ts' -o -name '*.css' -o -name '*.mp3' -o -name '*.svg' -o -name '*.html' \) -exec rsync -R \{\} "$output_directory/" \; +find ./ \( -name '*.js' -o -name '*.d.ts' -o -name '*.css' -o -name '*.mp3' -o -name '*.svg' -o -name '*.html' \) -exec rsync -R \{\} "$output_directory/src" \; echo "Cleaning..." rm -rf $build_directory diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 22c09d01..d2710f90 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -112,6 +112,17 @@ index 191c2d03f63..f1526cf68ac 100644 }); } +diff --git a/src/tsconfig.base.json b/src/tsconfig.base.json +index c0a2e174591..7cc68fbc22b 100644 +--- a/src/tsconfig.base.json ++++ b/src/tsconfig.base.json +@@ -1,5 +1,6 @@ + { + "compilerOptions": { ++ "esModuleInterop": true, + "module": "amd", + "moduleResolution": "node", + "experimentalDecorators": true, diff --git a/src/vs/base/browser/defaultWorkerFactory.ts b/src/vs/base/browser/defaultWorkerFactory.ts index 4f42810f0bd..58b0747c812 100644 --- a/src/vs/base/browser/defaultWorkerFactory.ts @@ -127,7 +138,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..93e9daad96b 100644 +index b00899c50db..825c7a073bf 100644 --- a/src/vs/base/common/network.ts +++ b/src/vs/base/common/network.ts @@ -4,6 +4,8 @@ @@ -152,7 +163,7 @@ index b00899c50db..93e9daad96b 100644 */ asBrowserUri(resourcePath: AppResourcePath | ''): URI { - const uri = this.toUri(resourcePath, require); -+ const uri = this.toUri(resourcePath, (window as any).monacoRequire); ++ const uri = this.toUri(resourcePath, (globalThis as any).monacoRequire); return this.uriToBrowserUri(uri); } @@ -170,7 +181,7 @@ index b00899c50db..93e9daad96b 100644 */ asFileUri(resourcePath: AppResourcePath | ''): URI { - const uri = this.toUri(resourcePath, require); -+ const uri = this.toUri(resourcePath, (window as any).monacoRequire); ++ const uri = this.toUri(resourcePath, (globalThis as any).monacoRequire); return this.uriToFileUri(uri); } @@ -306,6 +317,93 @@ index 67e34826627..7c5287d6a32 100644 filterProviders: [filterProvider], 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 63243fcf3a0..d948ee599cf 100644 +--- a/src/vs/platform/environment/node/argv.ts ++++ b/src/vs/platform/environment/node/argv.ts +@@ -3,7 +3,7 @@ + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +-import * as minimist from 'minimist'; ++import minimist from 'minimist'; + import { isWindows } from 'vs/base/common/platform'; + import { localize } from 'vs/nls'; + import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; +diff --git a/src/vs/platform/environment/node/argvHelper.ts b/src/vs/platform/environment/node/argvHelper.ts +index d8cefb6df67..a94fca911ea 100644 +--- a/src/vs/platform/environment/node/argvHelper.ts ++++ b/src/vs/platform/environment/node/argvHelper.ts +@@ -3,7 +3,7 @@ + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +-import * as assert from 'assert'; ++import assert from 'assert'; + import { IProcessEnvironment } from 'vs/base/common/platform'; + import { localize } from 'vs/nls'; + import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; +diff --git a/src/vs/platform/files/node/diskFileSystemProvider.ts b/src/vs/platform/files/node/diskFileSystemProvider.ts +index 4ea7d28e214..71ae1c060b0 100644 +--- a/src/vs/platform/files/node/diskFileSystemProvider.ts ++++ b/src/vs/platform/files/node/diskFileSystemProvider.ts +@@ -4,7 +4,6 @@ + *--------------------------------------------------------------------------------------------*/ + + import * as fs from 'fs'; +-import { gracefulify } from 'graceful-fs'; + import { Barrier, retry } from 'vs/base/common/async'; + 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 { ILogService } from 'vs/platform/log/common/log'; + import { AbstractDiskFileSystemProvider, IDiskFileSystemProviderOptions } from 'vs/platform/files/common/diskFileSystemProvider'; +-import { toErrorMessage } from 'vs/base/common/errorMessage'; + import { UniversalWatcherClient } from 'vs/platform/files/node/watcher/watcherClient'; + import { NodeJSWatcherClient } from 'vs/platform/files/node/watcher/nodejs/nodejsClient'; + +-/** +- * Enable graceful-fs very early from here to have it enabled +- * in all contexts that leverage the disk file system provider. +- */ +-(() => { +- try { +- gracefulify(fs); +- } catch (error) { +- console.error(`Error enabling graceful-fs: ${toErrorMessage(error)}`); +- } +-})(); +- + export class DiskFileSystemProvider extends AbstractDiskFileSystemProvider implements + IFileSystemProviderWithFileReadWriteCapability, + IFileSystemProviderWithOpenReadWriteCloseCapability, +diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts +index 053f3822d27..46fd5932bc5 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 + async isAdmin(): Promise { + let isAdmin: boolean; + if (isWindows) { +- isAdmin = (await import('native-is-elevated'))(); ++ isAdmin = (await import('native-is-elevated')).default(); + } 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 @@ -509,6 +607,88 @@ index 40f1cdaf146..03ff0c1ffae 100644 private static _transform(initData: IExtensionHostInitData, rpcProtocol: RPCProtocol): IExtensionHostInitData { initData.allExtensions.forEach((ext) => { (>ext).extensionLocation = URI.revive(rpcProtocol.transformIncomingURIs(ext.extensionLocation)); +diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts +index 5ac0ddc7ec9..6ea024b237b 100644 +--- a/src/vs/workbench/api/node/extHostExtensionService.ts ++++ b/src/vs/workbench/api/node/extHostExtensionService.ts +@@ -19,6 +19,11 @@ import { realpathSync } from 'vs/base/node/extpath'; + import { ExtHostConsoleForwarder } from 'vs/workbench/api/node/extHostConsoleForwarder'; + import { ExtHostDiskFileSystemProvider } from 'vs/workbench/api/node/extHostDiskFileSystemProvider'; + ++// ESM-uncomment-begin ++// import { createRequire } from 'node:module'; ++// globalThis.require = createRequire(import.meta.url); ++// ESM-uncomment-end ++ + class NodeModuleRequireInterceptor extends RequireInterceptor { + + protected _installInterceptor(): void { +@@ -109,7 +114,7 @@ export class ExtHostExtensionService extends AbstractExtHostExtensionService { + if (extensionId) { + performance.mark(`code/extHost/willLoadExtensionCode/${extensionId}`); + } +- r = require.__$__nodeRequire(module.fsPath); ++ r = await require(module.fsPath); + } finally { + if (extensionId) { + performance.mark(`code/extHost/didLoadExtensionCode/${extensionId}`); +diff --git a/src/vs/workbench/api/node/extensionHostProcess.ts b/src/vs/workbench/api/node/extensionHostProcess.ts +index bb3cbfbca7b..b650ff592b1 100644 +--- a/src/vs/workbench/api/node/extensionHostProcess.ts ++++ b/src/vs/workbench/api/node/extensionHostProcess.ts +@@ -5,7 +5,7 @@ + + import * as nativeWatchdog from 'native-watchdog'; + import * as net from 'net'; +-import * as minimist from 'minimist'; ++import minimist from 'minimist'; + import * as performance from 'vs/base/common/performance'; + import type { MessagePortMain } from 'vs/base/parts/sandbox/node/electronTypes'; + import { isCancellationError, isSigPipeError, onUnexpectedError } from 'vs/base/common/errors'; +@@ -56,24 +56,6 @@ const args = minimist(process.argv.slice(2), { + ] + }) as ParsedExtHostArgs; + +-// With Electron 2.x and node.js 8.x the "natives" module +-// can cause a native crash (see https://github.com/nodejs/node/issues/19891 and +-// https://github.com/electron/electron/issues/10905). To prevent this from +-// happening we essentially blocklist this module from getting loaded in any +-// extension by patching the node require() function. +-(function () { +- const Module = globalThis._VSCODE_NODE_MODULES.module as any; +- const originalLoad = Module._load; +- +- Module._load = function (request: string) { +- if (request === 'natives') { +- throw new Error('Either the extension or an NPM dependency is using the [unsupported "natives" node module](https://go.microsoft.com/fwlink/?linkid=871887).'); +- } +- +- return originalLoad.apply(this, arguments); +- }; +-})(); +- + // custom process.exit logic... + 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 6c0cd980ced..04084152187 100644 +--- a/src/vs/workbench/api/node/proxyResolver.ts ++++ b/src/vs/workbench/api/node/proxyResolver.ts +@@ -67,10 +67,10 @@ export function connectProxyResolver( + + function createPatchedModules(params: ProxyAgentParams, resolveProxy: ReturnType) { + return { +- http: Object.assign(http, createHttpPatch(params, http, resolveProxy)), +- https: Object.assign(https, createHttpPatch(params, https, resolveProxy)), +- net: Object.assign(net, createNetPatch(params, net)), +- tls: Object.assign(tls, createTlsPatch(params, tls)) ++ http: Object.assign({ ...http }, createHttpPatch(params, http, resolveProxy)), ++ https: Object.assign({ ...https }, createHttpPatch(params, https, resolveProxy)), ++ net: Object.assign({ ...net }, createNetPatch(params, net)), ++ tls: Object.assign({ ...tls }, createTlsPatch(params, tls)) + }; + } + diff --git a/src/vs/workbench/api/worker/extHost.worker.services.ts b/src/vs/workbench/api/worker/extHost.worker.services.ts index 20ec7e138a6..e284ed6752b 100644 --- a/src/vs/workbench/api/worker/extHost.worker.services.ts @@ -1085,7 +1265,7 @@ index d8652bf5ac0..d0cf61f0983 100644 getInitData: async (): Promise => { if (isInitialStart) { diff --git a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts -index ad66755797e..b708a040708 100644 +index ad66755797e..98d63a5eecf 100644 --- a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts +++ b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts @@ -76,7 +76,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost @@ -1106,6 +1286,48 @@ index ad66755797e..b708a040708 100644 } const relativeExtensionHostIframeSrc = FileAccess.asBrowserUri(iframeModulePath); +@@ -128,6 +126,8 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost + } + + private async _startInsideIframe(): Promise { ++ const initDataPromise = this._initDataProvider.getInitData(); ++ + const webWorkerExtensionHostIframeSrc = await this._getWebWorkerExtensionHostIframeSrc(); + const emitter = this._register(new Emitter()); + +@@ -223,10 +223,10 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost + } + }; + +- return this._performHandshake(protocol); ++ return this._performHandshake(protocol, initDataPromise); + } + +- private async _performHandshake(protocol: IMessagePassingProtocol): Promise { ++ private async _performHandshake(protocol: IMessagePassingProtocol, initDataPromise: Promise): Promise { + // extension host handshake happens below + // (1) <== wait for: Ready + // (2) ==> send: init data +@@ -236,7 +236,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost + if (this._isTerminating) { + throw canceled(); + } +- protocol.send(VSBuffer.fromString(JSON.stringify(await this._createExtHostInitData()))); ++ protocol.send(VSBuffer.fromString(JSON.stringify(await this._createExtHostInitData(initDataPromise)))); + if (this._isTerminating) { + throw canceled(); + } +@@ -265,8 +265,8 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost + return Promise.resolve(false); + } + +- private async _createExtHostInitData(): Promise { +- const initData = await this._initDataProvider.getInitData(); ++ private async _createExtHostInitData(initDataPromise: Promise): Promise { ++ const initData = await initDataPromise; + const workspace = this._contextService.getWorkspace(); + const deltaExtensions = this.extensions.set(initData.allExtensions, initData.myExtensions); + const nlsBaseUrl = this._productService.extensionsGallery?.nlsBaseUrl; diff --git a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts index c529886ca92..2311e7a0fb5 100644 --- a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts @@ -1141,6 +1363,98 @@ index c529886ca92..2311e7a0fb5 100644 constructor( public readonly toAdd: IExtension[], public readonly toRemove: string[] | IExtension[] +diff --git a/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts +index 7ac17418689..fedd15e8fb6 100644 +--- a/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts ++++ b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts +@@ -84,7 +84,7 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost { + this._isExtensionDevHost = devOpts.isExtensionDevHost; + } + +- public start(): Promise { ++ public async start(): Promise { + const options: IConnectionOptions = { + commit: this._productService.commit, + quality: this._productService.quality, +@@ -99,6 +99,8 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost { + logService: this._logService, + ipcLogger: null + }; ++ const initDataPromise = this._initDataProvider.getInitData(); ++ + return this.remoteAuthorityResolverService.resolveAuthority(this._initDataProvider.remoteAuthority).then((resolverResult) => { + + const startParams: IRemoteExtensionHostStartParams = { +@@ -153,7 +155,7 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost { + + if (isMessageOfType(msg, MessageType.Ready)) { + // 1) Extension Host is ready to receive messages, initialize it +- this._createExtHostInitData(isExtensionDevelopmentDebug).then(data => { ++ this._createExtHostInitData(initDataPromise, isExtensionDevelopmentDebug).then(data => { + protocol.send(VSBuffer.fromString(JSON.stringify(data))); + }); + return; +@@ -201,8 +203,8 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost { + this._onExit.fire([0, reconnectionToken]); + } + +- private async _createExtHostInitData(isExtensionDevelopmentDebug: boolean): Promise { +- const remoteInitData = await this._initDataProvider.getInitData(); ++ private async _createExtHostInitData(initDataPromise: Promise, isExtensionDevelopmentDebug: boolean): Promise { ++ const remoteInitData = await initDataPromise; + const workspace = this._contextService.getWorkspace(); + const deltaExtensions = this.extensions.set(remoteInitData.allExtensions, remoteInitData.myExtensions); + return { +diff --git a/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts b/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts +index b72e19b9ec6..79278e098bb 100644 +--- a/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts ++++ b/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts +@@ -190,6 +190,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { + } + + protected async _startWithCommunication(communication: IExtHostCommunication): Promise { ++ const initDataPromise = this._initDataProvider.getInitData(); + + const [extensionHostCreationResult, communicationPreparedData, portNumber, processEnv] = await Promise.all([ + this._extensionHostStarter.createExtensionHost(), +@@ -325,7 +326,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { + + // Initialize extension host process with hand shakes + const protocol = await communication.establishProtocol(communicationPreparedData, this._extensionHostProcess, opts); +- await this._performHandshake(protocol); ++ await this._performHandshake(protocol, initDataPromise); + clearTimeout(startupTimeoutHandle); + return protocol; + } +@@ -360,7 +361,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { + return port || 0; + } + +- private _performHandshake(protocol: IMessagePassingProtocol): Promise { ++ private _performHandshake(protocol: IMessagePassingProtocol, initDataPromise: Promise): Promise { + // 1) wait for the incoming `ready` event and send the initialization data. + // 2) wait for the incoming `initialized` event. + return new Promise((resolve, reject) => { +@@ -385,7 +386,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { + // 1) Extension Host is ready to receive messages, initialize it + uninstallTimeoutCheck(); + +- this._createExtHostInitData().then(data => { ++ this._createExtHostInitData(initDataPromise).then(data => { + + // Wait 60s for the initialized message + installTimeoutCheck(); +@@ -414,8 +415,8 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { + }); + } + +- private async _createExtHostInitData(): Promise { +- const initData = await this._initDataProvider.getInitData(); ++ private async _createExtHostInitData(initDataPromise: Promise): Promise { ++ const initData = await initDataPromise; + const workspace = this._contextService.getWorkspace(); + const deltaExtensions = this.extensions.set(initData.allExtensions, initData.myExtensions); + return { diff --git a/src/vs/workbench/services/keybinding/browser/keybindingService.ts b/src/vs/workbench/services/keybinding/browser/keybindingService.ts index e6112182d25..0bc70e55633 100644 --- a/src/vs/workbench/services/keybinding/browser/keybindingService.ts @@ -1451,3 +1765,28 @@ index ad67fb4f422..fadf86cece5 100644 // ensure to limit buffer for guessing due to https://github.com/aadsm/jschardet/issues/53 const limitedBuffer = buffer.slice(0, AUTO_ENCODING_GUESS_MAX_BYTES); +diff --git a/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts b/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts +index 4653e395be9..1eccfce4bf4 100644 +--- a/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts ++++ b/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts +@@ -14,7 +14,7 @@ import { ConfigurationScope, IConfigurationRegistry, Extensions as Configuration + import { Registry } from 'vs/platform/registry/common/platform'; + import { ICommandService } from 'vs/platform/commands/common/commands'; + import { distinct, firstOrDefault } from 'vs/base/common/arrays'; +-import { basename, isEqual, isEqualAuthority, joinPath, removeTrailingPathSeparator } from 'vs/base/common/resources'; ++import { basename, isEqual, joinPath, removeTrailingPathSeparator } from 'vs/base/common/resources'; + import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; + import { IFileService } from 'vs/platform/files/common/files'; + import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; +@@ -169,11 +169,6 @@ export abstract class AbstractWorkspaceEditingService implements IWorkspaceEditi + + private async doAddFolders(foldersToAdd: IWorkspaceFolderCreationData[], index?: number, donotNotifyError: boolean = false): Promise { + const state = this.contextService.getWorkbenchState(); +- const remoteAuthority = this.environmentService.remoteAuthority; +- if (remoteAuthority) { +- // https://github.com/microsoft/vscode/issues/94191 +- foldersToAdd = foldersToAdd.filter(folder => folder.uri.scheme !== Schemas.file && (folder.uri.scheme !== Schemas.vscodeRemote || isEqualAuthority(folder.uri.authority, remoteAuthority))); +- } + + // If we are in no-workspace or single-folder workspace, adding folders has to + // enter a workspace. diff --git a/src/api.ts b/src/api.ts index b32ed18a..ad57613d 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,24 +1,21 @@ /// -/// -/// -/// -/// -/// import * as extHostTypes from 'vs/workbench/api/common/extHostTypes' import * as errors from 'vs/base/common/errors' -import * as commonDebug from 'vs/workbench/contrib/debug/common/debug' import * as files from 'vs/platform/files/common/files' -import * as extensionHostProtocol from 'vs/workbench/services/extensions/common/extensionHostProtocol' import type * as vscode from 'vscode' +import * as languageConfiguration from 'vs/editor/common/languages/languageConfiguration' import * as cancellation from 'vs/base/common/cancellation' +import * as extHostProtocol from 'vs/workbench/api/common/extHost.protocol' +import * as debugTypes from 'vs/workbench/contrib/debug/common/debug' import * as event from 'vs/base/common/event' -import * as languageConfiguration from 'vs/editor/common/languages/languageConfiguration' import * as model from 'vs/editor/common/model' +import * as extensionHostProtocol from 'vs/workbench/services/extensions/common/extensionHostProtocol' +import * as searchExtTypes from 'vs/workbench/services/search/common/searchExtTypes' +import * as telemetryUtils from 'vs/platform/telemetry/common/telemetryUtils' +import * as log from 'vs/platform/log/common/log' +import * as editSessions from 'vs/platform/workspace/common/editSessions' import * as editorOptions from 'vs/editor/common/config/editorOptions' import * as uri from 'vs/base/common/uri' -import * as log from 'vs/platform/log/common/log' -import * as telemetryUtils from 'vs/platform/telemetry/common/telemetryUtils' -import * as searchExtHostTypes from 'vs/workbench/services/search/common/searchExtTypes' let defaultApi: typeof vscode | undefined @@ -38,9 +35,6 @@ function createProxy (key: T): typeof vscode[T] { }) as typeof vscode[T] } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const unsupported = undefined - const api: typeof vscode = { version: VSCODE_VERSION, tasks: createProxy('tasks'), @@ -57,13 +51,22 @@ const api: typeof vscode = { workspace: createProxy('workspace'), languages: createProxy('languages'), l10n: createProxy('l10n'), + interactive: createProxy('interactive'), + ai: createProxy('ai'), + chat: createProxy('chat'), + // types Breakpoint: extHostTypes.Breakpoint, + TerminalOutputAnchor: extHostTypes.TerminalOutputAnchor, + ChatMessage: extHostTypes.ChatMessage, + ChatMessageRole: extHostTypes.ChatMessageRole, + ChatVariableLevel: extHostTypes.ChatVariableLevel, CallHierarchyIncomingCall: extHostTypes.CallHierarchyIncomingCall, CallHierarchyItem: extHostTypes.CallHierarchyItem, CallHierarchyOutgoingCall: extHostTypes.CallHierarchyOutgoingCall, CancellationError: errors.CancellationError, CancellationTokenSource: cancellation.CancellationTokenSource, + CandidatePortSource: extHostProtocol.CandidatePortSource, CodeAction: extHostTypes.CodeAction, CodeActionKind: extHostTypes.CodeActionKind, CodeActionTriggerKind: extHostTypes.CodeActionTriggerKind, @@ -73,7 +76,9 @@ const api: typeof vscode = { ColorPresentation: extHostTypes.ColorPresentation, ColorThemeKind: extHostTypes.ColorThemeKind, CommentMode: extHostTypes.CommentMode, + CommentState: extHostTypes.CommentState, CommentThreadCollapsibleState: extHostTypes.CommentThreadCollapsibleState, + CommentThreadState: extHostTypes.CommentThreadState, CompletionItem: extHostTypes.CompletionItem, CompletionItemKind: extHostTypes.CompletionItemKind, CompletionItemTag: extHostTypes.CompletionItemTag, @@ -86,7 +91,7 @@ const api: typeof vscode = { DebugAdapterInlineImplementation: extHostTypes.DebugAdapterInlineImplementation, DebugAdapterNamedPipeServer: extHostTypes.DebugAdapterNamedPipeServer, DebugAdapterServer: extHostTypes.DebugAdapterServer, - DebugConfigurationProviderTriggerKind: commonDebug.DebugConfigurationProviderTriggerKind, + DebugConfigurationProviderTriggerKind: debugTypes.DebugConfigurationProviderTriggerKind, DebugConsoleMode: extHostTypes.DebugConsoleMode, DecorationRangeBehavior: extHostTypes.DecorationRangeBehavior, Diagnostic: extHostTypes.Diagnostic, @@ -104,12 +109,15 @@ const api: typeof vscode = { InlineValueText: extHostTypes.InlineValueText, InlineValueVariableLookup: extHostTypes.InlineValueVariableLookup, InlineValueEvaluatableExpression: extHostTypes.InlineValueEvaluatableExpression, + InlineCompletionTriggerKind: extHostTypes.InlineCompletionTriggerKind, EventEmitter: event.Emitter, ExtensionKind: extHostTypes.ExtensionKind, ExtensionMode: extHostTypes.ExtensionMode, + ExternalUriOpenerPriority: extHostTypes.ExternalUriOpenerPriority, FileChangeType: extHostTypes.FileChangeType, // eslint-disable-next-line @typescript-eslint/no-explicit-any FileDecoration: extHostTypes.FileDecoration, + FileDecoration2: extHostTypes.FileDecoration, FileSystemError: extHostTypes.FileSystemError, FileType: files.FileType, // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -117,12 +125,16 @@ const api: typeof vscode = { FoldingRange: extHostTypes.FoldingRange, FoldingRangeKind: extHostTypes.FoldingRangeKind, FunctionBreakpoint: extHostTypes.FunctionBreakpoint, + InlineCompletionItem: extHostTypes.InlineSuggestion, + InlineCompletionList: extHostTypes.InlineSuggestionList, Hover: extHostTypes.Hover, IndentAction: languageConfiguration.IndentAction, Location: extHostTypes.Location, MarkdownString: extHostTypes.MarkdownString, OverviewRulerLane: model.OverviewRulerLane, ParameterInformation: extHostTypes.ParameterInformation, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + PortAutoForwardAction: extHostTypes.PortAutoForwardAction, Position: extHostTypes.Position, ProcessExecution: extHostTypes.ProcessExecution, ProgressLocation: extHostTypes.ProgressLocation, @@ -143,21 +155,27 @@ const api: typeof vscode = { SignatureInformation: extHostTypes.SignatureInformation, SnippetString: extHostTypes.SnippetString, SourceBreakpoint: extHostTypes.SourceBreakpoint, + StandardTokenType: extHostTypes.StandardTokenType, StatusBarAlignment: extHostTypes.StatusBarAlignment, // eslint-disable-next-line @typescript-eslint/no-explicit-any SymbolInformation: extHostTypes.SymbolInformation, SymbolKind: extHostTypes.SymbolKind, SymbolTag: extHostTypes.SymbolTag, - Task: unsupported, - TaskGroup: unsupported, - TaskPanelKind: unsupported, - TaskRevealKind: unsupported, - TaskScope: unsupported, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Task: extHostTypes.Task, + TaskGroup: extHostTypes.TaskGroup, + TaskPanelKind: extHostTypes.TaskPanelKind, + TaskRevealKind: extHostTypes.TaskRevealKind, + TaskScope: extHostTypes.TaskScope, TerminalLink: extHostTypes.TerminalLink, + TerminalQuickFixExecuteTerminalCommand: extHostTypes.TerminalQuickFixCommand, + TerminalQuickFixOpener: extHostTypes.TerminalQuickFixOpener, TerminalLocation: extHostTypes.TerminalLocation, TerminalProfile: extHostTypes.TerminalProfile, + TerminalExitReason: extHostTypes.TerminalExitReason, TextDocumentSaveReason: extHostTypes.TextDocumentSaveReason, TextEdit: extHostTypes.TextEdit, + SnippetTextEdit: extHostTypes.SnippetTextEdit, TextEditorCursorStyle: editorOptions.TextEditorCursorStyle, TextEditorLineNumbersStyle: extHostTypes.TextEditorLineNumbersStyle, TextEditorRevealType: extHostTypes.TextEditorRevealType, @@ -166,57 +184,84 @@ const api: typeof vscode = { ThemeColor: extHostTypes.ThemeColor, ThemeIcon: extHostTypes.ThemeIcon, TreeItem: extHostTypes.TreeItem, + TreeItemCheckboxState: extHostTypes.TreeItemCheckboxState, TreeItemCollapsibleState: extHostTypes.TreeItemCollapsibleState, TypeHierarchyItem: extHostTypes.TypeHierarchyItem, UIKind: extensionHostProtocol.UIKind, Uri: uri.URI, ViewColumn: extHostTypes.ViewColumn, WorkspaceEdit: extHostTypes.WorkspaceEdit, + // proposed api types + DocumentDropEdit: extHostTypes.DocumentDropEdit, + DocumentPasteEdit: extHostTypes.DocumentPasteEdit, InlayHint: extHostTypes.InlayHint, InlayHintLabelPart: extHostTypes.InlayHintLabelPart, InlayHintKind: extHostTypes.InlayHintKind, - NotebookRange: unsupported, - NotebookCellKind: unsupported, - NotebookCellData: unsupported, - NotebookData: unsupported, - NotebookCellStatusBarAlignment: unsupported, - NotebookCellOutput: unsupported, - NotebookCellOutputItem: unsupported, - NotebookCellStatusBarItem: unsupported, - NotebookControllerAffinity: unsupported, + RemoteAuthorityResolverError: extHostTypes.RemoteAuthorityResolverError, + ResolvedAuthority: extHostTypes.ResolvedAuthority, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ManagedResolvedAuthority: extHostTypes.ManagedResolvedAuthority, + SourceControlInputBoxValidationType: extHostTypes.SourceControlInputBoxValidationType, + ExtensionRuntime: extHostTypes.ExtensionRuntime, + TimelineItem: extHostTypes.TimelineItem, + NotebookRange: extHostTypes.NotebookRange, + NotebookCellKind: extHostTypes.NotebookCellKind, + NotebookCellExecutionState: extHostTypes.NotebookCellExecutionState, + NotebookCellData: extHostTypes.NotebookCellData, + NotebookData: extHostTypes.NotebookData, + NotebookRendererScript: extHostTypes.NotebookRendererScript, + NotebookCellStatusBarAlignment: extHostTypes.NotebookCellStatusBarAlignment, + NotebookEditorRevealType: extHostTypes.NotebookEditorRevealType, + NotebookCellOutput: extHostTypes.NotebookCellOutput, + NotebookCellOutputItem: extHostTypes.NotebookCellOutputItem, + NotebookCellStatusBarItem: extHostTypes.NotebookCellStatusBarItem, + NotebookControllerAffinity: extHostTypes.NotebookControllerAffinity, + NotebookControllerAffinity2: extHostTypes.NotebookControllerAffinity2, + NotebookEdit: extHostTypes.NotebookEdit, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + NotebookKernelSourceAction: extHostTypes.NotebookKernelSourceAction, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + PortAttributes: extHostTypes.PortAttributes, // eslint-disable-next-line @typescript-eslint/no-explicit-any LinkedEditingRanges: extHostTypes.LinkedEditingRanges, + TestResultState: extHostTypes.TestResultState, TestRunRequest: extHostTypes.TestRunRequest, TestMessage: extHostTypes.TestMessage, + TestMessage2: extHostTypes.TestMessage, TestTag: extHostTypes.TestTag, TestRunProfileKind: extHostTypes.TestRunProfileKind, + TextSearchCompleteMessageType: searchExtTypes.TextSearchCompleteMessageType, DataTransfer: extHostTypes.DataTransfer, DataTransferItem: extHostTypes.DataTransferItem, + CoveredCount: extHostTypes.CoveredCount, + FileCoverage: extHostTypes.FileCoverage, + StatementCoverage: extHostTypes.StatementCoverage, + BranchCoverage: extHostTypes.BranchCoverage, + FunctionCoverage: extHostTypes.FunctionCoverage, LanguageStatusSeverity: extHostTypes.LanguageStatusSeverity, QuickPickItemKind: extHostTypes.QuickPickItemKind, + InputBoxValidationSeverity: extHostTypes.InputBoxValidationSeverity, TabInputText: extHostTypes.TextTabInput, TabInputTextDiff: extHostTypes.TextDiffTabInput, + TabInputTextMerge: extHostTypes.TextMergeTabInput, TabInputCustom: extHostTypes.CustomEditorTabInput, TabInputNotebook: extHostTypes.NotebookEditorTabInput, TabInputNotebookDiff: extHostTypes.NotebookDiffEditorTabInput, TabInputWebview: extHostTypes.WebviewEditorTabInput, TabInputTerminal: extHostTypes.TerminalEditorTabInput, - InputBoxValidationSeverity: extHostTypes.InputBoxValidationSeverity, - InlineCompletionList: extHostTypes.InlineSuggestionList, - InlineCompletionTriggerKind: extHostTypes.InlineCompletionTriggerKind, - InlineCompletionItem: extHostTypes.InlineSuggestion, - DocumentDropEdit: extHostTypes.DocumentDropEdit, - NotebookEditorRevealType: unsupported, - SnippetTextEdit: extHostTypes.SnippetTextEdit, - NotebookEdit: unsupported, - LogLevel: log.LogLevel, - TerminalExitReason: extHostTypes.TerminalExitReason, - CommentThreadState: unsupported, + TabInputInteractiveWindow: extHostTypes.InteractiveWindowInput, TelemetryTrustedValue: telemetryUtils.TelemetryTrustedValue, - TextSearchCompleteMessageType: searchExtHostTypes.TextSearchCompleteMessageType, - DocumentPasteEdit: extHostTypes.DocumentPasteEdit, - ExternalUriOpenerPriority: extHostTypes.ExternalUriOpenerPriority, - TreeItemCheckboxState: extHostTypes.TreeItemCheckboxState + LogLevel: log.LogLevel, + EditSessionIdentityMatch: editSessions.EditSessionIdentityMatch, + InteractiveSessionVoteDirection: extHostTypes.InteractiveSessionVoteDirection, + InteractiveSessionCopyKind: extHostTypes.InteractiveSessionCopyKind, + InteractiveEditorResponseFeedbackKind: extHostTypes.InteractiveEditorResponseFeedbackKind, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + StackFrameFocus: extHostTypes.StackFrameFocus, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ThreadFocus: extHostTypes.ThreadFocus, + NotebookCodeActionKind: extHostTypes.NotebookCodeActionKind, + RelatedInformationType: extHostTypes.RelatedInformationType } // @ts-ignore the syntax will be transformed by a typescript transformer in the rollup config diff --git a/src/assets.ts b/src/assets.ts index 222be33d..478672d8 100644 --- a/src/assets.ts +++ b/src/assets.ts @@ -11,10 +11,11 @@ function toUrl (name: string): string | undefined { if (typeof url === 'function') { url = url() } - return new URL(url!, window.location.href).toString() + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + return new URL(url ?? '', globalThis.location?.href ?? import.meta.url).toString() } // eslint-disable-next-line @typescript-eslint/no-explicit-any -(window as any).monacoRequire = { +(globalThis as any).monacoRequire = { toUrl } diff --git a/src/extension-tools.ts b/src/extension-tools.ts index 08830912..043e6b1d 100644 --- a/src/extension-tools.ts +++ b/src/extension-tools.ts @@ -16,6 +16,7 @@ import * as path from 'path' export interface ExtensionResource { path: string + realPath?: string mimeType?: string } @@ -178,7 +179,12 @@ export async function extractResourcesFromExtensionManifest (manifest: IExtensio } if (manifest.browser != null) { const jsPath = addExtension(manifest.browser, '.js') - resources.push({ path: jsPath, mimeType: 'text/javascript' }) + resources.push({ path: manifest.browser, mimeType: 'text/javascript', realPath: jsPath }) + resources.push(...(await extractResources(jsPath, getFileContent))) + } + if (manifest.main != null) { + const jsPath = addExtension(manifest.main, '.js') + resources.push({ path: manifest.main, mimeType: 'text/javascript', realPath: jsPath }) resources.push(...(await extractResources(jsPath, getFileContent))) } diff --git a/src/extensions.ts b/src/extensions.ts index f32014c8..064ebc1b 100644 --- a/src/extensions.ts +++ b/src/extensions.ts @@ -6,9 +6,10 @@ import { getExtensionId } from 'vs/platform/extensionManagement/common/extension import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle' import { ITranslations, localizeManifest } from 'vs/platform/extensionManagement/common/extensionNls' import { joinPath } from 'vs/base/common/resources' -import { FileAccess } from 'monaco-editor/esm/vs/base/common/network.js' +import { FileAccess, Schemas } from 'vs/base/common/network' import { Barrier } from 'vs/base/common/async' import { ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensionHostKind' +import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService' import { IExtensionWithExtHostKind, SimpleExtensionService, getLocalExtHostExtensionService } from './service-override/extensions' import { registerExtensionFile } from './service-override/files' import { setDefaultApi } from './api' @@ -22,13 +23,30 @@ export async function initialize (): Promise { }) } +interface RegisterExtensionParams { + defaultNLS?: ITranslations + builtin?: boolean + path?: string +} + +interface RegisterRemoteExtensionParams extends RegisterExtensionParams { + path: string +} + interface RegisterExtensionResult { id: string - registerFileUrl: (path: string, url: string) => IDisposable dispose (): Promise + whenReady(): Promise } -interface RegisterLocalProcessExtensionResult extends RegisterExtensionResult { +interface RegisterRemoteExtensionResult extends RegisterExtensionResult { +} + +interface RegisterLocalExtensionResult extends RegisterExtensionResult { + registerFileUrl: (path: string, url: string) => IDisposable +} + +interface RegisterLocalProcessExtensionResult extends RegisterLocalExtensionResult { getApi (): Promise setAsDefaultApi (): Promise } @@ -60,8 +78,8 @@ async function deltaExtensions (toAdd: IExtensionWithExtHostKind[], toRemove: IE _toRemove.push(...toRemove) if (lastPromise == null) { - const extensionService = await getService(IExtensionService) as SimpleExtensionService lastPromise = new Promise(resolve => setTimeout(resolve)).then(async () => { + const extensionService = await getService(IExtensionService) as SimpleExtensionService await extensionService.deltaExtensions(_toAdd, _toRemove) _toAdd = [] _toRemove = [] @@ -71,47 +89,71 @@ async function deltaExtensions (toAdd: IExtensionWithExtHostKind[], toRemove: IE await lastPromise } -export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalProcess, defaultNLS?: ITranslations, builtin?: boolean): RegisterLocalProcessExtensionResult -export function registerExtension (manifest: IExtensionManifest, extHostKind?: ExtensionHostKind, defaultNLS?: ITranslations, builtin?: boolean): RegisterExtensionResult -export function registerExtension (manifest: IExtensionManifest, extHostKind?: ExtensionHostKind, defaultNLS?: ITranslations, builtin: boolean = manifest.publisher === 'vscode'): RegisterExtensionResult { +export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalProcess, params: RegisterExtensionParams): RegisterLocalProcessExtensionResult +export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalWebWorker, params: RegisterExtensionParams): RegisterLocalExtensionResult +export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.Remote, params: RegisterRemoteExtensionParams): RegisterRemoteExtensionResult +export function registerExtension (manifest: IExtensionManifest, extHostKind?: ExtensionHostKind, params?: RegisterExtensionParams): RegisterExtensionResult +export function registerExtension (manifest: IExtensionManifest, extHostKind?: ExtensionHostKind, { defaultNLS, builtin = manifest.publisher === 'vscode', path = '/' }: RegisterExtensionParams = {}): RegisterExtensionResult { const disposableStore = new DisposableStore() const localizedManifest = defaultNLS != null ? localizeManifest(manifest, defaultNLS) : manifest const id = getExtensionId(localizedManifest.publisher, localizedManifest.name) - const location = URI.from({ scheme: 'extension', authority: id, path: '/' }) - const extension: IExtensionWithExtHostKind = { + let extension: IExtensionWithExtHostKind = { manifest: localizedManifest, type: builtin ? ExtensionType.System : ExtensionType.User, isBuiltin: builtin, identifier: { id }, - location, + location: URI.from({ scheme: 'extension', authority: id, path }), targetPlatform: TargetPlatform.WEB, isValid: true, validations: [], extHostKind } - const addExtensionPromise = deltaExtensions([extension], []) + const addExtensionPromise = (async () => { + if (extHostKind === ExtensionHostKind.Remote) { + const remoteAuthority = (await getService(IWorkbenchEnvironmentService)).remoteAuthority + extension = { + ...extension, + location: URI.from({ scheme: Schemas.vscodeRemote, authority: remoteAuthority, path }) + } + } + + await deltaExtensions([extension], []) - const api: RegisterExtensionResult = { - id: extension.identifier.id, - registerFileUrl: (path: string, url: string, mimeType?: string) => { - return registerExtensionFileUrl(extension.location, path, url, mimeType) + return extension + })() + + let api: RegisterExtensionResult = { + id, + async whenReady () { + await addExtensionPromise }, async dispose () { + const extension = await addExtensionPromise await deltaExtensions([], [extension]) disposableStore.dispose() } } + if (extHostKind !== ExtensionHostKind.Remote) { + function registerFileUrl (path: string, url: string, mimeType?: string) { + return registerExtensionFileUrl(extension.location, path, url, mimeType) + } + api = { + ...api, + registerFileUrl + } + } + if (extHostKind === ExtensionHostKind.LocalProcess) { async function getApi () { await addExtensionPromise return (await getLocalExtHostExtensionService()).getApi(id) } - return { + api = { ...api, getApi, async setAsDefaultApi () { diff --git a/src/missing-services.ts b/src/missing-services.ts index 1250e54f..90c2ea58 100644 --- a/src/missing-services.ts +++ b/src/missing-services.ts @@ -1,7 +1,5 @@ import { Event } from 'vs/base/common/event' -import { DomEmitter } from 'vs/base/browser/event' import { URI } from 'vs/base/common/uri' -import { trackFocus } from 'vs/base/browser/dom' import { IEditorService } from 'vs/workbench/services/editor/common/editorService' import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite' import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity' @@ -169,8 +167,10 @@ 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 { unsupported } from './tools' 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 { unsupported } from './tools' class NullLoggerService extends AbstractLoggerService { constructor () { @@ -441,50 +441,7 @@ registerSingleton(ILanguageStatusService, class LanguageStatusServiceImpl implem } }, InstantiationType.Eager) -const focusTracker = trackFocus(window) -const onVisibilityChange = new DomEmitter(window.document, 'visibilitychange') - -const onDidChangeFocus = Event.latch(Event.any( - Event.map(focusTracker.onDidFocus, () => document.hasFocus()), - Event.map(focusTracker.onDidBlur, () => document.hasFocus()), - Event.map(onVisibilityChange.event, () => document.hasFocus()) -)) - -registerSingleton(IHostService, class HostService implements IHostService { - withExpectedShutdown = unsupported - - _serviceBrand: undefined - - onDidChangeFocus = onDidChangeFocus - - get hasFocus (): boolean { - return document.hasFocus() - } - - async hadLastFocus (): Promise { - return true - } - - async focus (): Promise { - window.focus() - } - - openWindow = unsupported - - async toggleFullScreen (): Promise { - // This is a false positive - // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions - if (document.fullscreenEnabled) { - await document.body.requestFullscreen() - } else { - await document.exitFullscreen() - } - } - - restart = unsupported - reload = unsupported - close = unsupported -}, InstantiationType.Eager) +registerSingleton(IHostService, BrowserHostService, InstantiationType.Eager) registerSingleton(ILifecycleService, class LifecycleService extends AbstractLifecycleService { shutdown = unsupported @@ -2185,3 +2142,24 @@ registerSingleton(IAiEmbeddingVectorService, class AiEmbeddingVectorService impl getEmbeddingVector = unsupported registerAiEmbeddingVectorProvider = unsupported }, InstantiationType.Delayed) + +registerSingleton(ISignService, class SignService implements ISignService { + _serviceBrand: undefined + private static _nextId = 1 + + async createNewMessage (value: string): Promise { + const id = String(SignService._nextId++) + return { + id, + data: value + } + } + + async validate (): Promise { + return true + } + + async sign (value: string): Promise { + return value + } +}, InstantiationType.Delayed) diff --git a/src/monaco-treemending.ts b/src/monaco-treemending.ts index 6ed9f3f1..b08228a1 100644 --- a/src/monaco-treemending.ts +++ b/src/monaco-treemending.ts @@ -3,13 +3,14 @@ import * as fs from 'fs/promises' import * as path from 'path' import * as os from 'os' import { createRequire } from 'node:module' +import { fileURLToPath } from 'node:url' + +declare const MONACO_VERSION: string + const require = createRequire(import.meta.url) async function run () { - const ownPackageJson = JSON.parse((await fs.readFile(require.resolve('../package.json'))).toString('utf-8')) - const expectedMonacoVersion = ownPackageJson.peerDependencies['monaco-editor'] - - const patchContent = await fs.readFile(require.resolve('../monaco-editor-treemending.patch')) + const patchContent = await fs.readFile(fileURLToPath(new URL('../monaco-editor-treemending.patch', import.meta.url))) const monacoDirectory = path.dirname(require.resolve('monaco-editor/monaco.d.ts', { paths: [process.cwd()] })) const monacoEsmDirectory = path.resolve(monacoDirectory, 'esm') @@ -18,8 +19,8 @@ async function run () { const monacoPackageJson = JSON.parse((await fs.readFile(monacoPackageJsonFile)).toString('utf-8')) const monacoVersion = monacoPackageJson.version - if (expectedMonacoVersion !== monacoVersion) { - console.error(`Wrong monaco-editor version: expecting ${expectedMonacoVersion}, got ${monacoVersion}`) + if (typeof MONACO_VERSION !== 'undefined' && MONACO_VERSION !== monacoVersion) { + console.error(`Wrong monaco-editor version: expecting ${MONACO_VERSION}, got ${monacoVersion}`) process.exit(1) } diff --git a/src/monaco.ts b/src/monaco.ts index 28fbc58e..bd379803 100644 --- a/src/monaco.ts +++ b/src/monaco.ts @@ -19,7 +19,7 @@ import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions' import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry' import { IJSONSchema } from 'vs/base/common/jsonSchema' import { Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry' -import { EditorOptionsUtil } from 'vscode/vs/editor/browser/config/editorConfiguration' +import { EditorOptionsUtil } from 'vscode/src/vs/editor/browser/config/editorConfiguration' import { registerColor } from 'vs/platform/theme/common/colorRegistry' import { URI } from 'vs/base/common/uri' import { ITextModelService } from 'vs/editor/common/services/resolverService' @@ -39,9 +39,10 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' import { INotificationService } from 'vs/platform/notification/common/notification' import { ILogService } from 'vs/platform/log/common/log' import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService' -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding' +import { IKeybindingService, IKeyboardEvent } from 'vs/platform/keybinding/common/keybinding' import { KeybindingResolver } from 'vs/platform/keybinding/common/keybindingResolver' import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKeybindingItem' +import { ResolvedKeybinding } from 'vs/base/common/keybindings' import { createInjectedClass } from './tools/injection' // Selectively comes from vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts import 'vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch' @@ -210,6 +211,10 @@ class DelegateStandaloneKeybindingService extends StandaloneKeybindingService { protected override _getResolver (): KeybindingResolver { return this.delegate._getResolver() } + + override resolveKeyboardEvent (keyboardEvent: IKeyboardEvent): ResolvedKeybinding { + return this.delegate.resolveKeyboardEvent(keyboardEvent) + } } let standaloneEditorInstantiationService: IInstantiationService | null = null diff --git a/src/override/vs/platform/dialogs/common/dialogs.ts b/src/override/vs/platform/dialogs/common/dialogs.ts index 8193c0a6..ae7bfac2 100644 --- a/src/override/vs/platform/dialogs/common/dialogs.ts +++ b/src/override/vs/platform/dialogs/common/dialogs.ts @@ -1,4 +1,4 @@ -export * from 'vscode/vs/platform/dialogs/common/dialogs' +export * from 'vscode/src/vs/platform/dialogs/common/dialogs' // export it as non-const enum (because const enum should never be exported: https://ncjamieson.com/dont-export-const-enums/) export enum ConfirmResult { diff --git a/src/override/vs/platform/userDataSync/common/extensionsSync.js b/src/override/vs/platform/userDataSync/common/extensionsSync.js index d80b4065..2754f342 100644 --- a/src/override/vs/platform/userDataSync/common/extensionsSync.js +++ b/src/override/vs/platform/userDataSync/common/extensionsSync.js @@ -1,4 +1,4 @@ -export * from 'vscode/vs/platform/userDataSync/common/extensionsSync' +export * from 'vscode/src/vs/platform/userDataSync/common/extensionsSync' export class ExtensionsSynchroniser {} diff --git a/src/override/vs/platform/userDataSync/common/globalStateSync.js b/src/override/vs/platform/userDataSync/common/globalStateSync.js index 7d06b99b..9709b8eb 100644 --- a/src/override/vs/platform/userDataSync/common/globalStateSync.js +++ b/src/override/vs/platform/userDataSync/common/globalStateSync.js @@ -1,4 +1,4 @@ -export * from 'vscode/vs/platform/userDataSync/common/globalStateSync' +export * from 'vscode/src/vs/platform/userDataSync/common/globalStateSync' export class GlobalStateSynchroniser {} diff --git a/src/override/vs/workbench/browser/parts/editor/textEditor.js b/src/override/vs/workbench/browser/parts/editor/textEditor.js index a76f3fec..49920614 100644 --- a/src/override/vs/workbench/browser/parts/editor/textEditor.js +++ b/src/override/vs/workbench/browser/parts/editor/textEditor.js @@ -1,5 +1,5 @@ -export * from 'vscode/vs/workbench/browser/parts/editor/textEditor.js' +export * from 'vscode/src/vs/workbench/browser/parts/editor/textEditor.js' -import { AbstractTextEditor } from 'vscode/vs/workbench/browser/parts/editor/textEditor.js' +import { AbstractTextEditor } from 'vscode/src/vs/workbench/browser/parts/editor/textEditor.js' import { setAbstractTextEditor } from './textEditor.weak.js' setAbstractTextEditor(AbstractTextEditor) \ No newline at end of file diff --git a/src/rollup-extension-directory-plugin.ts b/src/rollup-extension-directory-plugin.ts index 497c89fc..855e0aaa 100644 --- a/src/rollup-extension-directory-plugin.ts +++ b/src/rollup-extension-directory-plugin.ts @@ -69,14 +69,28 @@ export default function plugin ({ ...await getAdditionalResources(manifest, id) ])) + function generateFileRegistrationInstruction (filePath: string, importPath: string, mimeType?: string) { + return `registerFileUrl('${filePath}', new URL('${importPath}', import.meta.url).toString()${mimeType != null ? `, '${mimeType}'` : ''})` + } + return ` import manifest from '${manifestPath}' import { registerExtension } from 'vscode/extensions' -const { registerFileUrl } = registerExtension(manifest) -${resources.map(resource => (` -registerFileUrl('${resource.path}', new URL('${path.resolve(id, resource.path)}', import.meta.url).toString()${resource.mimeType != null ? `, '${resource.mimeType}'` : ''})`)).join('\n')} - ` +const { registerFileUrl, whenReady } = registerExtension(manifest) +${resources.map(resource => { + const lines: string[] = [ + generateFileRegistrationInstruction(resource.path, path.resolve(id, resource.realPath ?? resource.path), resource.mimeType) + ] + if (resource.realPath != null && resource.realPath !== resource.path) { + lines.push(generateFileRegistrationInstruction(resource.realPath, path.resolve(id, resource.realPath), resource.mimeType)) + } + + return lines.join('\n') +}).join('\n')} + +export { whenReady } +` } catch (err) { console.error(err, (err as Error).stack) throw err diff --git a/src/rollup-vsix-plugin.ts b/src/rollup-vsix-plugin.ts index 880e6d32..a13f83d4 100644 --- a/src/rollup-vsix-plugin.ts +++ b/src/rollup-vsix-plugin.ts @@ -84,7 +84,7 @@ export default function plugin ({ const extensionResources = (await extractResourcesFromExtensionManifest(manifest, async path => { return files[getVsixPath(path)]! - })).filter(resource => getVsixPath(resource.path) in files) + })).filter(resource => getVsixPath(resource.realPath ?? resource.path) in files) const vsixFile = Object.fromEntries(Object.entries(files).map(([key, value]) => [getVsixPath(key), value])) @@ -93,8 +93,8 @@ export default function plugin ({ ...await getAdditionalResources(manifest) ] - const pathMapping = await Promise.all(resources.map(async resource => { - const assetPath = getVsixPath(resource.path) + const pathMapping = (await Promise.all(resources.map(async resource => { + const assetPath = getVsixPath(resource.realPath ?? resource.path) let url: string if (process.env.NODE_ENV === 'development') { url = `'data:text/javascript;base64,${vsixFile[assetPath]!.toString('base64')}'` @@ -106,12 +106,18 @@ export default function plugin ({ }) } - return ({ - pathInExtension: assetPath, + return [{ + pathInExtension: getVsixPath(resource.path), url, mimeType: resource.mimeType - }) - })) + }, ...(resource.realPath != null + ? [{ + pathInExtension: getVsixPath(resource.realPath), + url, + mimeType: resource.mimeType + }] + : [])] + }))).flat() let packageJson = parseJson(id, vsixFile['package.json']!.toString('utf8')) if ('package.nls.json' in vsixFile) { @@ -123,10 +129,12 @@ import { registerExtension } from 'vscode/extensions' const manifest = ${JSON.stringify(transformManifest(packageJson))} -const { registerFileUrl } = registerExtension(manifest) +const { registerFileUrl, whenReady } = registerExtension(manifest) ${pathMapping.map(({ pathInExtension, url, mimeType }) => (` registerFileUrl('${pathInExtension}', ${url}${mimeType != null ? `, '${mimeType}'` : ''})`)).join('\n')} + +export { whenReady } ` } } diff --git a/src/server/bootstrap-fork.ts b/src/server/bootstrap-fork.ts new file mode 100644 index 00000000..fcfb8c2f --- /dev/null +++ b/src/server/bootstrap-fork.ts @@ -0,0 +1,204 @@ +import { createRequire } from 'node:module' +import { registerAssets } from '../assets' + +const entrypoints: Record Promise> = { + 'vs/workbench/api/node/extensionHostProcess': async () => { await import('vs/workbench/api/node/extensionHostProcess') }, + 'vs/platform/files/node/watcher/watcherMain': async () => { await import('vs/platform/files/node/watcher/watcherMain') }, + 'vs/platform/terminal/node/ptyHostMain': async () => { await import('vs/platform/terminal/node/ptyHostMain') }, + 'vs/workbench/contrib/debug/node/telemetryApp': async () => { await import('vs/workbench/contrib/debug/node/telemetryApp') } +} + +const require = createRequire(import.meta.url) + +// just to create globalThis.monacoRequire +registerAssets({}) + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +;(globalThis as any)._VSCODE_NODE_MODULES = new Proxy(Object.create(null), { get: (_target, mod) => require(String(mod)) }) + +// Configure: pipe logging to parent process +if (!(process.send == null) && process.env.VSCODE_PIPE_LOGGING === 'true') { + pipeLoggingToParent() +} + +// Handle Exceptions +if (process.env.VSCODE_HANDLES_UNCAUGHT_ERRORS == null) { + handleExceptions() +} + +// Terminate when parent terminates +if (process.env.VSCODE_PARENT_PID != null) { + terminateWhenParentTerminates() +} + +void entrypoints[process.env.VSCODE_AMD_ENTRYPOINT as string]!() + +function pipeLoggingToParent () { + const MAX_STREAM_BUFFER_LENGTH = 1024 * 1024 + const MAX_LENGTH = 100000 + + /** + * Prevent circular stringify and convert arguments to real array + */ + function safeToArray (args: ArrayLike) { + const seen: unknown[] = [] + const argsArray = [] + + // Massage some arguments with special treatment + if (args.length > 0) { + for (let i = 0; i < args.length; i++) { + let arg = args[i] + + // Any argument of type 'undefined' needs to be specially treated because + // JSON.stringify will simply ignore those. We replace them with the string + // 'undefined' which is not 100% right, but good enough to be logged to console + if (typeof arg === 'undefined') { + arg = 'undefined' + } else if (arg instanceof Error) { + // Any argument that is an Error will be changed to be just the error stack/message + // itself because currently cannot serialize the error over entirely. + const errorObj = arg + if (errorObj.stack != null) { + arg = errorObj.stack + } else { + arg = errorObj.toString() + } + } + + argsArray.push(arg) + } + } + + try { + const res = JSON.stringify(argsArray, function (key, value) { + // Objects get special treatment to prevent circles + if (isObject(value) || Array.isArray(value)) { + if (seen.indexOf(value) !== -1) { + return '[Circular]' + } + + seen.push(value) + } + + return value + }) + + if (res.length > MAX_LENGTH) { + return 'Output omitted for a large object that exceeds the limits' + } + + return res + } catch (error) { + return `Output omitted for an object that cannot be inspected ('${(error as Error).toString()}')` + } + } + + function safeSend (arg: { type: string, severity: string, arguments: string }) { + try { + if (process.send != null) { + process.send(arg) + } + } catch (error) { + // Can happen if the parent channel is closed meanwhile + } + } + + function isObject (obj: unknown) { + return typeof obj === 'object' && + obj !== null && + !Array.isArray(obj) && + !(obj instanceof RegExp) && + !(obj instanceof Date) + } + + function safeSendConsoleMessage (severity: 'log' | 'warn' | 'error', args: string) { + safeSend({ type: '__$console', severity, arguments: args }) + } + + /** + * Wraps a console message so that it is transmitted to the renderer. + * + * The wrapped property is not defined with `writable: false` to avoid + * throwing errors, but rather a no-op setting. See https://github.com/microsoft/vscode-extension-telemetry/issues/88 + */ + function wrapConsoleMethod (method: 'log' | 'info' | 'warn' | 'error', severity: 'log' | 'warn' | 'error') { + Object.defineProperty(console, method, { + set: () => { }, + get: () => function () { safeSendConsoleMessage(severity, safeToArray(arguments)) } + }) + } + + /** + * Wraps process.stderr/stdout.write() so that it is transmitted to the + * renderer or CLI. It both calls through to the original method as well + * as to console.log with complete lines so that they're made available + * to the debugger/CLI. + */ + function wrapStream (streamName: 'stdout' | 'stderr', severity: 'log' | 'warn' | 'error') { + const stream = process[streamName] + const original = stream.write + + /** @type string */ + let buf = '' + + Object.defineProperty(stream, 'write', { + set: () => { }, + // eslint-disable-next-line no-undef + get: () => (chunk: Uint8Array | string, encoding: BufferEncoding, callback: (err?: Error) => void) => { + buf += chunk.toString() + const eol = buf.length > MAX_STREAM_BUFFER_LENGTH ? buf.length : buf.lastIndexOf('\n') + if (eol !== -1) { + // eslint-disable-next-line no-console + console[severity](buf.slice(0, eol)) + buf = buf.slice(eol + 1) + } + + original.call(stream, chunk, encoding, callback) + } + }) + } + + // Pass console logging to the outside so that we have it in the main side if told so + if (process.env.VSCODE_VERBOSE_LOGGING === 'true') { + wrapConsoleMethod('info', 'log') + wrapConsoleMethod('log', 'log') + wrapConsoleMethod('warn', 'warn') + wrapConsoleMethod('error', 'error') + } else { + // eslint-disable-next-line no-console + console.log = function () { /* ignore */ } + console.warn = function () { /* ignore */ } + // eslint-disable-next-line no-console + console.info = function () { /* ignore */ } + wrapConsoleMethod('error', 'error') + } + + wrapStream('stderr', 'error') + wrapStream('stdout', 'log') +} + +function handleExceptions () { + // Handle uncaught exceptions + process.on('uncaughtException', function (err) { + console.error('Uncaught Exception: ', err) + }) + + // Handle unhandled promise rejections + process.on('unhandledRejection', function (reason) { + console.error('Unhandled Promise Rejection: ', reason) + }) +} + +function terminateWhenParentTerminates () { + const parentPid = Number(process.env.VSCODE_PARENT_PID) + + if (typeof parentPid === 'number' && !isNaN(parentPid)) { + setInterval(function () { + try { + process.kill(parentPid, 0) // throws an exception if the main process doesn't exist anymore. + } catch (e) { + process.exit() + } + }, 5000) + } +} diff --git a/src/server/server-assets.ts b/src/server/server-assets.ts new file mode 100644 index 00000000..d3b38630 --- /dev/null +++ b/src/server/server-assets.ts @@ -0,0 +1,6 @@ +import { registerAssets } from '../assets' + +registerAssets({ + 'vs/code/browser/workbench/workbench.html': new URL('vs/code/browser/workbench/workbench.html', import.meta.url).toString(), + 'bootstrap-fork': new URL('bootstrap-fork.js', import.meta.url).toString() +}) diff --git a/src/server/server.ts b/src/server/server.ts new file mode 100644 index 00000000..7952ad43 --- /dev/null +++ b/src/server/server.ts @@ -0,0 +1,127 @@ +import './server-assets' +import type { IServerAPI } from 'vs/server/node/remoteExtensionHostAgentServer' +import { createServer } from 'vs/server/node/server.main.js' +import { buildHelpMessage, buildVersionMessage, parseArgs } from 'vs/platform/environment/node/argv' +import { ServerParsedArgs, serverOptions } from 'vs/server/node/serverEnvironmentService' +import product from 'vs/platform/product/common/product' +import { AddressInfo, ListenOptions, Socket } from 'net' +import http from 'http' + +export async function start (options: ListenOptions): Promise { + let _remoteExtensionHostAgentServer: IServerAPI | null = null + let _remoteExtensionHostAgentServerPromise: Promise | null = null + const getRemoteExtensionHostAgentServer = (): Promise => { + if (_remoteExtensionHostAgentServerPromise == null) { + _remoteExtensionHostAgentServerPromise = createServer(address).then(server => { + _remoteExtensionHostAgentServer = server + return server + }) + } + return _remoteExtensionHostAgentServerPromise + } + + let address: AddressInfo | string | null = null + const server = http.createServer(async (req, res) => { + const remoteExtensionHostAgentServer = await getRemoteExtensionHostAgentServer() + return remoteExtensionHostAgentServer.handleRequest(req, res) + }) + server.on('upgrade', async (req, socket) => { + const remoteExtensionHostAgentServer = await getRemoteExtensionHostAgentServer() + return remoteExtensionHostAgentServer.handleUpgrade(req, socket) + }) + server.on('error', async (err) => { + const remoteExtensionHostAgentServer = await getRemoteExtensionHostAgentServer() + return remoteExtensionHostAgentServer.handleServerError(err) + }) + + server.listen(options, async () => { + address = server.address() + if (address === null) { + throw new Error('Unexpected server address') + } + + // eslint-disable-next-line no-console + console.log(`Server bound to ${typeof address === 'string' ? address : `${address.address}:${address.port} (${address.family})`}`) + + await getRemoteExtensionHostAgentServer() + }) + + process.on('exit', () => { + server.close() + if (_remoteExtensionHostAgentServer != null) { + _remoteExtensionHostAgentServer.dispose() + } + }) +} + +function parseRange (strRange: string) { + const match = strRange.match(/^(\d+)-(\d+)$/) + if (match != null) { + const start = parseInt(match[1]!, 10); const end = parseInt(match[2]!, 10) + if (start > 0 && start <= end && end <= 65535) { + return { start, end } + } + } + return undefined +} + +async function findFreePort (host: string, start: number, end: number) { + const testPort = (port: number) => { + return new Promise((resolve) => { + const server = http.createServer() + server.listen(port, host, () => { + server.close() + resolve(true) + }).on('error', () => { + resolve(false) + }) + }) + } + for (let port = start; port <= end; port++) { + if (await testPort(port)) { + return port + } + } + return undefined +} + +async function parsePort (host: string, strPort: string | undefined) { + if (strPort != null) { + let range + if (strPort.match(/^\d+$/) != null) { + return parseInt(strPort, 10) + } else if ((range = parseRange(strPort)) != null) { + const port = await findFreePort(host, range.start, range.end) + if (port !== undefined) { + return port + } + // Remote-SSH extension relies on this exact port error message, treat as an API + console.warn(`--port: Could not find free port in range: ${range.start} - ${range.end} (inclusive).`) + process.exit(1) + } else { + console.warn(`--port "${strPort}" is not a valid number or range. Ranges must be in the form 'from-to' with 'from' an integer larger than 0 and not larger than 'end'.`) + process.exit(1) + } + } + return 8000 +} + +const parsedArgs = parseArgs(process.argv.slice(2), serverOptions) +if (parsedArgs.help) { + const serverOptionsWithoutExtensionManagement = Object.fromEntries(Object.entries(serverOptions).filter(([, def]) => def.cat !== 'e')) + // eslint-disable-next-line no-console + console.log(buildHelpMessage(product.nameLong, 'vscode-ext-host-server', product.version, serverOptionsWithoutExtensionManagement, { noInputFiles: true, noPipe: true })) +} else if (parsedArgs.version) { + // eslint-disable-next-line no-console + console.log(buildVersionMessage(product.version, product.commit)) +} else { + const host = parsedArgs.host ?? 'localhost' + + const nodeListenOptions = ( + parsedArgs['socket-path'] != null + ? { path: parsedArgs['socket-path'] } + : { host, port: await parsePort(host, parsedArgs.port) } + ) + + void start(nodeListenOptions) +} diff --git a/src/service-override/configuration.ts b/src/service-override/configuration.ts index bc2cc8f0..9f62823a 100644 --- a/src/service-override/configuration.ts +++ b/src/service-override/configuration.ts @@ -5,7 +5,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfiguration' import { TextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfigurationService' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' -import { ConfigurationScope } from 'vscode/vs/platform/configuration/common/configurationRegistry' +import { ConfigurationScope } from 'vscode/src/vs/platform/configuration/common/configurationRegistry' import { IConfigurationRegistry, Extensions as ConfigurationExtensions, IConfigurationNode, IConfigurationDefaults } from 'vs/platform/configuration/common/configurationRegistry' import { Registry } from 'vs/platform/registry/common/platform' import { VSBuffer } from 'vs/base/common/buffer' @@ -22,7 +22,7 @@ import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity' import { ConfigurationCache } from 'vs/workbench/services/configuration/common/configurationCache' import { Schemas } from 'vs/base/common/network' import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService' -import { IAnyWorkspaceIdentifier, IWorkspaceContextService, IWorkspaceIdentifier } from 'vs/platform/workspace/common/workspace' +import { IAnyWorkspaceIdentifier, IEmptyWorkspaceIdentifier, ISingleFolderWorkspaceIdentifier, IWorkspaceContextService, IWorkspaceIdentifier } from 'vs/platform/workspace/common/workspace' import { LabelService } from 'vs/workbench/services/label/common/labelService' import { ILabelService } from 'vs/platform/label/common/label' import { generateUuid } from 'vs/base/common/uuid' @@ -78,37 +78,41 @@ class MonacoWorkspaceEditingService extends AbstractWorkspaceEditingService { enterWorkspace = unsupported } -let _defaultWorkspaceUri = URI.file('/workspace') +let _defaultWorkspace: URI | IAnyWorkspaceIdentifier = URI.file('/workspace') registerServiceInitializePreParticipant(async (accessor) => { const workspaceService = accessor.get(IWorkspaceContextService) as WorkspaceService workspaceService.acquireInstantiationService(accessor.get(IInstantiationService)) - const configPath = _defaultWorkspaceUri.with({ path: '/workspace.code-workspace' }) - try { - const fileService = accessor.get(IFileService) - // Create the directory in the memory filesystem to prevent a warn log - await fileService.createFolder(_defaultWorkspaceUri) - await fileService.writeFile(configPath, VSBuffer.fromString(JSON.stringify({ - folders: [ - { - path: _defaultWorkspaceUri.path - } - ] - }))) - } catch (err) { - // ignore - } + if (URI.isUri(_defaultWorkspace)) { + const configPath = _defaultWorkspace.with({ path: '/workspace.code-workspace' }) + try { + const fileService = accessor.get(IFileService) + // Create the directory in the memory filesystem to prevent a warn log + await fileService.createFolder(_defaultWorkspace) + await fileService.writeFile(configPath, VSBuffer.fromString(JSON.stringify({ + folders: [ + { + path: _defaultWorkspace.path + } + ] + }))) + } catch (err) { + // ignore + } - await workspaceService.initialize({ - id: generateUuid(), - configPath - }) + await workspaceService.initialize({ + id: generateUuid(), + configPath + }) + } else { + await workspaceService.initialize(_defaultWorkspace) + } }) const MemoizedInjectedConfigurationService = memoizedConstructor(InjectedConfigurationService) -export default function getServiceOverride (defaultWorkspaceUri: URI): IEditorOverrideServices { - _defaultWorkspaceUri = defaultWorkspaceUri +export default function getServiceOverride (defaultWorkspace: URI | IAnyWorkspaceIdentifier): IEditorOverrideServices { + _defaultWorkspace = defaultWorkspace return { ...getFileServiceOverride(), @@ -132,5 +136,8 @@ export { IConfigurationNode, IConfigurationDefaults, IAnyWorkspaceIdentifier, + IWorkspaceIdentifier, + ISingleFolderWorkspaceIdentifier, + IEmptyWorkspaceIdentifier, IWorkspaceFolderCreationData } diff --git a/src/service-override/debug.ts b/src/service-override/debug.ts index 49b48e16..6f7ce7d6 100644 --- a/src/service-override/debug.ts +++ b/src/service-override/debug.ts @@ -3,7 +3,7 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standalone import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { IDebugService } from 'vs/workbench/contrib/debug/common/debug' import { DebugService } from 'vs/workbench/contrib/debug/browser/debugService' -import { LanguageFeaturesService } from 'vscode/vs/editor/common/services/languageFeaturesService' +import { LanguageFeaturesService } from 'vscode/src/vs/editor/common/services/languageFeaturesService' import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures' import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/browser/configurationResolverService' import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver' diff --git a/src/service-override/environment.ts b/src/service-override/environment.ts index 24fa3401..17c077d2 100644 --- a/src/service-override/environment.ts +++ b/src/service-override/environment.ts @@ -5,16 +5,21 @@ import { BrowserWorkbenchEnvironmentService, IBrowserWorkbenchEnvironmentService import { URI } from 'vs/base/common/uri' import { IEnvironmentService } from 'vs/platform/environment/common/environment' import { IProductService } from 'vs/platform/product/common/productService' +import { IWorkbenchConstructionOptions } from 'vs/workbench/browser/web.api' class InjectedBrowserWorkbenchEnvironmentService extends BrowserWorkbenchEnvironmentService implements IBrowserWorkbenchEnvironmentService { - constructor (@IProductService productService: IProductService) { - super('default', URI.from({ scheme: 'logs', path: '/' }), {}, productService) + constructor (options: IWorkbenchConstructionOptions, @IProductService productService: IProductService) { + super('default', URI.from({ scheme: 'logs', path: '/' }), options, productService) } } -export default function getServiceOverride (): IEditorOverrideServices { +export default function getServiceOverride (options: IWorkbenchConstructionOptions = {}): IEditorOverrideServices { return { [IEnvironmentService.toString()]: new SyncDescriptor(InjectedBrowserWorkbenchEnvironmentService, [], true), - [IBrowserWorkbenchEnvironmentService.toString()]: new SyncDescriptor(InjectedBrowserWorkbenchEnvironmentService, [], true) + [IBrowserWorkbenchEnvironmentService.toString()]: new SyncDescriptor(InjectedBrowserWorkbenchEnvironmentService, [options], true) } } + +export { + IWorkbenchConstructionOptions +} diff --git a/src/service-override/extensions.ts b/src/service-override/extensions.ts index eb086e73..eb9c2faa 100644 --- a/src/service-override/extensions.ts +++ b/src/service-override/extensions.ts @@ -395,7 +395,7 @@ export class SimpleExtensionService extends AbstractExtensionService implements super( extensionsProposedApi, extensionHostFactory, - new LocalBrowserExtensionHostKindPicker(workerConfig != null ? [ExtensionHostKind.LocalWebWorker, ExtensionHostKind.LocalProcess] : [ExtensionHostKind.LocalProcess], logService), + new LocalBrowserExtensionHostKindPicker(workerConfig != null ? [ExtensionHostKind.LocalWebWorker, ExtensionHostKind.LocalProcess, ExtensionHostKind.Remote] : [ExtensionHostKind.LocalProcess, ExtensionHostKind.Remote], logService), instantiationService, notificationService, browserEnvironmentService, diff --git a/src/service-override/files.ts b/src/service-override/files.ts index 3f8898fa..a26f63c1 100644 --- a/src/service-override/files.ts +++ b/src/service-override/files.ts @@ -5,7 +5,7 @@ import { FileService } from 'vs/platform/files/common/fileService' import { ILogService } from 'vs/platform/log/common/log' import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider' import { URI } from 'vs/base/common/uri' -import { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileType } from 'vscode/vs/platform/files/common/files' +import { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileType, IFileSystemProvider } from 'vscode/src/vs/platform/files/common/files' import { createFileSystemProviderError, FileSystemProviderError, FileSystemProviderErrorCode, IFileChange, IFileDeleteOptions, IFileOverwriteOptions, IFileService, IFileSystemProviderWithFileReadWriteCapability, IFileWriteOptions, IStat, IWatchOptions } from 'vs/platform/files/common/files' import { DisposableStore, IDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle' import { extUri, joinPath } from 'vs/base/common/resources' @@ -404,6 +404,57 @@ class MkdirpOnWriteInMemoryFileSystemProvider extends InMemoryFileSystemProvider } } +class DelegateFileSystemProvider implements IFileSystemProvider { + constructor (private options: { + delegate: IFileSystemProvider + toDelegate: (uri: URI) => URI + fromDeletate: (uri: URI) => URI + }) {} + + get capabilities (): FileSystemProviderCapabilities { return this.options.delegate.capabilities } + onDidChangeCapabilities = this.options.delegate.onDidChangeCapabilities + onDidChangeFile = Event.map(this.options.delegate.onDidChangeFile, changes => changes.map(change => ({ + type: change.type, + resource: this.options.fromDeletate(change.resource) + }))) + + readFile = this.options.delegate.readFile != null + ? (resource: URI): Promise => { + return this.options.delegate.readFile!(this.options.toDelegate(resource)) + } + : undefined + + writeFile = this.options.delegate.writeFile != null + ? (resource: URI, content: Uint8Array, opts: IFileWriteOptions): Promise => { + return this.options.delegate.writeFile!(this.options.toDelegate(resource), content, opts) + } + : undefined + + watch (resource: URI, opts: IWatchOptions): IDisposable { + return this.options.delegate.watch(this.options.toDelegate(resource), opts) + } + + stat (resource: URI): Promise { + return this.options.delegate.stat(this.options.toDelegate(resource)) + } + + mkdir (resource: URI): Promise { + return this.options.delegate.mkdir(this.options.toDelegate(resource)) + } + + readdir (resource: URI): Promise<[string, FileType][]> { + return this.options.delegate.readdir(this.options.toDelegate(resource)) + } + + delete (resource: URI, opts: IFileDeleteOptions): Promise { + return this.options.delegate.delete(this.options.toDelegate(resource), opts) + } + + rename (from: URI, to: URI, opts: IFileOverwriteOptions): Promise { + return this.options.delegate.rename(this.options.toDelegate(from), this.options.toDelegate(to), opts) + } +} + const fileSystemProvider = new OverlayFileSystemProvider() fileSystemProvider.register(0, new MkdirpOnWriteInMemoryFileSystemProvider()) @@ -472,5 +523,6 @@ export { RegisteredFileSystemProvider, RegisteredFile, RegisteredReadOnlyFile, - RegisteredMemoryFile + RegisteredMemoryFile, + DelegateFileSystemProvider } diff --git a/src/service-override/keybindings.ts b/src/service-override/keybindings.ts index ee2e9f8e..36915e52 100644 --- a/src/service-override/keybindings.ts +++ b/src/service-override/keybindings.ts @@ -2,7 +2,7 @@ import '../missing-services' import { IEditorOverrideServices, StandaloneServices } from 'vs/editor/standalone/browser/standaloneServices' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { WorkbenchKeybindingService } from 'vs/workbench/services/keybinding/browser/keybindingService' -import { IKeybindingService, IUserFriendlyKeybinding } from 'vs/platform/keybinding/common/keybinding' +import { IKeybindingService, IKeyboardEvent, IUserFriendlyKeybinding } from 'vs/platform/keybinding/common/keybinding' import { VSBuffer } from 'vs/base/common/buffer' import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile' import { IKeyboardLayoutService } from 'vs/platform/keyboardLayout/common/keyboardLayout' @@ -13,6 +13,14 @@ import { CommandService } from 'vs/workbench/services/commands/common/commandSer import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKeybindingItem' import { toDisposable } from 'vs/base/common/lifecycle' import { KeybindingResolver } from 'vs/platform/keybinding/common/keybindingResolver' +import { IContextKeyService, IContextKeyServiceTarget } from 'vs/platform/contextkey/common/contextkey' +import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity' +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' +import { INotificationService } from 'vs/platform/notification/common/notification' +import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile' +import { IHostService } from 'vs/workbench/services/host/browser/host' +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions' +import { ILogService } from 'vs/platform/log/common/log' import getFileServiceOverride from './files' import { DynamicKeybindingService } from '../monaco' import 'vs/workbench/browser/workbench.contribution' @@ -26,6 +34,23 @@ async function updateUserKeybindings (keybindingsJson: string): Promise { class DynamicWorkbenchKeybindingService extends WorkbenchKeybindingService implements DynamicKeybindingService { private keybindingProviders: (() => ResolvedKeybindingItem[])[] = [] + constructor ( + private shouldUseGlobalKeybindings: () => boolean, + @IContextKeyService contextKeyService: IContextKeyService, + @ICommandService commandService: ICommandService, + @ITelemetryService telemetryService: ITelemetryService, + @INotificationService notificationService: INotificationService, + @IUserDataProfileService userDataProfileService: IUserDataProfileService, + @IHostService hostService: IHostService, + @IExtensionService extensionService: IExtensionService, + @IFileService fileService: IFileService, + @IUriIdentityService uriIdentityService: IUriIdentityService, + @ILogService logService: ILogService, + @IKeyboardLayoutService keyboardLayoutService: IKeyboardLayoutService + ) { + super(contextKeyService, commandService, telemetryService, notificationService, userDataProfileService, hostService, extensionService, fileService, uriIdentityService, logService, keyboardLayoutService) + } + public registerKeybindingProvider (provider: () => ResolvedKeybindingItem[]) { this.keybindingProviders.push(provider) this.updateResolver() @@ -43,15 +68,26 @@ class DynamicWorkbenchKeybindingService extends WorkbenchKeybindingService imple return super._getResolver() } + protected override _dispatch (e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean { + if (!this.shouldUseGlobalKeybindings()) { + return false + } + return super._dispatch(e, target) + } + protected override getUserKeybindingItems () { return [...super.getUserKeybindingItems(), ...this.keybindingProviders.flatMap(provider => provider())] } } -export default function getServiceOverride (): IEditorOverrideServices { +interface KeybindingsProps { + shouldUseGlobalKeybindings?: () => boolean +} + +export default function getServiceOverride ({ shouldUseGlobalKeybindings = () => false }: KeybindingsProps = {}): IEditorOverrideServices { return { ...getFileServiceOverride(), - [IKeybindingService.toString()]: new SyncDescriptor(DynamicWorkbenchKeybindingService, [], false), + [IKeybindingService.toString()]: new SyncDescriptor(DynamicWorkbenchKeybindingService, [shouldUseGlobalKeybindings], false), [IKeyboardLayoutService.toString()]: new SyncDescriptor(BrowserKeyboardLayoutService, undefined, true), [ICommandService.toString()]: new SyncDescriptor(CommandService, [], true) } diff --git a/src/service-override/layout.ts b/src/service-override/layout.ts index d8d1a288..d70613fc 100644 --- a/src/service-override/layout.ts +++ b/src/service-override/layout.ts @@ -9,7 +9,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { Part } from 'vs/workbench/browser/part' import { isAncestorUsingFlowTo } from 'vs/base/browser/dom' import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite' -import { IViewDescriptorService, ViewContainerLocation } from 'vs/workbench/common/views' +import { IViewContainerModel, IViewDescriptorService, ViewContainerLocation } from 'vs/workbench/common/views' import { isChrome, isFirefox, isLinux, isSafari, isWindows } from 'vs/base/common/platform' import { coalesce } from 'vs/base/common/arrays' import { ActivitybarPart } from 'vs/workbench/browser/parts/activitybar/activitybarPart' @@ -185,7 +185,7 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { return false } - const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer) + const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer) as IViewContainerModel | undefined if (viewContainerModel == null) { return false } @@ -213,7 +213,7 @@ export class LayoutService implements ILayoutService, IWorkbenchLayoutService { this.paneCompositeService.hideActivePaneComposite(location) } else if (paneComposite == null && !hidden) { // If panel part becomes visible, show last active panel or default panel - let panelToOpen: string | undefined = this.paneCompositeService.getLastActivePaneCompositeId(location) + let panelToOpen = this.paneCompositeService.getLastActivePaneCompositeId(location) as string | undefined // verify that the panel we try to open has views before we default to it // otherwise fall back to any view that has views still refs #111463 diff --git a/src/service-override/lifecycle.ts b/src/service-override/lifecycle.ts new file mode 100644 index 00000000..1b962207 --- /dev/null +++ b/src/service-override/lifecycle.ts @@ -0,0 +1,11 @@ +import '../missing-services' +import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' +import { BrowserLifecycleService } from 'vs/workbench/services/lifecycle/browser/lifecycleService' +import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle' + +export default function getServiceOverride (): IEditorOverrideServices { + return { + [ILifecycleService.toString()]: new SyncDescriptor(BrowserLifecycleService) + } +} diff --git a/src/service-override/quickaccess.ts b/src/service-override/quickaccess.ts index 4c1d3c52..7f1b3b42 100644 --- a/src/service-override/quickaccess.ts +++ b/src/service-override/quickaccess.ts @@ -15,11 +15,12 @@ import 'vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess' import 'vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess' import 'vs/workbench/browser/actions/quickAccessActions' import 'vs/workbench/contrib/quickaccess/browser/quickAccess.contribution' +import { ICodeEditor } from 'vs/editor/browser/editorBrowser' let isKeybindingConfigurationVisible = () => { return false } -let shouldUseGlobalPicker = () => { +let shouldUseGlobalPicker = (_activeCodeEditor: ICodeEditor | null, _activeCodeEditorStandalone: boolean) => { return false } @@ -50,7 +51,8 @@ class DelegateQuickInputService implements IQuickInputService { private get activeService (): IQuickInputService { const activeCodeEditor = StandaloneServices.get(ICodeEditorService).getFocusedCodeEditor() - if (!(activeCodeEditor instanceof StandaloneCodeEditor) && shouldUseGlobalPicker()) { + + if (shouldUseGlobalPicker(activeCodeEditor, activeCodeEditor instanceof StandaloneCodeEditor)) { return this.workbenchQuickInputService } @@ -112,7 +114,7 @@ class DelegateQuickInputService implements IQuickInputService { interface QuickAccessProps { isKeybindingConfigurationVisible?: () => boolean - shouldUseGlobalPicker?: () => boolean + shouldUseGlobalPicker?: (activeCodeEditor: ICodeEditor | null, activeCodeEditorStandalone: boolean) => boolean } export default function getServiceOverride ({ diff --git a/src/service-override/remoteAgent.ts b/src/service-override/remoteAgent.ts new file mode 100644 index 00000000..39ee0ed2 --- /dev/null +++ b/src/service-override/remoteAgent.ts @@ -0,0 +1,36 @@ +import '../missing-services' +import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' +import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService' +import { RemoteAgentService } from 'vs/workbench/services/remote/browser/remoteAgentService' +import { IRemoteSocketFactoryService, RemoteSocketFactoryService } from 'vs/platform/remote/common/remoteSocketFactoryService' +import { IRemoteAuthorityResolverService, RemoteConnectionType } from 'vs/platform/remote/common/remoteAuthorityResolver' +import { RemoteAuthorityResolverService } from 'vs/platform/remote/browser/remoteAuthorityResolverService' +import { BrowserSocketFactory } from 'vs/platform/remote/browser/browserSocketFactory' +import { RemoteFileSystemProviderClient } from 'vs/workbench/services/remote/common/remoteFileSystemProviderClient' +import { IBrowserWorkbenchEnvironmentService } from 'vs/workbench/services/environment/browser/environmentService' +import { URI } from 'vs/base/common/uri' +import getEnvironmentServiceOverride from './environment' +import { registerServiceInitializePreParticipant } from '../lifecycle' +import { IFileService, ILogService } from '../services' +import 'vs/workbench/contrib/remote/common/remote.contribution' + +class CustomRemoteSocketFactoryService extends RemoteSocketFactoryService { + constructor (@IBrowserWorkbenchEnvironmentService browserWorkbenchEnvironmentService: IBrowserWorkbenchEnvironmentService) { + super() + this.register(RemoteConnectionType.WebSocket, new BrowserSocketFactory(browserWorkbenchEnvironmentService.options?.webSocketFactory)) + } +} + +registerServiceInitializePreParticipant(async (serviceAccessor) => { + RemoteFileSystemProviderClient.register(serviceAccessor.get(IRemoteAgentService), serviceAccessor.get(IFileService), serviceAccessor.get(ILogService)) +}) + +export default function getServiceOverride (connectionToken?: Promise | string, resourceUriProvider?: ((uri: URI) => URI)): IEditorOverrideServices { + return { + ...getEnvironmentServiceOverride(), + [IRemoteAgentService.toString()]: new SyncDescriptor(RemoteAgentService), + [IRemoteSocketFactoryService.toString()]: new SyncDescriptor(CustomRemoteSocketFactoryService), + [IRemoteAuthorityResolverService.toString()]: new SyncDescriptor(RemoteAuthorityResolverService, [true, connectionToken, resourceUriProvider]) + } +} diff --git a/src/service-override/terminal.ts b/src/service-override/terminal.ts index ebb26662..cda4eb1d 100644 --- a/src/service-override/terminal.ts +++ b/src/service-override/terminal.ts @@ -124,8 +124,10 @@ abstract class SimpleTerminalProcess implements ITerminalChildProcess { } } -export default function getServiceOverride (backend: ITerminalBackend): IEditorOverrideServices { - Registry.as(TerminalExtensions.Backend).registerTerminalBackend(backend) +export default function getServiceOverride (backend?: ITerminalBackend): IEditorOverrideServices { + if (backend != null) { + Registry.as(TerminalExtensions.Backend).registerTerminalBackend(backend) + } return { [ITerminalService.toString()]: new SyncDescriptor(TerminalService, [], true), [ITerminalLogService.toString()]: new SyncDescriptor(TerminalLogService, [], true), diff --git a/src/service-override/views.ts b/src/service-override/views.ts index 047d5141..fa3ad49d 100644 --- a/src/service-override/views.ts +++ b/src/service-override/views.ts @@ -31,7 +31,7 @@ import 'vs/workbench/contrib/typeHierarchy/browser/typeHierarchy.contribution' import 'vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline' import 'vs/workbench/contrib/outline/browser/outline.contribution' import 'vs/workbench/browser/actions/listCommands' -import 'vscode/vs/workbench/browser/parts/views/media/views.css' +import 'vscode/src/vs/workbench/browser/parts/views/media/views.css' import 'vs/workbench/api/browser/viewsExtensionPoint' import 'vs/workbench/browser/parts/editor/editor.contribution' import 'vs/workbench/browser/workbench.contribution' @@ -92,6 +92,7 @@ import { MonacoDelegateEditorGroupsService, MonacoEditorService, OpenEditor } fr import getBulkEditServiceOverride from './bulkEdit' import getLayoutServiceOverride, { LayoutService } from './layout' import getQuickAccessOverride from './quickaccess' +import getKeybindingsOverride from './keybindings' import { changeUrlDomain } from './tools/url' import { registerAssets } from '../assets' import { registerServiceInitializePostParticipant } from '../lifecycle' @@ -556,10 +557,10 @@ class MonacoEditorPart extends MonacoDelegateEditorGroupsService imp let webviewIframeAlternateDomains: string | undefined registerAssets({ - 'vs/workbench/contrib/webview/browser/pre/service-worker.js': () => changeUrlDomain(new URL('../../vscode/vs/workbench/contrib/webview/browser/pre/service-worker.js', import.meta.url).href, webviewIframeAlternateDomains), + 'vs/workbench/contrib/webview/browser/pre/service-worker.js': () => changeUrlDomain(new URL('../../vscode/src/vs/workbench/contrib/webview/browser/pre/service-worker.js', import.meta.url).href, webviewIframeAlternateDomains), 'vs/workbench/contrib/webview/browser/pre/index.html': () => changeUrlDomain(new URL('../assets/webview/index.html', import.meta.url).href, webviewIframeAlternateDomains), 'vs/workbench/contrib/webview/browser/pre/index-no-csp.html': () => changeUrlDomain(new URL('../assets/webview/index-no-csp.html', import.meta.url).href, webviewIframeAlternateDomains), - 'vs/workbench/contrib/webview/browser/pre/fake.html': () => changeUrlDomain(new URL('../../vscode/vs/workbench/contrib/webview/browser/pre/fake.html', import.meta.url).href, webviewIframeAlternateDomains) + 'vs/workbench/contrib/webview/browser/pre/fake.html': () => changeUrlDomain(new URL('../../vscode/src/vs/workbench/contrib/webview/browser/pre/fake.html', import.meta.url).href, webviewIframeAlternateDomains) }) registerServiceInitializePostParticipant(async (accessor) => { @@ -611,6 +612,9 @@ export default function getServiceOverride (openEditorFallback?: OpenEditor, _we isKeybindingConfigurationVisible: isEditorPartVisible, shouldUseGlobalPicker: isEditorPartVisible }), + ...getKeybindingsOverride({ + shouldUseGlobalKeybindings: isEditorPartVisible + }), [IViewsService.toString()]: new SyncDescriptor(ViewsService, [], false), [IViewDescriptorService.toString()]: new SyncDescriptor(ViewDescriptorService, [], true), [IActivityService.toString()]: new SyncDescriptor(ActivityService, [], true), diff --git a/src/services.ts b/src/services.ts index a1746c58..46651692 100644 --- a/src/services.ts +++ b/src/services.ts @@ -2,7 +2,7 @@ import Severity from 'vs/base/common/severity' import { IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration' import { ITextModelContentProvider } from 'vs/editor/common/services/resolverService' import { IColorTheme } from 'vs/platform/theme/common/themeService' -import { StorageScope, StorageTarget } from 'vscode/vs/platform/storage/common/storage' +import { StorageScope, StorageTarget } from 'vscode/src/vs/platform/storage/common/storage' import { IEditorOverrideServices, StandaloneServices } from 'vs/editor/standalone/browser/standaloneServices' import { ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation' import { IAction } from 'vs/base/common/actions' @@ -47,7 +47,7 @@ export { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeat export { IModelService } from 'vs/editor/common/services/model' export { ITextModelService } from 'vs/editor/common/services/resolverService' export { IClipboardService } from 'vs/platform/clipboard/common/clipboardService' -export { IDialogService } from 'vs/platform/dialogs/common/dialogs' +export { IDialogService, IFileDialogService } from 'vs/platform/dialogs/common/dialogs' export { IFileService } from 'vs/platform/files/common/files' export { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' export { IMarkerService } from 'vs/platform/markers/common/markers' @@ -126,6 +126,10 @@ export { IPreferencesSearchService } from 'vs/workbench/contrib/preferences/comm export { IKeybindingEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing' export { IOutputService } from 'vs/workbench/services/output/common/output' export { IHistoryService, GoFilter, GoScope } from 'vs/workbench/services/history/common/history' +export { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService' +export { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver' +export { IRemoteSocketFactoryService } from 'vs/platform/remote/common/remoteSocketFactoryService' +export { ITerminalService, ITerminalInstanceService } from 'vs/workbench/contrib/terminal/browser/terminal' // Export all Notification service parts export { diff --git a/src/workers/textMate.worker.ts b/src/workers/textmate.worker.ts similarity index 100% rename from src/workers/textMate.worker.ts rename to src/workers/textmate.worker.ts diff --git a/tsconfig.json b/tsconfig.json index e7b7e39e..37e7b3f4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,21 +14,21 @@ "rootDir": "./", "paths": { "vs/*": [ - "./vscode/vs/*" + "./vscode/src/vs/*" ], "vscode/*": [ "./vscode/*" ], "monaco-editor/esm/*": [ - "./vscode/*" + "./vscode/src/*" ] }, "preserveConstEnums": true, "types": ["monaco-editor", "node"] }, "include": [ + "./vscode/src/vscode-dts/vscode.proposed.*.d.ts", "./src/**/*", - "./vscode/**/*", "./rollup/*.ts", "./release.ts" ] diff --git a/tsconfig.rollup-config-server.json b/tsconfig.rollup-config-server.json new file mode 100644 index 00000000..8a0d2ea3 --- /dev/null +++ b/tsconfig.rollup-config-server.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "./rollup/types.d.ts", + "./rollup/rollup.server.config.ts" + ] +} \ No newline at end of file diff --git a/tsconfig.types.json b/tsconfig.types.json index 9162e148..925e667b 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -42,13 +42,13 @@ "preserveConstEnums": true, "paths": { "vs/*": [ - "./vscode/vs/*" + "./vscode/src/vs/*" ], "vscode/*": [ "./vscode/*" ], "monaco-editor/esm/*": [ - "./vscode/*" + "./vscode/src/*" ] }, "declaration": true, @@ -57,6 +57,7 @@ "types": ["monaco-editor", "node"] }, "include": [ + "./vscode/src/vscode-dts/vscode.proposed.*.d.ts", "src/services.ts", "src/types.d.ts", "src/extensions.ts", diff --git a/vscode.proposed.documentPaste.d.ts b/vscode.proposed.documentPaste.d.ts deleted file mode 100644 index 4b5e49ab..00000000 --- a/vscode.proposed.documentPaste.d.ts +++ /dev/null @@ -1,111 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -declare module 'vscode' { - - // https://github.com/microsoft/vscode/issues/30066/ - - /** - * Provider invoked when the user copies and pastes code. - */ - interface DocumentPasteEditProvider { - - /** - * Optional method invoked after the user copies text in a file. - * - * During {@link prepareDocumentPaste}, an extension can compute metadata that is attached to - * a {@link DataTransfer} and is passed back to the provider in {@link provideDocumentPasteEdits}. - * - * @param document Document where the copy took place. - * @param ranges Ranges being copied in the `document`. - * @param dataTransfer The data transfer associated with the copy. You can store additional values on this for later use in {@link provideDocumentPasteEdits}. - * @param token A cancellation token. - */ - prepareDocumentPaste?(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable; - - /** - * Invoked before the user pastes into a document. - * - * In this method, extensions can return a workspace edit that replaces the standard pasting behavior. - * - * @param document Document being pasted into - * @param ranges Currently selected ranges in the document. - * @param dataTransfer The data transfer associated with the paste. - * @param token A cancellation token. - * - * @return Optional workspace edit that applies the paste. Return undefined to use standard pasting. - */ - provideDocumentPasteEdits?(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, token: CancellationToken): ProviderResult; - } - - /** - * An operation applied on paste - */ - class DocumentPasteEdit { - - /** - * Human readable label that describes the edit. - */ - label: string; - - /** - * Controls the ordering or multiple paste edits. If this provider yield to edits, it will be shown lower in the list. - */ - yieldTo?: ReadonlyArray< - | { readonly extensionId: string; readonly providerId: string } - | { readonly mimeType: string } - >; - - /** - * The text or snippet to insert at the pasted locations. - */ - insertText: string | SnippetString; - - /** - * An optional additional edit to apply on paste. - */ - additionalEdit?: WorkspaceEdit; - - /** - * @param insertText The text or snippet to insert at the pasted locations. - * - * TODO: Reverse args, but this will break existing consumers :( - */ - constructor(insertText: string | SnippetString, label: string); - } - - interface DocumentPasteProviderMetadata { - /** - * Identifies the provider. - * - * This id is used when users configure the default provider for paste. - * - * This id should be unique within the extension but does not need to be unique across extensions. - */ - readonly id: string; - - /** - * Mime types that {@link DocumentPasteEditProvider.prepareDocumentPaste provideDocumentPasteEdits} may add on copy. - */ - readonly copyMimeTypes?: readonly string[]; - - /** - * Mime types that {@link DocumentPasteEditProvider.provideDocumentPasteEdits provideDocumentPasteEdits} should be invoked for. - * - * This can either be an exact mime type such as `image/png`, or a wildcard pattern such as `image/*`. - * - * Use `text/uri-list` for resources dropped from the explorer or other tree views in the workbench. - * - * Use `files` to indicate that the provider should be invoked if any {@link DataTransferFile files} are present in the {@link DataTransfer}. - * Note that {@link DataTransferFile} entries are only created when dropping content from outside the editor, such as - * from the operating system. - */ - readonly pasteMimeTypes?: readonly string[]; - } - - namespace languages { - export function registerDocumentPasteEditProvider(selector: DocumentSelector, provider: DocumentPasteEditProvider, metadata: DocumentPasteProviderMetadata): Disposable; - } -} diff --git a/vscode.proposed.extensionsAny.d.ts b/vscode.proposed.extensionsAny.d.ts deleted file mode 100644 index c53cd6d8..00000000 --- a/vscode.proposed.extensionsAny.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -declare module 'vscode' { - - // https://github.com/microsoft/vscode/issues/145307 @alexdima - - export interface Extension { - - /** - * `true` when the extension is associated to another extension host. - * - * *Note* that an extension from another extension host cannot export - * API, e.g {@link Extension.exports its exports} are always `undefined`. - */ - readonly isFromDifferentExtensionHost: boolean; - } - - export namespace extensions { - - /** - * Get an extension by its full identifier in the form of: `publisher.name`. - * - * @param extensionId An extension identifier. - * @param includeDifferentExtensionHosts Include extensions from different extension host - * @return An extension or `undefined`. - */ - export function getExtension(extensionId: string, includeDifferentExtensionHosts: boolean): Extension | undefined; - - /** - * All extensions across all extension hosts. - * - * @see {@link Extension.isFromDifferentExtensionHost} - */ - export const allAcrossExtensionHosts: readonly Extension[]; - - } -} diff --git a/vscode.proposed.externalUriOpener.d.ts b/vscode.proposed.externalUriOpener.d.ts deleted file mode 100644 index 757844d2..00000000 --- a/vscode.proposed.externalUriOpener.d.ts +++ /dev/null @@ -1,163 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -declare module 'vscode' { - - // https://github.com/microsoft/vscode/issues/109277 - - /** - * Details if an `ExternalUriOpener` can open a uri. - * - * The priority is also used to rank multiple openers against each other and determine - * if an opener should be selected automatically or if the user should be prompted to - * select an opener. - * - * The editor will try to use the best available opener, as sorted by `ExternalUriOpenerPriority`. - * If there are multiple potential "best" openers for a URI, then the user will be prompted - * to select an opener. - */ - export enum ExternalUriOpenerPriority { - /** - * The opener is disabled and will never be shown to users. - * - * Note that the opener can still be used if the user specifically - * configures it in their settings. - */ - None = 0, - - /** - * The opener can open the uri but will not cause a prompt on its own - * since the editor always contributes a built-in `Default` opener. - */ - Option = 1, - - /** - * The opener can open the uri. - * - * The editor's built-in opener has `Default` priority. This means that any additional `Default` - * openers will cause the user to be prompted to select from a list of all potential openers. - */ - Default = 2, - - /** - * The opener can open the uri and should be automatically selected over any - * default openers, include the built-in one from the editor. - * - * A preferred opener will be automatically selected if no other preferred openers - * are available. If multiple preferred openers are available, then the user - * is shown a prompt with all potential openers (not just preferred openers). - */ - Preferred = 3, - } - - /** - * Handles opening uris to external resources, such as http(s) links. - * - * Extensions can implement an `ExternalUriOpener` to open `http` links to a webserver - * inside of the editor instead of having the link be opened by the web browser. - * - * Currently openers may only be registered for `http` and `https` uris. - */ - export interface ExternalUriOpener { - - /** - * Check if the opener can open a uri. - * - * @param uri The uri being opened. This is the uri that the user clicked on. It has - * not yet gone through port forwarding. - * @param token Cancellation token indicating that the result is no longer needed. - * - * @return Priority indicating if the opener can open the external uri. - */ - canOpenExternalUri(uri: Uri, token: CancellationToken): ExternalUriOpenerPriority | Thenable; - - /** - * Open a uri. - * - * This is invoked when: - * - * - The user clicks a link which does not have an assigned opener. In this case, first `canOpenExternalUri` - * is called and if the user selects this opener, then `openExternalUri` is called. - * - The user sets the default opener for a link in their settings and then visits a link. - * - * @param resolvedUri The uri to open. This uri may have been transformed by port forwarding, so it - * may not match the original uri passed to `canOpenExternalUri`. Use `ctx.originalUri` to check the - * original uri. - * @param ctx Additional information about the uri being opened. - * @param token Cancellation token indicating that opening has been canceled. - * - * @return Thenable indicating that the opening has completed. - */ - openExternalUri(resolvedUri: Uri, ctx: OpenExternalUriContext, token: CancellationToken): Thenable | void; - } - - /** - * Additional information about the uri being opened. - */ - interface OpenExternalUriContext { - /** - * The uri that triggered the open. - * - * This is the original uri that the user clicked on or that was passed to `openExternal.` - * Due to port forwarding, this may not match the `resolvedUri` passed to `openExternalUri`. - */ - readonly sourceUri: Uri; - } - - /** - * Additional metadata about a registered `ExternalUriOpener`. - */ - interface ExternalUriOpenerMetadata { - - /** - * List of uri schemes the opener is triggered for. - * - * Currently only `http` and `https` are supported. - */ - readonly schemes: readonly string[]; - - /** - * Text displayed to the user that explains what the opener does. - * - * For example, 'Open in browser preview' - */ - readonly label: string; - } - - namespace window { - /** - * Register a new `ExternalUriOpener`. - * - * When a uri is about to be opened, an `onOpenExternalUri:SCHEME` activation event is fired. - * - * @param id Unique id of the opener, such as `myExtension.browserPreview`. This is used in settings - * and commands to identify the opener. - * @param opener Opener to register. - * @param metadata Additional information about the opener. - * - * @returns Disposable that unregisters the opener. - */ - export function registerExternalUriOpener(id: string, opener: ExternalUriOpener, metadata: ExternalUriOpenerMetadata): Disposable; - } - - interface OpenExternalOptions { - /** - * Allows using openers contributed by extensions through `registerExternalUriOpener` - * when opening the resource. - * - * If `true`, the editor will check if any contributed openers can handle the - * uri, and fallback to the default opener behavior. - * - * If it is string, this specifies the id of the `ExternalUriOpener` - * that should be used if it is available. Use `'default'` to force the editor's - * standard external opener to be used. - */ - readonly allowContributedOpeners?: boolean | string; - } - - namespace env { - export function openExternal(target: Uri, options?: OpenExternalOptions): Thenable; - } -} diff --git a/vscode.proposed.fileSearchProvider.d.ts b/vscode.proposed.fileSearchProvider.d.ts deleted file mode 100644 index bf7bc5ec..00000000 --- a/vscode.proposed.fileSearchProvider.d.ts +++ /dev/null @@ -1,67 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -declare module 'vscode' { - - // https://github.com/microsoft/vscode/issues/73524 - - /** - * The parameters of a query for file search. - */ - export interface FileSearchQuery { - /** - * The search pattern to match against file paths. - */ - pattern: string; - } - - /** - * Options that apply to file search. - */ - export interface FileSearchOptions extends SearchOptions { - /** - * The maximum number of results to be returned. - */ - maxResults?: number; - - /** - * A CancellationToken that represents the session for this search query. If the provider chooses to, this object can be used as the key for a cache, - * and searches with the same session object can search the same cache. When the token is cancelled, the session is complete and the cache can be cleared. - */ - session?: CancellationToken; - } - - /** - * A FileSearchProvider provides search results for files in the given folder that match a query string. It can be invoked by quickopen or other extensions. - * - * A FileSearchProvider is the more powerful of two ways to implement file search in the editor. Use a FileSearchProvider if you wish to search within a folder for - * all files that match the user's query. - * - * The FileSearchProvider will be invoked on every keypress in quickopen. When `workspace.findFiles` is called, it will be invoked with an empty query string, - * and in that case, every file in the folder should be returned. - */ - export interface FileSearchProvider { - /** - * Provide the set of files that match a certain file path pattern. - * @param query The parameters for this query. - * @param options A set of options to consider while searching files. - * @param token A cancellation token. - */ - provideFileSearchResults(query: FileSearchQuery, options: FileSearchOptions, token: CancellationToken): ProviderResult; - } - - export namespace workspace { - /** - * Register a search provider. - * - * Only one provider can be registered per scheme. - * - * @param scheme The provider will be invoked for workspace folders that have this file scheme. - * @param provider The provider. - * @return A {@link Disposable} that unregisters this provider when being disposed. - */ - export function registerFileSearchProvider(scheme: string, provider: FileSearchProvider): Disposable; - } -} diff --git a/vscode.proposed.textSearchProvider.d.ts b/vscode.proposed.textSearchProvider.d.ts deleted file mode 100644 index 5d4b2b50..00000000 --- a/vscode.proposed.textSearchProvider.d.ts +++ /dev/null @@ -1,281 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -declare module 'vscode' { - - // https://github.com/microsoft/vscode/issues/59921 - - /** - * The parameters of a query for text search. - */ - export interface TextSearchQuery { - /** - * The text pattern to search for. - */ - pattern: string; - - /** - * Whether or not `pattern` should match multiple lines of text. - */ - isMultiline?: boolean; - - /** - * Whether or not `pattern` should be interpreted as a regular expression. - */ - isRegExp?: boolean; - - /** - * Whether or not the search should be case-sensitive. - */ - isCaseSensitive?: boolean; - - /** - * Whether or not to search for whole word matches only. - */ - isWordMatch?: boolean; - } - - /** - * A file glob pattern to match file paths against. - * TODO@roblourens merge this with the GlobPattern docs/definition in vscode.d.ts. - * @see {@link GlobPattern} - */ - export type GlobString = string; - - /** - * Options common to file and text search - */ - export interface SearchOptions { - /** - * The root folder to search within. - */ - folder: Uri; - - /** - * Files that match an `includes` glob pattern should be included in the search. - */ - includes: GlobString[]; - - /** - * Files that match an `excludes` glob pattern should be excluded from the search. - */ - excludes: GlobString[]; - - /** - * Whether external files that exclude files, like .gitignore, should be respected. - * See the vscode setting `"search.useIgnoreFiles"`. - */ - useIgnoreFiles: boolean; - - /** - * Whether symlinks should be followed while searching. - * See the vscode setting `"search.followSymlinks"`. - */ - followSymlinks: boolean; - - /** - * Whether global files that exclude files, like .gitignore, should be respected. - * See the vscode setting `"search.useGlobalIgnoreFiles"`. - */ - useGlobalIgnoreFiles: boolean; - - /** - * Whether files in parent directories that exclude files, like .gitignore, should be respected. - * See the vscode setting `"search.useParentIgnoreFiles"`. - */ - useParentIgnoreFiles: boolean; - } - - /** - * Options to specify the size of the result text preview. - * These options don't affect the size of the match itself, just the amount of preview text. - */ - export interface TextSearchPreviewOptions { - /** - * The maximum number of lines in the preview. - * Only search providers that support multiline search will ever return more than one line in the match. - */ - matchLines: number; - - /** - * The maximum number of characters included per line. - */ - charsPerLine: number; - } - - /** - * Options that apply to text search. - */ - export interface TextSearchOptions extends SearchOptions { - /** - * The maximum number of results to be returned. - */ - maxResults: number; - - /** - * Options to specify the size of the result text preview. - */ - previewOptions?: TextSearchPreviewOptions; - - /** - * Exclude files larger than `maxFileSize` in bytes. - */ - maxFileSize?: number; - - /** - * Interpret files using this encoding. - * See the vscode setting `"files.encoding"` - */ - encoding?: string; - - /** - * Number of lines of context to include before each match. - */ - beforeContext?: number; - - /** - * Number of lines of context to include after each match. - */ - afterContext?: number; - } - - /** - * Represents the severity of a TextSearchComplete message. - */ - export enum TextSearchCompleteMessageType { - Information = 1, - Warning = 2, - } - - /** - * A message regarding a completed search. - */ - export interface TextSearchCompleteMessage { - /** - * Markdown text of the message. - */ - text: string; - /** - * Whether the source of the message is trusted, command links are disabled for untrusted message sources. - * Messaged are untrusted by default. - */ - trusted?: boolean; - /** - * The message type, this affects how the message will be rendered. - */ - type: TextSearchCompleteMessageType; - } - - /** - * Information collected when text search is complete. - */ - export interface TextSearchComplete { - /** - * Whether the search hit the limit on the maximum number of search results. - * `maxResults` on {@linkcode TextSearchOptions} specifies the max number of results. - * - If exactly that number of matches exist, this should be false. - * - If `maxResults` matches are returned and more exist, this should be true. - * - If search hits an internal limit which is less than `maxResults`, this should be true. - */ - limitHit?: boolean; - - /** - * Additional information regarding the state of the completed search. - * - * Messages with "Information" style support links in markdown syntax: - * - Click to [run a command](command:workbench.action.OpenQuickPick) - * - Click to [open a website](https://aka.ms) - * - * Commands may optionally return { triggerSearch: true } to signal to the editor that the original search should run be again. - */ - message?: TextSearchCompleteMessage | TextSearchCompleteMessage[]; - } - - /** - * A preview of the text result. - */ - export interface TextSearchMatchPreview { - /** - * The matching lines of text, or a portion of the matching line that contains the match. - */ - text: string; - - /** - * The Range within `text` corresponding to the text of the match. - * The number of matches must match the TextSearchMatch's range property. - */ - matches: Range | Range[]; - } - - /** - * A match from a text search - */ - export interface TextSearchMatch { - /** - * The uri for the matching document. - */ - uri: Uri; - - /** - * The range of the match within the document, or multiple ranges for multiple matches. - */ - ranges: Range | Range[]; - - /** - * A preview of the text match. - */ - preview: TextSearchMatchPreview; - } - - /** - * A line of context surrounding a TextSearchMatch. - */ - export interface TextSearchContext { - /** - * The uri for the matching document. - */ - uri: Uri; - - /** - * One line of text. - * previewOptions.charsPerLine applies to this - */ - text: string; - - /** - * The line number of this line of context. - */ - lineNumber: number; - } - - export type TextSearchResult = TextSearchMatch | TextSearchContext; - - /** - * A TextSearchProvider provides search results for text results inside files in the workspace. - */ - export interface TextSearchProvider { - /** - * Provide results that match the given text pattern. - * @param query The parameters for this query. - * @param options A set of options to consider while searching. - * @param progress A progress callback that must be invoked for all results. - * @param token A cancellation token. - */ - provideTextSearchResults(query: TextSearchQuery, options: TextSearchOptions, progress: Progress, token: CancellationToken): ProviderResult; - } - - export namespace workspace { - /** - * Register a text search provider. - * - * Only one provider can be registered per scheme. - * - * @param scheme The provider will be invoked for workspace folders that have this file scheme. - * @param provider The provider. - * @return A {@link Disposable} that unregisters this provider when being disposed. - */ - export function registerTextSearchProvider(scheme: string, provider: TextSearchProvider): Disposable; - } -}