diff --git a/Cargo.lock b/Cargo.lock index baed77a49fd7c35af5ede122c854746308fde162..46bcca639528ab8d59a8afed87c5955c218cd2e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4154,11 +4154,17 @@ dependencies = [ "json_dotpath", "language", "log", + "node_runtime", "paths", + "regex", + "reqwest_client", + "schemars", "serde", "serde_json", + "settings", "shlex", "task", + "tempfile", "util", "workspace-hack", ] diff --git a/crates/dap/src/adapters.rs b/crates/dap/src/adapters.rs index d9f26b3b348985f2e52423cb217b1c1446960bbf..464ba788498aed796464f915e88528d0c121ce52 100644 --- a/crates/dap/src/adapters.rs +++ b/crates/dap/src/adapters.rs @@ -15,7 +15,7 @@ use serde::{Deserialize, Serialize}; use settings::WorktreeId; use smol::fs::File; use std::{ - borrow::Borrow, + borrow::{Borrow, Cow}, ffi::OsStr, fmt::Debug, net::Ipv4Addr, @@ -268,9 +268,10 @@ pub async fn download_adapter_from_github( adapter_name: DebugAdapterName, github_version: AdapterVersion, file_type: DownloadedFileType, + base_path: &Path, delegate: &dyn DapDelegate, ) -> Result { - let adapter_path = paths::debug_adapters_dir().join(&adapter_name.as_ref()); + let adapter_path = base_path.join(&adapter_name.as_ref()); let version_path = adapter_path.join(format!("{}_{}", adapter_name, github_version.tag_name)); let fs = delegate.fs(); @@ -373,7 +374,7 @@ pub trait DebugAdapter: 'static + Send + Sync { } } - fn dap_schema(&self) -> serde_json::Value; + fn dap_schema(&self) -> Cow<'static, serde_json::Value>; fn label_for_child_session(&self, _args: &StartDebuggingRequestArguments) -> Option { None @@ -399,8 +400,8 @@ impl DebugAdapter for FakeAdapter { DebugAdapterName(Self::ADAPTER_NAME.into()) } - fn dap_schema(&self) -> serde_json::Value { - serde_json::Value::Null + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + Cow::Owned(serde_json::Value::Null) } async fn request_kind( diff --git a/crates/dap_adapters/Cargo.toml b/crates/dap_adapters/Cargo.toml index 65544fbb6a1b7565c4fe641058e4e6c725b21016..ba78a10fde87450e674849f52a818f7ec6f46a27 100644 --- a/crates/dap_adapters/Cargo.toml +++ b/crates/dap_adapters/Cargo.toml @@ -6,12 +6,22 @@ publish.workspace = true license = "GPL-3.0-or-later" [features] +# FIXME +default = ["update-schemas"] test-support = [ "dap/test-support", "gpui/test-support", "task/test-support", "util/test-support", ] +update-schemas = [ + "dep:node_runtime", + "dep:regex", + "dep:reqwest_client", + "dep:schemars", + "dep:settings", + "dep:tempfile", +] [lints] workspace = true @@ -20,6 +30,11 @@ workspace = true path = "src/dap_adapters.rs" doctest = false +[[bin]] +name = "update-schemas" +path = "src/update_schemas.rs" +required-features = ["update-schemas"] + [dependencies] anyhow.workspace = true async-trait.workspace = true @@ -40,6 +55,15 @@ task.workspace = true util.workspace = true workspace-hack.workspace = true +node_runtime = { workspace = true, optional = true } +# FIXME do we still need this +regex = { workspace = true, optional = true } +reqwest_client = { workspace = true, optional = true } +# FIXME do we still need this +schemars = { workspace = true, optional = true } +settings = { workspace = true, optional = true } +tempfile = { workspace = true, optional = true } + [dev-dependencies] dap = { workspace = true, features = ["test-support"] } gpui = { workspace = true, features = ["test-support"] } diff --git a/crates/dap_adapters/schemas/JavaScript.json b/crates/dap_adapters/schemas/JavaScript.json new file mode 100644 index 0000000000000000000000000000000000000000..41c61745603d4f7cf642e20630d80660606a75f0 --- /dev/null +++ b/crates/dap_adapters/schemas/JavaScript.json @@ -0,0 +1,12562 @@ +{ + "allOf": [ + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-node" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-node" + ] + }, + "request": { + "enum": [ + "attach" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "TCP/IP address of process to be debugged. Default is 'localhost'.", + "type": "string", + "default": "localhost" + }, + "attachExistingChildren": { + "description": "Whether to attempt to attach to already-spawned child processes.", + "type": "boolean", + "default": false + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "continueOnAttach": { + "type": "boolean", + "default": true, + "markdownDescription": "If true, we'll automatically resume programs launched and waiting on `--inspect-brk`" + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "port": { + "description": "Debug port to attach to. Default is 9229.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "processId": { + "description": "ID of process to attach to.", + "type": "string", + "default": "${command:PickProcess}" + }, + "remoteHostHeader": { + "description": "Explicit Host header to use when connecting to the websocket of inspector. If unspecified, the host header will be set to 'localhost'. This is useful when the inspector is running behind a proxy that only accept particular Host header.", + "type": "string" + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "websocketAddress": { + "description": "Exact websocket address to attach to. If unspecified, it will be discovered from the address and port.", + "type": "string" + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "node" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "node" + ] + }, + "request": { + "enum": [ + "attach" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "TCP/IP address of process to be debugged. Default is 'localhost'.", + "type": "string", + "default": "localhost" + }, + "attachExistingChildren": { + "description": "Whether to attempt to attach to already-spawned child processes.", + "type": "boolean", + "default": false + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "continueOnAttach": { + "type": "boolean", + "default": true, + "markdownDescription": "If true, we'll automatically resume programs launched and waiting on `--inspect-brk`" + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "port": { + "description": "Debug port to attach to. Default is 9229.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "processId": { + "description": "ID of process to attach to.", + "type": "string", + "default": "${command:PickProcess}" + }, + "remoteHostHeader": { + "description": "Explicit Host header to use when connecting to the websocket of inspector. If unspecified, the host header will be set to 'localhost'. This is useful when the inspector is running behind a proxy that only accept particular Host header.", + "type": "string" + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "websocketAddress": { + "description": "Exact websocket address to attach to. If unspecified, it will be discovered from the address and port.", + "type": "string" + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "node-terminal" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-extensionHost" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": "array", + "default": [ + "--extensionDevelopmentPath=${ZED_WORKTREE_ROOT}" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "debugWebWorkerHost": { + "type": [ + "boolean" + ], + "default": true, + "markdownDescription": "Configures whether we should try to attach to the web worker extension host." + }, + "debugWebviews": { + "type": [ + "boolean" + ], + "default": true, + "markdownDescription": "Configures whether we should try to attach to webviews in the launched VS Code instance. This will only work in desktop VS Code." + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "rendererDebugOptions": { + "type": "object", + "properties": { + "address": { + "description": "IP address or hostname the debugged browser is listening on.", + "type": "string", + "default": "localhost" + }, + "browserAttachLocation": { + "description": "Forces the browser to attach in one location. In a remote workspace (through ssh or WSL, for example) this can be used to attach to a browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port to use to remote debugging the browser, given as `--remote-debugging-port` when launching the browser.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "restart": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to reconnect if the browser connection is closed" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "targetSelection": { + "type": "string", + "default": "automatic", + "enum": [ + "pick", + "automatic" + ], + "markdownDescription": "Whether to attach to all targets that match the URL filter (\"automatic\") or ask to pick one (\"pick\")." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + }, + "default": { + "webRoot": "${ZED_WORKTREE_ROOT}" + }, + "markdownDescription": "Chrome launch options used when attaching to the renderer process, with `debugWebviews` or `debugWebWorkerHost`." + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Absolute path to VS Code." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "testConfiguration": { + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.vscode-test.js", + "markdownDescription": "Path to a test configuration file for the [test CLI](https://code.visualstudio.com/api/working-with-extensions/testing-extension#quick-setup-the-test-cli)." + }, + "testConfigurationLabel": { + "type": "string", + "default": "", + "markdownDescription": "A single configuration to run from the file. If not specified, you may be asked to pick." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "required": [] + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "extensionHost" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": "array", + "default": [ + "--extensionDevelopmentPath=${ZED_WORKTREE_ROOT}" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "debugWebWorkerHost": { + "type": [ + "boolean" + ], + "default": true, + "markdownDescription": "Configures whether we should try to attach to the web worker extension host." + }, + "debugWebviews": { + "type": [ + "boolean" + ], + "default": true, + "markdownDescription": "Configures whether we should try to attach to webviews in the launched VS Code instance. This will only work in desktop VS Code." + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "rendererDebugOptions": { + "type": "object", + "properties": { + "address": { + "description": "IP address or hostname the debugged browser is listening on.", + "type": "string", + "default": "localhost" + }, + "browserAttachLocation": { + "description": "Forces the browser to attach in one location. In a remote workspace (through ssh or WSL, for example) this can be used to attach to a browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port to use to remote debugging the browser, given as `--remote-debugging-port` when launching the browser.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "restart": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to reconnect if the browser connection is closed" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "targetSelection": { + "type": "string", + "default": "automatic", + "enum": [ + "pick", + "automatic" + ], + "markdownDescription": "Whether to attach to all targets that match the URL filter (\"automatic\") or ask to pick one (\"pick\")." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + }, + "default": { + "webRoot": "${ZED_WORKTREE_ROOT}" + }, + "markdownDescription": "Chrome launch options used when attaching to the renderer process, with `debugWebviews` or `debugWebWorkerHost`." + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Absolute path to VS Code." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "testConfiguration": { + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.vscode-test.js", + "markdownDescription": "Path to a test configuration file for the [test CLI](https://code.visualstudio.com/api/working-with-extensions/testing-extension#quick-setup-the-test-cli)." + }, + "testConfigurationLabel": { + "type": "string", + "default": "", + "markdownDescription": "A single configuration to run from the file. If not specified, you may be asked to pick." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "required": [] + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-chrome" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "browserLaunchLocation": { + "description": "Forces the browser to be launched in one location. In a remote workspace (through ssh or WSL, for example) this can be used to open the browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "cleanUp": { + "description": "What clean-up to do after the debugging session finishes. Close only the tab being debug, vs. close the whole browser.", + "type": "string", + "default": "wholeBrowser", + "enum": [ + "wholeBrowser", + "onlyTab" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Optional working directory for the runtime executable.", + "type": "string", + "default": null + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "description": "Optional dictionary of environment key/value pairs for the browser.", + "type": "object", + "default": {} + }, + "file": { + "description": "A local html file to open in the browser", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/index.html", + "tags": [ + "setup" + ] + }, + "includeDefaultArgs": { + "description": "Whether default browser launch arguments (to disable features that may make debugging harder) will be included in the launch.", + "type": "boolean", + "default": true + }, + "includeLaunchArgs": { + "description": "Advanced: whether any default launch/debugging arguments are set on the browser. The debugger will assume the browser will use pipe debugging such as that which is provided with `--remote-debugging-pipe`.", + "type": "boolean", + "default": true + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how browser processes are killed when stopping the session with `cleanUp: wholeBrowser`. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port for the browser to listen on. Defaults to \"0\", which will cause the browser to be debugged via pipes, which is generally more secure and should be chosen unless you need to attach to the browser from another tool.", + "type": "number", + "default": 0 + }, + "profileStartup": { + "description": "If true, will start profiling soon as the process launches", + "type": "boolean", + "default": true + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "runtimeExecutable": { + "description": "Either 'canary', 'stable', 'custom' or path to the browser executable. Custom means a custom wrapper, custom build or CHROME_PATH environment variable.", + "type": [ + "string", + "null" + ], + "default": "stable" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "userDataDir": { + "description": "By default, the browser is launched with a separate user profile in a temp folder. Use this option to override it. Set to false to launch with your default user profile. A new browser can't be launched if an instance is already running from `userDataDir`.", + "type": [ + "string", + "boolean" + ], + "default": true + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-chrome" + ] + }, + "request": { + "enum": [ + "attach" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "IP address or hostname the debugged browser is listening on.", + "type": "string", + "default": "localhost" + }, + "browserAttachLocation": { + "description": "Forces the browser to attach in one location. In a remote workspace (through ssh or WSL, for example) this can be used to attach to a browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port to use to remote debugging the browser, given as `--remote-debugging-port` when launching the browser.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "restart": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to reconnect if the browser connection is closed" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "targetSelection": { + "type": "string", + "default": "automatic", + "enum": [ + "pick", + "automatic" + ], + "markdownDescription": "Whether to attach to all targets that match the URL filter (\"automatic\") or ask to pick one (\"pick\")." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "chrome" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "browserLaunchLocation": { + "description": "Forces the browser to be launched in one location. In a remote workspace (through ssh or WSL, for example) this can be used to open the browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "cleanUp": { + "description": "What clean-up to do after the debugging session finishes. Close only the tab being debug, vs. close the whole browser.", + "type": "string", + "default": "wholeBrowser", + "enum": [ + "wholeBrowser", + "onlyTab" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Optional working directory for the runtime executable.", + "type": "string", + "default": null + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "description": "Optional dictionary of environment key/value pairs for the browser.", + "type": "object", + "default": {} + }, + "file": { + "description": "A local html file to open in the browser", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/index.html", + "tags": [ + "setup" + ] + }, + "includeDefaultArgs": { + "description": "Whether default browser launch arguments (to disable features that may make debugging harder) will be included in the launch.", + "type": "boolean", + "default": true + }, + "includeLaunchArgs": { + "description": "Advanced: whether any default launch/debugging arguments are set on the browser. The debugger will assume the browser will use pipe debugging such as that which is provided with `--remote-debugging-pipe`.", + "type": "boolean", + "default": true + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how browser processes are killed when stopping the session with `cleanUp: wholeBrowser`. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port for the browser to listen on. Defaults to \"0\", which will cause the browser to be debugged via pipes, which is generally more secure and should be chosen unless you need to attach to the browser from another tool.", + "type": "number", + "default": 0 + }, + "profileStartup": { + "description": "If true, will start profiling soon as the process launches", + "type": "boolean", + "default": true + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "runtimeExecutable": { + "description": "Either 'canary', 'stable', 'custom' or path to the browser executable. Custom means a custom wrapper, custom build or CHROME_PATH environment variable.", + "type": [ + "string", + "null" + ], + "default": "stable" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "userDataDir": { + "description": "By default, the browser is launched with a separate user profile in a temp folder. Use this option to override it. Set to false to launch with your default user profile. A new browser can't be launched if an instance is already running from `userDataDir`.", + "type": [ + "string", + "boolean" + ], + "default": true + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "chrome" + ] + }, + "request": { + "enum": [ + "attach" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "IP address or hostname the debugged browser is listening on.", + "type": "string", + "default": "localhost" + }, + "browserAttachLocation": { + "description": "Forces the browser to attach in one location. In a remote workspace (through ssh or WSL, for example) this can be used to attach to a browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port to use to remote debugging the browser, given as `--remote-debugging-port` when launching the browser.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "restart": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to reconnect if the browser connection is closed" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "targetSelection": { + "type": "string", + "default": "automatic", + "enum": [ + "pick", + "automatic" + ], + "markdownDescription": "Whether to attach to all targets that match the URL filter (\"automatic\") or ask to pick one (\"pick\")." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-msedge" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "When debugging webviews, the IP address or hostname the webview is listening on. Will be automatically discovered if not set.", + "type": "string", + "default": "localhost" + }, + "browserLaunchLocation": { + "description": "Forces the browser to be launched in one location. In a remote workspace (through ssh or WSL, for example) this can be used to open the browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "cleanUp": { + "description": "What clean-up to do after the debugging session finishes. Close only the tab being debug, vs. close the whole browser.", + "type": "string", + "default": "wholeBrowser", + "enum": [ + "wholeBrowser", + "onlyTab" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Optional working directory for the runtime executable.", + "type": "string", + "default": null + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "description": "Optional dictionary of environment key/value pairs for the browser.", + "type": "object", + "default": {} + }, + "file": { + "description": "A local html file to open in the browser", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/index.html", + "tags": [ + "setup" + ] + }, + "includeDefaultArgs": { + "description": "Whether default browser launch arguments (to disable features that may make debugging harder) will be included in the launch.", + "type": "boolean", + "default": true + }, + "includeLaunchArgs": { + "description": "Advanced: whether any default launch/debugging arguments are set on the browser. The debugger will assume the browser will use pipe debugging such as that which is provided with `--remote-debugging-pipe`.", + "type": "boolean", + "default": true + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how browser processes are killed when stopping the session with `cleanUp: wholeBrowser`. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "When debugging webviews, the port the webview debugger is listening on. Will be automatically discovered if not set.", + "type": "number", + "default": 9229 + }, + "profileStartup": { + "description": "If true, will start profiling soon as the process launches", + "type": "boolean", + "default": true + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "runtimeExecutable": { + "description": "Either 'canary', 'stable', 'dev', 'custom' or path to the browser executable. Custom means a custom wrapper, custom build or EDGE_PATH environment variable.", + "type": [ + "string", + "null" + ], + "default": "stable" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "useWebView": { + "description": "When 'true', the debugger will treat the runtime executable as a host application that contains a WebView allowing you to debug the WebView script content.", + "type": "boolean", + "default": false + }, + "userDataDir": { + "description": "By default, the browser is launched with a separate user profile in a temp folder. Use this option to override it. Set to false to launch with your default user profile. A new browser can't be launched if an instance is already running from `userDataDir`.", + "type": [ + "string", + "boolean" + ], + "default": true + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "pwa-msedge" + ] + }, + "request": { + "enum": [ + "attach" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "IP address or hostname the debugged browser is listening on.", + "type": "string", + "default": "localhost" + }, + "browserAttachLocation": { + "description": "Forces the browser to attach in one location. In a remote workspace (through ssh or WSL, for example) this can be used to attach to a browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port to use to remote debugging the browser, given as `--remote-debugging-port` when launching the browser.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "restart": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to reconnect if the browser connection is closed" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "targetSelection": { + "type": "string", + "default": "automatic", + "enum": [ + "pick", + "automatic" + ], + "markdownDescription": "Whether to attach to all targets that match the URL filter (\"automatic\") or ask to pick one (\"pick\")." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "useWebView": { + "description": "An object containing the `pipeName` of a debug pipe for a UWP hosted Webview2. This is the \"MyTestSharedMemory\" when creating the pipe \"\\\\.\\pipe\\LOCAL\\MyTestSharedMemory\"", + "type": "object", + "properties": { + "pipeName": { + "type": "string" + } + }, + "default": { + "pipeName": "MyPipeName" + } + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "msedge" + ] + }, + "request": { + "enum": [ + "launch" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "When debugging webviews, the IP address or hostname the webview is listening on. Will be automatically discovered if not set.", + "type": "string", + "default": "localhost" + }, + "browserLaunchLocation": { + "description": "Forces the browser to be launched in one location. In a remote workspace (through ssh or WSL, for example) this can be used to open the browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "cleanUp": { + "description": "What clean-up to do after the debugging session finishes. Close only the tab being debug, vs. close the whole browser.", + "type": "string", + "default": "wholeBrowser", + "enum": [ + "wholeBrowser", + "onlyTab" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Optional working directory for the runtime executable.", + "type": "string", + "default": null + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "description": "Optional dictionary of environment key/value pairs for the browser.", + "type": "object", + "default": {} + }, + "file": { + "description": "A local html file to open in the browser", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/index.html", + "tags": [ + "setup" + ] + }, + "includeDefaultArgs": { + "description": "Whether default browser launch arguments (to disable features that may make debugging harder) will be included in the launch.", + "type": "boolean", + "default": true + }, + "includeLaunchArgs": { + "description": "Advanced: whether any default launch/debugging arguments are set on the browser. The debugger will assume the browser will use pipe debugging such as that which is provided with `--remote-debugging-pipe`.", + "type": "boolean", + "default": true + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how browser processes are killed when stopping the session with `cleanUp: wholeBrowser`. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "When debugging webviews, the port the webview debugger is listening on. Will be automatically discovered if not set.", + "type": "number", + "default": 9229 + }, + "profileStartup": { + "description": "If true, will start profiling soon as the process launches", + "type": "boolean", + "default": true + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "runtimeExecutable": { + "description": "Either 'canary', 'stable', 'dev', 'custom' or path to the browser executable. Custom means a custom wrapper, custom build or EDGE_PATH environment variable.", + "type": [ + "string", + "null" + ], + "default": "stable" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "useWebView": { + "description": "When 'true', the debugger will treat the runtime executable as a host application that contains a WebView allowing you to debug the WebView script content.", + "type": "boolean", + "default": false + }, + "userDataDir": { + "description": "By default, the browser is launched with a separate user profile in a temp folder. Use this option to override it. Set to false to launch with your default user profile. A new browser can't be launched if an instance is already running from `userDataDir`.", + "type": [ + "string", + "boolean" + ], + "default": true + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "msedge" + ] + }, + "request": { + "enum": [ + "attach" + ] + } + }, + "required": [ + "type", + "request" + ] + }, + "then": { + "properties": { + "address": { + "description": "IP address or hostname the debugged browser is listening on.", + "type": "string", + "default": "localhost" + }, + "browserAttachLocation": { + "description": "Forces the browser to attach in one location. In a remote workspace (through ssh or WSL, for example) this can be used to attach to a browser on the remote machine rather than locally.", + "default": null, + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "enum": [ + "ui", + "workspace" + ] + } + ] + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "disableNetworkCache": { + "description": "Controls whether to skip the network cache for each request", + "type": "boolean", + "default": true + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "inspectUri": { + "description": "Format to use to rewrite the inspectUri: It's a template string that interpolates keys in `{curlyBraces}`. Available keys are:\n - `url.*` is the parsed address of the running application. For instance, `{url.port}`, `{url.hostname}`\n - `port` is the debug port that Chrome is listening on.\n - `browserInspectUri` is the inspector URI on the launched browser\n - `browserInspectUriPath` is the path part of the inspector URI on the launched browser (e.g.: \"/devtools/browser/e9ec0098-306e-472a-8133-5e42488929c2\").\n - `wsProtocol` is the hinted websocket protocol. This is set to `wss` if the original URL is `https`, or `ws` otherwise.\n", + "type": [ + "string", + "null" + ], + "default": null + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pathMapping": { + "description": "A mapping of URLs/paths to local folders, to resolve scripts in the Browser to scripts on disk", + "type": "object", + "default": {} + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "perScriptSourcemaps": { + "description": "Whether scripts are loaded individually with unique sourcemaps containing the basename of the source file. This can be set to optimize sourcemap handling when dealing with lots of small scripts. If set to \"auto\", we'll detect known cases where this is appropriate.", + "type": "string", + "default": "auto", + "enum": [ + "yes", + "no", + "auto" + ] + }, + "port": { + "description": "Port to use to remote debugging the browser, given as `--remote-debugging-port` when launching the browser.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ], + "tags": [ + "setup" + ] + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "restart": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to reconnect if the browser connection is closed" + }, + "server": { + "oneOf": [ + { + "description": "Configures a web server to start up. Takes the same configuration as the 'node' launch task.", + "type": "object", + "properties": { + "args": { + "description": "Command line arguments passed to the program.\n\nCan be an array of strings or a single string. When the program is launched in a terminal, setting this property to a single string will result in the arguments not being escaped for the shell.", + "type": [ + "array", + "string" + ], + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "attachSimplePort": { + "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically.", + "default": 9229, + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\${.*}$" + } + ] + }, + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "console": { + "description": "Where to launch the debug target.", + "type": "string", + "default": "internalConsole", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "enumDescriptions": [ + "VS Code Debug Console (which doesn't support to read input from a program)", + "VS Code's integrated terminal", + "External terminal that can be configured via user settings" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "experimentalNetworking": { + "description": "Enable experimental inspection in Node.js. When set to `auto` this is enabled for versions of Node.js that support it. It can be set to `on` or `off` to enable or disable it explicitly.", + "type": "string", + "default": "auto", + "enum": [ + "auto", + "on", + "off" + ] + }, + "killBehavior": { + "type": "string", + "default": "forceful", + "enum": [ + "forceful", + "polite", + "none" + ], + "markdownDescription": "Configures how debug processes are killed when stopping the session. Can be:\n\n- forceful (default): forcefully tears down the process tree. Sends SIGKILL on posix, or `taskkill.exe /F` on Windows.\n- polite: gracefully tears down the process tree. It's possible that misbehaving processes continue to run after shutdown in this way. Sends SIGTERM on posix, or `taskkill.exe` with no `/F` (force) flag on Windows.\n- none: no termination will happen." + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "profileStartup": { + "description": "If true, will start profiling as soon as the process launches", + "type": "boolean", + "default": true + }, + "program": { + "description": "Absolute path to the program. Generated value is guessed by looking at package.json and opened files. Edit this attribute.", + "type": "string", + "default": "", + "tags": [ + "setup" + ] + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "restart": { + "description": "Try to reconnect to the program if we lose connection. If set to `true`, we'll try once a second, forever. You can customize the interval and maximum number of attempts by specifying the `delay` and `maxAttempts` in an object instead.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "delay": { + "type": "number", + "default": 1000, + "minimum": 0 + }, + "maxAttempts": { + "type": "number", + "default": 10, + "minimum": 0 + } + } + } + ] + }, + "runtimeArgs": { + "description": "Optional arguments passed to the runtime executable.", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "runtimeExecutable": { + "type": [ + "string", + "null" + ], + "default": "node", + "markdownDescription": "Runtime to use. Either an absolute path or the name of a runtime available on the PATH. If omitted `node` is assumed." + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "runtimeVersion": { + "type": "string", + "default": "default", + "markdownDescription": "Version of `node` runtime to use. Requires `nvm`." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "stopOnEntry": { + "description": "Automatically stop program after launch.", + "type": [ + "boolean", + "string" + ], + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "node my-server.js" + } + }, + { + "description": "JavaScript Debug Terminal", + "type": "object", + "properties": { + "autoAttachChildProcesses": { + "description": "Attach debugger to new child processes automatically.", + "type": "boolean", + "default": true + }, + "cascadeTerminateToConfigurations": { + "description": "A list of debug sessions which, when this debug session is terminated, will also be stopped.", + "type": "array", + "default": [], + "items": { + "type": "string", + "uniqueItems": true + } + }, + "command": { + "description": "Command to run in the launched terminal. If not provided, the terminal will open without launching a program.", + "type": [ + "string", + "null" + ], + "default": "npm start", + "tags": [ + "setup" + ] + }, + "customDescriptionGenerator": { + "description": "Customize the textual description the debugger shows for objects (local variables, etc...). Samples:\n 1. this.toString() // will call toString to print all objects\n 2. this.customDescription ? this.customDescription() : defaultValue // Use customDescription method if available, if not return defaultValue\n 3. function (def) { return this.customDescription ? this.customDescription() : def } // Use customDescription method if available, if not return defaultValue\n ", + "type": "string" + }, + "customPropertiesGenerator": { + "description": "Customize the properties shown for an object in the debugger (local variables, etc...). Samples:\n 1. { ...this, extraProperty: '12345' } // Add an extraProperty 12345 to all objects\n 2. this.customProperties ? this.customProperties() : this // Use customProperties method if available, if not use the properties in this (the default properties)\n 3. function () { return this.customProperties ? this.customProperties() : this } // Use customDescription method if available, if not return the default properties\n\n Deprecated: This is a temporary implementation of this feature until we have time to implement it in the way described here: https://github.com/microsoft/vscode/issues/102181", + "type": "string", + "deprecated": true + }, + "cwd": { + "description": "Absolute path to the working directory of the program being debugged. If you've set localRoot then cwd will match that value otherwise it falls back to your workspaceFolder", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "docDefault": "localRoot || ${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + }, + "enableContentValidation": { + "description": "Toggles whether we verify the contents of files on disk match the ones loaded in the runtime. This is useful in a variety of scenarios and required in some, but can cause issues if you have server-side transformation of scripts, for example.", + "type": "boolean", + "default": true + }, + "enableDWARF": { + "type": "boolean", + "default": true, + "markdownDescription": "Toggles whether the debugger will try to read DWARF debug symbols from WebAssembly, which can be resource intensive. Requires the `ms-vscode.wasm-dwarf-debugging` extension to function." + }, + "env": { + "type": "object", + "additionalProperties": { + "type": [ + "string", + "null" + ] + }, + "default": {}, + "markdownDescription": "Environment variables passed to the program. The value `null` removes the variable from the environment.", + "tags": [ + "setup" + ] + }, + "envFile": { + "description": "Absolute path to a file containing environment variable definitions.", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}/.env" + }, + "localRoot": { + "description": "Path to the local directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "nodeVersionHint": { + "description": "Allows you to explicitly specify the Node version that's running, which can be used to disable or enable certain behaviors in cases where the automatic version detection does not work.", + "type": "number", + "default": 12, + "minimum": 8 + }, + "outFiles": { + "description": "If source maps are enabled, these glob patterns specify the generated JavaScript files. If a pattern starts with `!` the files are excluded. If not specified, the generated code is expected in the same directory as its source.", + "type": [ + "array" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.(m|c|)js", + "!**/node_modules/**" + ], + "items": { + "type": "string" + }, + "tags": [ + "setup" + ] + }, + "outputCapture": { + "default": "console", + "enum": [ + "console", + "std" + ], + "markdownDescription": "From where to capture output messages: the default debug API if set to `console`, or stdout/stderr streams if set to `std`." + }, + "pauseForSourceMap": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether to wait for source maps to load for each incoming script. This has a performance overhead, and might be safely disabled when running off of disk, so long as `rootPath` is not disabled." + }, + "remoteRoot": { + "description": "Absolute path to the remote directory containing the program.", + "type": [ + "string", + "null" + ], + "default": null + }, + "resolveSourceMapLocations": { + "description": "A list of minimatch patterns for locations (folders and URLs) in which source maps can be used to resolve local files. This can be used to avoid incorrectly breaking in external source mapped code. Patterns can be prefixed with \"!\" to exclude them. May be set to an empty array or null to avoid restriction.", + "type": [ + "array", + "null" + ], + "default": [ + "${ZED_WORKTREE_ROOT}/**", + "!**/node_modules/**" + ], + "items": { + "type": "string" + } + }, + "runtimeSourcemapPausePatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "A list of patterns at which to manually insert entrypoint breakpoints. This can be useful to give the debugger an opportunity to set breakpoints when using sourcemaps that don't exist or can't be detected before launch, such as [with the Serverless framework](https://github.com/microsoft/vscode-js-debug/issues/492)." + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false, + "default": { + "program": "npm start" + } + } + ] + }, + "showAsyncStacks": { + "description": "Show the async calls that led to the current call stack.", + "default": true, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "onAttach": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onAttach" + ] + }, + { + "type": "object", + "properties": { + "onceBreakpointResolved": { + "type": "number", + "default": 32 + } + }, + "required": [ + "onceBreakpointResolved" + ] + } + ] + }, + "skipFiles": { + "description": "An array of file or folder names, or path globs, to skip when debugging. Star patterns and negations are allowed, for example, `[\"**/node_modules/**\", \"!**/node_modules/my-module/**\"]`", + "type": "array", + "default": [ + "${/**" + ] + }, + "smartStep": { + "description": "Automatically step through generated code that cannot be mapped back to the original source.", + "type": "boolean", + "default": true + }, + "sourceMapPathOverrides": { + "description": "A set of mappings for rewriting the locations of source files from what the sourcemap says, to their locations on disk.", + "type": "object", + "default": { + "meteor://💻app/*": "${ZED_WORKTREE_ROOT}/*", + "webpack:///./~/*": "${ZED_WORKTREE_ROOT}/node_modules/*", + "webpack://?:*/*": "${ZED_WORKTREE_ROOT}/*" + } + }, + "sourceMapRenames": { + "description": "Whether to use the \"names\" mapping in sourcemaps. This requires requesting source content, which can be slow with certain debuggers.", + "type": "boolean", + "default": true + }, + "sourceMaps": { + "description": "Use JavaScript source maps (if they exist).", + "type": "boolean", + "default": true + }, + "targetSelection": { + "type": "string", + "default": "automatic", + "enum": [ + "pick", + "automatic" + ], + "markdownDescription": "Whether to attach to all targets that match the URL filter (\"automatic\") or ask to pick one (\"pick\")." + }, + "timeout": { + "description": "Retry for this number of milliseconds to connect to Node.js. Default is 10000 ms.", + "type": "number", + "default": 10000 + }, + "timeouts": { + "description": "Timeouts for several debugger operations.", + "type": "object", + "properties": { + "hoverEvaluation": { + "description": "Time until value evaluation for hovered symbols is aborted. If set to 0, hover evaluation does never time out.", + "type": "number", + "default": 500 + }, + "sourceMapCumulativePause": { + "description": "Extra time in milliseconds allowed per session to be spent waiting for source-maps to be processed, after the minimum time (sourceMapMinPause) has been exhausted", + "type": "number", + "default": 1000 + }, + "sourceMapMinPause": { + "description": "Minimum time in milliseconds spent waiting for each source-map to be processed when a script is being parsed", + "type": "number", + "default": 1000 + } + }, + "additionalProperties": false, + "default": {}, + "markdownDescription": "Timeouts for several debugger operations." + }, + "trace": { + "description": "Configures what diagnostic output is produced.", + "default": true, + "oneOf": [ + { + "description": "Trace may be set to 'true' to write diagnostic logs to the disk.", + "type": "boolean" + }, + { + "type": "object", + "properties": { + "logFile": { + "description": "Configures where on disk logs are written.", + "type": [ + "string", + "null" + ] + }, + "stdio": { + "description": "Whether to return trace data from the launched application or browser.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "url": { + "description": "Will search for a tab with this exact url and attach to it, if found", + "type": "string", + "default": "http://localhost:8080", + "tags": [ + "setup" + ] + }, + "urlFilter": { + "description": "Will search for a page with this url and attach to it, if found. Can have * wildcards.", + "type": "string", + "default": "" + }, + "useWebView": { + "description": "An object containing the `pipeName` of a debug pipe for a UWP hosted Webview2. This is the \"MyTestSharedMemory\" when creating the pipe \"\\\\.\\pipe\\LOCAL\\MyTestSharedMemory\"", + "type": "object", + "properties": { + "pipeName": { + "type": "string" + } + }, + "default": { + "pipeName": "MyPipeName" + } + }, + "vueComponentPaths": { + "description": "A list of file glob patterns to find `*.vue` components. By default, searches the entire workspace. This needs to be specified due to extra lookups that Vue's sourcemaps require in Vue CLI 4. You can disable this special handling by setting this to an empty array.", + "type": "array", + "default": [ + "${ZED_WORKTREE_ROOT}/**/*.vue" + ] + }, + "webRoot": { + "description": "This specifies the workspace absolute path to the webserver root. Used to resolve paths like `/app.js` to files on disk. Shorthand for a pathMapping for \"/\"", + "type": "string", + "default": "${ZED_WORKTREE_ROOT}", + "tags": [ + "setup" + ] + } + } + } + } + ] +} diff --git a/crates/dap_adapters/src/codelldb.rs b/crates/dap_adapters/src/codelldb.rs index 5b88db4432d3823e8a85228a82ca064cfacad23c..e200ccff0656a5f65ab4949b80f791ca212e8c47 100644 --- a/crates/dap_adapters/src/codelldb.rs +++ b/crates/dap_adapters/src/codelldb.rs @@ -1,8 +1,8 @@ -use std::{collections::HashMap, path::PathBuf, sync::OnceLock}; +use std::{borrow::Cow, collections::HashMap, path::PathBuf, sync::OnceLock}; use anyhow::{Context as _, Result}; use async_trait::async_trait; -use dap::adapters::{DebugTaskDefinition, latest_github_release}; +use dap::adapters::{DapDelegate, DebugTaskDefinition, latest_github_release}; use futures::StreamExt; use gpui::AsyncApp; use serde_json::Value; @@ -132,8 +132,8 @@ impl DebugAdapter for CodeLldbDebugAdapter { }) } - fn dap_schema(&self) -> serde_json::Value { - json!({ + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + Cow::Owned(json!({ "properties": { "request": { "type": "string", @@ -320,7 +320,7 @@ impl DebugAdapter for CodeLldbDebugAdapter { } } ] - }) + })) } async fn get_binary( @@ -344,6 +344,7 @@ impl DebugAdapter for CodeLldbDebugAdapter { self.name(), version.clone(), adapters::DownloadedFileType::Vsix, + paths::debug_adapters_dir(), delegate.as_ref(), ) .await?; diff --git a/crates/dap_adapters/src/dap_adapters.rs b/crates/dap_adapters/src/dap_adapters.rs index c254302e7144b53500fd2a3b84be06e8ec30c2a0..3a7de1557700f9dca841fd6e21672562f03c021a 100644 --- a/crates/dap_adapters/src/dap_adapters.rs +++ b/crates/dap_adapters/src/dap_adapters.rs @@ -21,7 +21,7 @@ use dap::{ use gdb::GdbDebugAdapter; use go::GoDebugAdapter; use gpui::{App, BorrowAppContext}; -use javascript::JsDebugAdapter; +pub use javascript::JsDebugAdapter; use php::PhpDebugAdapter; use python::PythonDebugAdapter; use serde_json::json; @@ -42,3 +42,42 @@ pub fn init(cx: &mut App) { } }) } + +#[cfg(feature = "update-schemas")] +struct UpdateSchemasDapDelegate { + client: std::sync::Arc, + fs: std::sync::Arc, +} + +#[cfg(feature = "update-schemas")] +#[async_trait] +impl dap::adapters::DapDelegate for UpdateSchemasDapDelegate { + fn worktree_id(&self) -> settings::WorktreeId { + unreachable!() + } + fn worktree_root_path(&self) -> &std::path::Path { + unreachable!() + } + fn http_client(&self) -> Arc { + self.client.clone() + } + fn node_runtime(&self) -> node_runtime::NodeRuntime { + unreachable!() + } + fn toolchain_store(&self) -> Arc { + unreachable!() + } + fn fs(&self) -> Arc { + self.fs.clone() + } + fn output_to_console(&self, _msg: String) {} + async fn which(&self, _command: &std::ffi::OsStr) -> Option { + unreachable!() + } + async fn read_text_file(&self, _path: std::path::PathBuf) -> Result { + unreachable!() + } + async fn shell_env(&self) -> collections::HashMap { + unreachable!() + } +} diff --git a/crates/dap_adapters/src/gdb.rs b/crates/dap_adapters/src/gdb.rs index 17b7a659111532b5fa04f2b3424e50e7867df6d6..a78084dd319264866fe24ce8e1fef109c1e49389 100644 --- a/crates/dap_adapters/src/gdb.rs +++ b/crates/dap_adapters/src/gdb.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, ffi::OsStr}; +use std::{borrow::Cow, collections::HashMap, ffi::OsStr}; use anyhow::{Context as _, Result, bail}; use async_trait::async_trait; @@ -63,8 +63,8 @@ impl DebugAdapter for GdbDebugAdapter { }) } - fn dap_schema(&self) -> serde_json::Value { - json!({ + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + Cow::Owned(json!({ "oneOf": [ { "allOf": [ @@ -151,7 +151,7 @@ impl DebugAdapter for GdbDebugAdapter { ] } ] - }) + })) } async fn get_binary( diff --git a/crates/dap_adapters/src/go.rs b/crates/dap_adapters/src/go.rs index d32f5cbf3426f1b669132e74e389862e7944267b..6bc6910e2aef0119e2d9e15044a73ad434162e00 100644 --- a/crates/dap_adapters/src/go.rs +++ b/crates/dap_adapters/src/go.rs @@ -16,6 +16,7 @@ use task::TcpArgumentsTemplate; use util; use std::{ + borrow::Cow, env::consts, ffi::OsStr, path::{Path, PathBuf}, @@ -26,7 +27,7 @@ use std::{ use crate::*; #[derive(Default, Debug)] -pub(crate) struct GoDebugAdapter { +pub struct GoDebugAdapter { shim_path: OnceLock, } @@ -81,6 +82,7 @@ impl GoDebugAdapter { "delve-shim-dap".into(), asset.clone(), ty, + paths::debug_adapters_dir(), delegate.as_ref(), ) .await?; @@ -105,7 +107,7 @@ impl DebugAdapter for GoDebugAdapter { Some(SharedString::new_static("Go").into()) } - fn dap_schema(&self) -> serde_json::Value { + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { // Create common properties shared between launch and attach let common_properties = json!({ "debugAdapter": { @@ -307,7 +309,7 @@ impl DebugAdapter for GoDebugAdapter { }); // Create the final schema - json!({ + Cow::Owned(json!({ "oneOf": [ { "allOf": [ @@ -358,7 +360,7 @@ impl DebugAdapter for GoDebugAdapter { ] } ] - }) + })) } async fn config_from_zed_format(&self, zed_scenario: ZedDebugConfig) -> Result { diff --git a/crates/dap_adapters/src/javascript.rs b/crates/dap_adapters/src/javascript.rs index 23a378cdf9a2cc4779e9aed44538f04483a3dc56..03d5c0f87f45178a1ab5dd9531374f02384d8cc2 100644 --- a/crates/dap_adapters/src/javascript.rs +++ b/crates/dap_adapters/src/javascript.rs @@ -1,21 +1,27 @@ use adapters::latest_github_release; use anyhow::Context as _; use dap::{StartDebuggingRequestArguments, adapters::DebugTaskDefinition}; -use gpui::AsyncApp; +use fs::{Fs, RealFs}; +use gpui::{AsyncApp, background_executor}; use serde_json::Value; -use std::{collections::HashMap, path::PathBuf, sync::OnceLock}; +use std::{ + borrow::Cow, + collections::HashMap, + path::{Path, PathBuf}, + sync::{LazyLock, OnceLock}, +}; use task::DebugRequest; use util::{ResultExt, maybe}; use crate::*; #[derive(Debug, Default)] -pub(crate) struct JsDebugAdapter { +pub struct JsDebugAdapter { checked: OnceLock<()>, } impl JsDebugAdapter { - const ADAPTER_NAME: &'static str = "JavaScript"; + pub const ADAPTER_NAME: &'static str = "JavaScript"; const ADAPTER_NPM_NAME: &'static str = "vscode-js-debug"; const ADAPTER_PATH: &'static str = "js-debug/src/dapDebugServer.js"; @@ -224,274 +230,12 @@ impl DebugAdapter for JsDebugAdapter { }) } - fn dap_schema(&self) -> serde_json::Value { - json!({ - "oneOf": [ - { - "allOf": [ - { - "type": "object", - "required": ["request"], - "properties": { - "request": { - "type": "string", - "enum": ["launch"], - "description": "Request to launch a new process" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["pwa-node", "node", "chrome", "pwa-chrome", "msedge", "pwa-msedge"], - "description": "The type of debug session", - "default": "pwa-node" - }, - "program": { - "type": "string", - "description": "Path to the program or file to debug" - }, - "cwd": { - "type": "string", - "description": "Absolute path to the working directory of the program being debugged" - }, - "args": { - "type": ["array", "string"], - "description": "Command line arguments passed to the program", - "items": { - "type": "string" - }, - "default": [] - }, - "env": { - "type": "object", - "description": "Environment variables passed to the program", - "default": {} - }, - "envFile": { - "type": ["string", "array"], - "description": "Path to a file containing environment variable definitions", - "items": { - "type": "string" - } - }, - "stopOnEntry": { - "type": "boolean", - "description": "Automatically stop program after launch", - "default": false - }, - "attachSimplePort": { - "type": "number", - "description": "If set, attaches to the process via the given port. This is generally no longer necessary for Node.js programs and loses the ability to debug child processes, but can be useful in more esoteric scenarios such as with Deno and Docker launches. If set to 0, a random port will be chosen and --inspect-brk added to the launch arguments automatically." - }, - "runtimeExecutable": { - "type": ["string", "null"], - "description": "Runtime to use, an absolute path or the name of a runtime available on PATH", - "default": "node" - }, - "runtimeArgs": { - "type": ["array", "null"], - "description": "Arguments passed to the runtime executable", - "items": { - "type": "string" - }, - "default": [] - }, - "outFiles": { - "type": "array", - "description": "Glob patterns for locating generated JavaScript files", - "items": { - "type": "string" - }, - "default": ["${ZED_WORKTREE_ROOT}/**/*.js", "!**/node_modules/**"] - }, - "sourceMaps": { - "type": "boolean", - "description": "Use JavaScript source maps if they exist", - "default": true - }, - "pauseForSourceMap": { - "type": "boolean", - "description": "Wait for source maps to load before setting breakpoints.", - "default": true - }, - "sourceMapRenames": { - "type": "boolean", - "description": "Whether to use the \"names\" mapping in sourcemaps.", - "default": true - }, - "sourceMapPathOverrides": { - "type": "object", - "description": "Rewrites the locations of source files from what the sourcemap says to their locations on disk", - "default": {} - }, - "restart": { - "type": ["boolean", "object"], - "description": "Restart session after Node.js has terminated", - "default": false - }, - "trace": { - "type": ["boolean", "object"], - "description": "Enables logging of the Debug Adapter", - "default": false - }, - "console": { - "type": "string", - "enum": ["internalConsole", "integratedTerminal"], - "description": "Where to launch the debug target", - "default": "internalConsole" - }, - // Browser-specific - "url": { - "type": ["string", "null"], - "description": "Will navigate to this URL and attach to it (browser debugging)" - }, - "webRoot": { - "type": "string", - "description": "Workspace absolute path to the webserver root", - "default": "${ZED_WORKTREE_ROOT}" - }, - "userDataDir": { - "type": ["string", "boolean"], - "description": "Path to a custom Chrome user profile (browser debugging)", - "default": true - }, - "skipFiles": { - "type": "array", - "description": "An array of glob patterns for files to skip when debugging", - "items": { - "type": "string" - }, - "default": ["/**"] - }, - "timeout": { - "type": "number", - "description": "Retry for this number of milliseconds to connect to the debug adapter", - "default": 10000 - }, - "resolveSourceMapLocations": { - "type": ["array", "null"], - "description": "A list of minimatch patterns for source map resolution", - "items": { - "type": "string" - } - } - }, - "oneOf": [ - { "required": ["program"] }, - { "required": ["url"] } - ] - } - ] - }, - { - "allOf": [ - { - "type": "object", - "required": ["request"], - "properties": { - "request": { - "type": "string", - "enum": ["attach"], - "description": "Request to attach to an existing process" - } - } - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": ["pwa-node", "node", "chrome", "pwa-chrome", "edge", "pwa-edge"], - "description": "The type of debug session", - "default": "pwa-node" - }, - "processId": { - "type": ["string", "number"], - "description": "ID of process to attach to (Node.js debugging)" - }, - "port": { - "type": "number", - "description": "Debug port to attach to", - "default": 9229 - }, - "address": { - "type": "string", - "description": "TCP/IP address of the process to be debugged", - "default": "localhost" - }, - "restart": { - "type": ["boolean", "object"], - "description": "Restart session after Node.js has terminated", - "default": false - }, - "sourceMaps": { - "type": "boolean", - "description": "Use JavaScript source maps if they exist", - "default": true - }, - "sourceMapPathOverrides": { - "type": "object", - "description": "Rewrites the locations of source files from what the sourcemap says to their locations on disk", - "default": {} - }, - "outFiles": { - "type": "array", - "description": "Glob patterns for locating generated JavaScript files", - "items": { - "type": "string" - }, - "default": ["${ZED_WORKTREE_ROOT}/**/*.js", "!**/node_modules/**"] - }, - "url": { - "type": "string", - "description": "Will search for a page with this URL and attach to it (browser debugging)" - }, - "webRoot": { - "type": "string", - "description": "Workspace absolute path to the webserver root", - "default": "${ZED_WORKTREE_ROOT}" - }, - "skipFiles": { - "type": "array", - "description": "An array of glob patterns for files to skip when debugging", - "items": { - "type": "string" - }, - "default": ["/**"] - }, - "timeout": { - "type": "number", - "description": "Retry for this number of milliseconds to connect to the debug adapter", - "default": 10000 - }, - "resolveSourceMapLocations": { - "type": ["array", "null"], - "description": "A list of minimatch patterns for source map resolution", - "items": { - "type": "string" - } - }, - "remoteRoot": { - "type": ["string", "null"], - "description": "Path to the remote directory containing the program" - }, - "localRoot": { - "type": ["string", "null"], - "description": "Path to the local directory containing the program" - } - }, - "oneOf": [ - { "required": ["processId"] }, - { "required": ["port"] } - ] - } - ] - } - ] - }) + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + static SCHEMA: LazyLock = LazyLock::new(|| { + const RAW_SCHEMA: &str = include_str!("../schemas/JavaScript.json"); + serde_json::from_str(RAW_SCHEMA).unwrap() + }); + Cow::Borrowed(&*SCHEMA) } async fn get_binary( @@ -509,6 +253,7 @@ impl DebugAdapter for JsDebugAdapter { self.name(), version, adapters::DownloadedFileType::GzipTar, + paths::debug_adapters_dir(), delegate.as_ref(), ) .await?; @@ -531,6 +276,58 @@ impl DebugAdapter for JsDebugAdapter { } } +impl JsDebugAdapter { + pub fn fetch_schema(dir: &Path) -> anyhow::Result<(String, String)> { + let executor = background_executor(); + // FIXME + let client = Arc::new(reqwest_client::ReqwestClient::user_agent("Cole").unwrap()); + let fs = Arc::new(RealFs::new(None, executor.clone())); + let delegate = UpdateSchemasDapDelegate { + client: client.clone(), + fs: fs.clone(), + }; + + executor.block(async move { + let release = latest_github_release( + &format!("microsoft/{}", Self::ADAPTER_NPM_NAME), + true, + false, + client.clone(), + ) + .await?; + + let version = release.tag_name.strip_prefix("v").unwrap(); + let asset_name = format!("ms-vscode.js-debug.{version}.vsix",); + let version = AdapterVersion { + tag_name: release.tag_name, + url: release + .assets + .iter() + .find(|asset| asset.name == asset_name) + .with_context(|| format!("no asset found matching {asset_name:?}"))? + .browser_download_url + .clone(), + }; + + let path = adapters::download_adapter_from_github( + DebugAdapterName(Self::ADAPTER_NAME.into()), + version, + adapters::DownloadedFileType::Vsix, + dir, + &delegate, + ) + .await?; + let package_json_content = fs + .load(&path.join("extension").join("package.json")) + .await?; + let package_nls_json_content = fs + .load(&path.join("extension").join("package.nls.json")) + .await?; + Ok((package_json_content, package_nls_json_content)) + }) + } +} + fn normalize_task_type(task_type: &mut Value) { let Some(task_type_str) = task_type.as_str() else { return; diff --git a/crates/dap_adapters/src/php.rs b/crates/dap_adapters/src/php.rs index 7d7dee00c900dcfa44fc4bf99e164d0f2454c817..7d0ea2bbb9fa816cfa447f8401c7c9c8bed5fb4f 100644 --- a/crates/dap_adapters/src/php.rs +++ b/crates/dap_adapters/src/php.rs @@ -6,6 +6,7 @@ use dap::StartDebuggingRequestArgumentsRequest; use dap::adapters::{DebugTaskDefinition, TcpArguments}; use gpui::{AsyncApp, SharedString}; use language::LanguageName; +use std::borrow::Cow; use std::{collections::HashMap, path::PathBuf, sync::OnceLock}; use util::ResultExt; @@ -125,8 +126,8 @@ impl PhpDebugAdapter { #[async_trait(?Send)] impl DebugAdapter for PhpDebugAdapter { - fn dap_schema(&self) -> serde_json::Value { - json!({ + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + Cow::Owned(json!({ "properties": { "request": { "type": "string", @@ -294,7 +295,7 @@ impl DebugAdapter for PhpDebugAdapter { } }, "required": ["request", "program"] - }) + })) } fn name(&self) -> DebugAdapterName { @@ -350,6 +351,7 @@ impl DebugAdapter for PhpDebugAdapter { self.name(), version, adapters::DownloadedFileType::Vsix, + paths::debug_adapters_dir(), delegate.as_ref(), ) .await?; diff --git a/crates/dap_adapters/src/python.rs b/crates/dap_adapters/src/python.rs index dc3d15e124578e183ba5ed09b80aee7d6dda54c8..606926f28d812b6f1e3282566b032b85a2ca5cd0 100644 --- a/crates/dap_adapters/src/python.rs +++ b/crates/dap_adapters/src/python.rs @@ -6,6 +6,7 @@ use gpui::{AppContext, AsyncApp, SharedString}; use json_dotpath::DotPaths; use language::{LanguageName, Toolchain}; use serde_json::Value; +use std::borrow::Cow; use std::net::Ipv4Addr; use std::{ collections::HashMap, @@ -126,6 +127,7 @@ impl PythonDebugAdapter { adapter_name, version, adapters::DownloadedFileType::GzipTar, + paths::debug_adapters_dir(), delegate.as_ref(), ) .await?; @@ -258,8 +260,8 @@ impl DebugAdapter for PythonDebugAdapter { }) } - fn dap_schema(&self) -> serde_json::Value { - json!({ + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + Cow::Owned(json!({ "properties": { "request": { "type": "string", @@ -588,7 +590,7 @@ impl DebugAdapter for PythonDebugAdapter { } } ] - }) + })) } async fn get_binary( diff --git a/crates/dap_adapters/src/update_schemas.rs b/crates/dap_adapters/src/update_schemas.rs new file mode 100644 index 0000000000000000000000000000000000000000..0185fc5f98b3f596dfcca5cb36b193b06e2a7ecc --- /dev/null +++ b/crates/dap_adapters/src/update_schemas.rs @@ -0,0 +1,140 @@ +use collections::HashMap; +use dap_adapters::JsDebugAdapter; +use schemars::{Schema, json_schema}; +use serde::{Deserialize, Serialize}; +use task::{EnvVariableReplacer, VariableName}; +use tempfile::TempDir; + +fn main() { + #[derive(Serialize, Deserialize)] + struct PackageJsonConfigurationAttributes { + #[serde(default, skip_serializing_if = "Option::is_none")] + launch: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + attach: Option, + } + + #[derive(Serialize, Deserialize)] + #[serde(rename_all = "camelCase")] + struct PackageJsonDebugger { + r#type: String, + configuration_attributes: PackageJsonConfigurationAttributes, + } + + #[derive(Serialize, Deserialize)] + struct PackageJsonContributes { + debuggers: Vec, + } + + #[derive(Serialize, Deserialize)] + struct PackageJson { + contributes: PackageJsonContributes, + } + + let dir = TempDir::new().unwrap(); + let path = std::fs::canonicalize(dir.path()).unwrap(); + let (package_json, package_nls_json) = + dap_adapters::JsDebugAdapter::fetch_schema(&path).unwrap(); + let package_nls_json = + serde_json::from_str::>(&package_nls_json) + .unwrap() + .into_iter() + .filter_map(|(k, v)| { + let v = v.as_str()?; + Some((k, v.to_owned())) + }) + .collect::>(); + + let package_json: serde_json::Value = serde_json::from_str(&package_json).unwrap(); + + struct Replacer { + package_nls_json: HashMap, + env: EnvVariableReplacer, + } + + impl Replacer { + fn replace(&self, input: serde_json::Value) -> serde_json::Value { + match input { + serde_json::Value::String(s) => { + if s.starts_with("%") && s.ends_with("%") { + self.package_nls_json + .get(s.trim_matches('%')) + .map(|s| s.as_str().into()) + .unwrap_or("(missing)".into()) + } else { + self.env.replace(&s).into() + } + } + serde_json::Value::Array(arr) => { + serde_json::Value::Array(arr.into_iter().map(|v| self.replace(v)).collect()) + } + serde_json::Value::Object(obj) => serde_json::Value::Object( + obj.into_iter().map(|(k, v)| (k, self.replace(v))).collect(), + ), + _ => input, + } + } + } + + let env = EnvVariableReplacer::new(HashMap::from_iter([( + "workspaceFolder".to_owned(), + VariableName::WorktreeRoot.to_string(), + )])); + let replacer = Replacer { + env, + package_nls_json, + }; + let package_json = replacer.replace(package_json); + + let package_json: PackageJson = serde_json::from_value(package_json).unwrap(); + + let alternatives = package_json + .contributes + .debuggers + .into_iter() + .flat_map(|debugger| { + let r#type = debugger.r#type; + let configuration_attributes = debugger.configuration_attributes; + configuration_attributes + .launch + .map(|schema| ("launch", schema)) + .into_iter() + .chain( + configuration_attributes + .attach + .map(|schema| ("attach", schema)), + ) + .map(|(request, schema)| { + json_schema!({ + "if": { + "properties": { + "type": { + "enum": [r#type] + }, + "request": { + "enum": [request] + } + }, + "required": ["type", "request"] + }, + "then": schema + }) + }) + .collect::>() + }) + .collect::>(); + let schema = json_schema!({ + "allOf": alternatives + }); + + let mut schema = serde_json::to_string_pretty(&schema.to_value()).unwrap(); + schema.push('\n'); + std::fs::write( + format!( + "crates/dap_adapters/schemas/{}.json", + JsDebugAdapter::ADAPTER_NAME + ), + schema, + ) + .unwrap(); +} diff --git a/crates/debug_adapter_extension/src/extension_dap_adapter.rs b/crates/debug_adapter_extension/src/extension_dap_adapter.rs index b656bed9bc2ec972528c4b4c237e8ae0fceedc5a..c68a449cd2f94c074378f50e2268502f1010e2ca 100644 --- a/crates/debug_adapter_extension/src/extension_dap_adapter.rs +++ b/crates/debug_adapter_extension/src/extension_dap_adapter.rs @@ -1,4 +1,5 @@ use std::{ + borrow::Cow, path::{Path, PathBuf}, str::FromStr, sync::Arc, @@ -79,8 +80,8 @@ impl DebugAdapter for ExtensionDapAdapter { self.debug_adapter_name.as_ref().into() } - fn dap_schema(&self) -> serde_json::Value { - self.schema.clone() + fn dap_schema(&self) -> Cow<'static, serde_json::Value> { + Cow::Owned(self.schema.clone()) } async fn get_binary( diff --git a/crates/task/src/adapter_schema.rs b/crates/task/src/adapter_schema.rs index 2c58bc0eabcdcb2aeef8eee6b32828a334634229..c4495725d11d1f37316d9440f28bfcabcf512380 100644 --- a/crates/task/src/adapter_schema.rs +++ b/crates/task/src/adapter_schema.rs @@ -1,3 +1,5 @@ +use std::borrow::Cow; + use gpui::SharedString; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -8,7 +10,7 @@ pub struct AdapterSchema { /// The adapter name identifier pub adapter: SharedString, /// The JSON schema for this adapter's configuration - pub schema: serde_json::Value, + pub schema: Cow<'static, serde_json::Value>, } #[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] diff --git a/crates/task/src/task.rs b/crates/task/src/task.rs index bbae4850c16d5e7b7caacde245dc36429c18ed8e..da2d25902bd2343beacaf031b31d5c65fed5a459 100644 --- a/crates/task/src/task.rs +++ b/crates/task/src/task.rs @@ -336,19 +336,19 @@ pub enum Shell { }, } -type VsCodeEnvVariable = String; -type ZedEnvVariable = String; +pub type VsCodeEnvVariable = String; +pub type ZedEnvVariable = String; -struct EnvVariableReplacer { +pub struct EnvVariableReplacer { variables: HashMap, } impl EnvVariableReplacer { - fn new(variables: HashMap) -> Self { + pub fn new(variables: HashMap) -> Self { Self { variables } } - fn replace_value(&self, input: serde_json::Value) -> serde_json::Value { + pub fn replace_value(&self, input: serde_json::Value) -> serde_json::Value { match input { serde_json::Value::String(s) => serde_json::Value::String(self.replace(&s)), serde_json::Value::Array(arr) => { @@ -363,7 +363,7 @@ impl EnvVariableReplacer { } } // Replaces occurrences of VsCode-specific environment variables with Zed equivalents. - fn replace(&self, input: &str) -> String { + pub fn replace(&self, input: &str) -> String { shellexpand::env_with_context_no_errors(&input, |var: &str| { // Colons denote a default value in case the variable is not set. We want to preserve that default, as otherwise shellexpand will substitute it for us. let colon_position = var.find(':').unwrap_or(var.len());