Files
godot-vscode-plugin/package.json
David Kincaid 37bb1116fb Debugger Tool Improvements (#848)
A variety of debugger internal fixes + linter/style improvements
2025-07-31 15:17:33 -04:00

941 lines
26 KiB
JSON
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"name": "godot-tools",
"displayName": "godot-tools",
"icon": "icon.png",
"version": "2.5.1",
"description": "Tools for game development with Godot Engine and GDScript",
"repository": {
"type": "git",
"url": "https://github.com/godotengine/godot-vscode-plugin"
},
"bugs": {
"url": "https://github.com/godotengine/godot-vscode-plugin/issues"
},
"license": "MIT",
"author": "The Godot Engine community",
"publisher": "geequlim",
"engines": {
"vscode": "^1.96.0"
},
"categories": [
"Programming Languages",
"Linters",
"Snippets",
"Debuggers",
"Formatters",
"Other"
],
"activationEvents": [
"workspaceContains:project.godot",
"onDebugResolve:godot"
],
"main": "./out/extension.js",
"scripts": {
"format": "biome format --write --changed src",
"compile": "tsc -p ./",
"lint": "biome lint src",
"watch": "tsc -watch -p ./",
"package": "vsce package",
"vscode:prepublish": "npm run esbuild-base -- --minify",
"esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node",
"esbuild": "npm run esbuild-base -- --sourcemap",
"esbuild-watch": "npm run esbuild-base -- --sourcemap --watch",
"generate-icons": "ts-node tools/generate_icons.ts",
"test": "vscode-test"
},
"contributes": {
"customEditors": [
{
"viewType": "gddoc",
"displayName": "Godot Documentation",
"selector": [
{
"filenamePattern": "*.gddoc"
}
]
}
],
"commands": [
{
"category": "Godot Tools",
"command": "godotTools.openEditor",
"title": "Open workspace with Godot editor"
},
{
"category": "Godot Tools",
"command": "godotTools.openEditorSettings",
"title": "Open EditorSettings File"
},
{
"category": "Godot Tools",
"command": "godotTools.startLanguageServer",
"title": "Start the GDScript Language Server for this workspace"
},
{
"category": "Godot Tools",
"command": "godotTools.stopLanguageServer",
"title": "Stop the GDScript Language Server for this workspace"
},
{
"category": "Godot Tools",
"command": "godotTools.listGodotClasses",
"title": "List Godot classes"
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.inspectNode",
"title": "Inspect Remote Node",
"icon": {
"light": "resources/godot_icons/light/GuiVisibilityVisible.svg",
"dark": "resources/godot_icons/dark/GuiVisibilityVisible.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.refreshSceneTree",
"title": "Refresh",
"icon": {
"light": "resources/godot_icons/light/Reload.svg",
"dark": "resources/godot_icons/dark/Reload.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.refreshInspector",
"title": "Refresh",
"icon": {
"light": "resources/godot_icons/light/Reload.svg",
"dark": "resources/godot_icons/dark/Reload.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.editValue",
"title": "Edit value",
"icon": {
"light": "resources/godot_icons/light/Edit.svg",
"dark": "resources/godot_icons/dark/Edit.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.debugCurrentFile",
"title": "Debug Current File",
"icon": {
"light": "resources/godot_icons/light/PlayScene.svg",
"dark": "resources/godot_icons/dark/PlayScene.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.debugPinnedFile",
"title": "Debug Pinned File",
"icon": {
"light": "resources/godot_icons/light/Play.svg",
"dark": "resources/godot_icons/dark/Play.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.pinFile",
"title": "Pin Scene File",
"icon": "resources/pin_off.svg"
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.unpinFile",
"title": "Unpin Scene File",
"icon": "resources/pin_on.svg"
},
{
"category": "Godot Tools",
"command": "godotTools.debugger.openPinnedFile",
"title": "Open the currently pinned scene"
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.refresh",
"title": "Refresh Scene Preview",
"icon": {
"light": "resources/godot_icons/light/Reload.svg",
"dark": "resources/godot_icons/dark/Reload.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.openCurrentScene",
"title": "Open the Scene Preview's current scene",
"icon": {
"light": "resources/godot_icons/light/PackedScene.svg",
"dark": "resources/godot_icons/dark/PackedScene.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.openMainScript",
"title": "Open the main script of the Scene Preview's current scene",
"icon": {
"light": "resources/godot_icons/light/Script.svg",
"dark": "resources/godot_icons/dark/Script.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.lock",
"title": "Lock Scene Preview",
"icon": {
"light": "resources/godot_icons/light/Unlock.svg",
"dark": "resources/godot_icons/dark/Unlock.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.unlock",
"title": "Unlock Scene Preview",
"icon": {
"light": "resources/godot_icons/light/Lock.svg",
"dark": "resources/godot_icons/dark/Lock.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.goToDefinition",
"title": "Go to Definition"
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.openDocumentation",
"title": "Open Documentation"
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.copyNodePath",
"title": "Copy Node Path"
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.copyResourcePath",
"title": "Copy Resource Path"
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.openScene",
"title": "Open Scene",
"icon": {
"light": "resources/InstanceOptions.svg",
"dark": "resources/InstanceOptions.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.scenePreview.openScript",
"title": "Open Script",
"icon": {
"light": "resources/godot_icons/light/Script.svg",
"dark": "resources/godot_icons/dark/Script.svg"
}
},
{
"category": "Godot Tools",
"command": "godotTools.switchSceneScript",
"title": "Switch Scene/Script"
},
{
"category": "Godot Tools",
"command": "godotTools.copyResourcePath",
"title": "Copy Resource Path"
}
],
"keybindings": [
{
"command": "godotTools.switchSceneScript",
"key": "alt+o",
"when": "editorLangId in godotTools.context.godotFiles && editorTextFocus"
}
],
"configuration": {
"type": "object",
"title": "Godot Tools",
"properties": {
"godotTools.documentation.pageScale": {
"type": "integer",
"default": 100,
"minimum": 50,
"maximum": 200,
"description": "Scale factor (%) to apply to the Godot documentation viewer."
},
"godotTools.documentation.displayMinimap": {
"type": "boolean",
"default": true,
"description": "Whether to display the minimap for the Godot documentation viewer."
},
"godotTools.editorPath.godot3": {
"type": "string",
"default": "godot3",
"description": "Path to the Godot 3 editor executable. Supports environment variables using '${env:VAR_NAME}'."
},
"godotTools.editorPath.godot4": {
"type": "string",
"default": "godot",
"description": "Path to the Godot 4 editor executable. Supports environment variables using '${env:VAR_NAME}'."
},
"godotTools.editor.verbose": {
"type": "boolean",
"default": false,
"description": "Whether to launch the Godot Editor with the --verbose flag"
},
"godotTools.editor.revealTerminal": {
"type": "boolean",
"default": true,
"description": "Whether to reveal the terminal when launching the Godot Editor"
},
"godotTools.formatter.maxEmptyLines": {
"type": "string",
"enum": [
"1",
"2"
],
"enumDescriptions": [
"1 empty line. A more compact style.",
"2 empty lines. Conforms to the official GDScript style guide."
],
"default": "2",
"description": "Number of empty lines allowed anywhere in the file"
},
"godotTools.formatter.denseFunctionParameters": {
"type": "boolean",
"default": false,
"description": "Whether extra space should be removed from function parameter lists"
},
"godotTools.formatter.spacesBeforeEndOfLineComment": {
"type": "string",
"enum": [
"1",
"2"
],
"enumDescriptions": [
"1 space before EOL comments # Like this.",
"2 spaces before EOL comments  # Like this."
],
"default": "1",
"description": "Number of spaces before an end-of-line comment"
},
"godotTools.lsp.serverHost": {
"type": "string",
"default": "127.0.0.1",
"description": "The server host of the GDScript language server"
},
"godotTools.lsp.serverPort": {
"type": "number",
"default": 6008,
"minimum": 0,
"maximum": 65535,
"description": "The server port of the GDScript language server"
},
"godotTools.lsp.headless": {
"type": "boolean",
"default": false,
"description": "Whether to launch the LSP as a headless child process"
},
"godotTools.lsp.autoReconnect.enabled": {
"type": "boolean",
"default": true,
"description": "Whether the plugin should attempt to reconnect to the GDScript language server"
},
"godotTools.lsp.autoReconnect.cooldown": {
"type": "number",
"default": 3000,
"description": "The number of milliseconds to wait before attempting to reconnect"
},
"godotTools.lsp.autoReconnect.attempts": {
"type": "number",
"default": 10,
"description": "How many times the client will attempt to reconnect"
},
"godotTools.scenePreview.previewRelatedScenes": {
"enum": [
"anyFolder",
"sameFolder",
"off"
],
"enumDescriptions": [
"Attempt to preview a related scene from anywhere in the workspace.",
"Attempt to preview a related scene from the same folder.",
"Do not attempt to preview a related scene."
],
"default": "sameFolder",
"description": "Controls where the Scene Preview will search for related scenes when viewing a script file."
},
"godotTools.inlayHints.gdscript": {
"type": "boolean",
"default": false,
"description": "Whether to enable inlay hints in GDScript files (experimental)"
},
"godotTools.inlayHints.gdresource": {
"type": "boolean",
"default": true,
"description": "Whether to enable inlay hints in GDResource (.tscn, .tres, etc) files"
}
}
},
"languages": [
{
"id": "gdscript",
"aliases": [
"GDScript",
"gdscript"
],
"extensions": [
".gd"
],
"configuration": "./configurations/gdscript.language-configuration.json"
},
{
"id": "gdscene",
"aliases": [
"GDScene",
"gdscene"
],
"extensions": [
".tscn"
],
"configuration": "./configurations/gdresource.language-configuration.json"
},
{
"id": "gdresource",
"aliases": [
"GDResource",
"gdresource"
],
"extensions": [
".godot",
".tres",
".import",
".gdns",
".gdnlib"
],
"configuration": "./configurations/gdresource.language-configuration.json"
},
{
"id": "gdshader",
"aliases": [
"gdshader"
],
"extensions": [
".gdshader",
".gdshaderinc"
],
"configuration": "./configurations/gdshader.language-configuration.json"
}
],
"grammars": [
{
"language": "gdscript",
"scopeName": "source.gdscript",
"path": "./syntaxes/GDScript.tmLanguage.json"
},
{
"language": "gdresource",
"scopeName": "source.gdresource",
"path": "./syntaxes/GDResource.tmLanguage.json"
},
{
"language": "gdscene",
"scopeName": "source.gdresource",
"path": "./syntaxes/GDResource.tmLanguage.json"
},
{
"language": "gdshader",
"scopeName": "source.gdshader",
"path": "./syntaxes/GDShader.tmLanguage.json"
}
],
"semanticTokenScopes": [
{
"scopes": {
"nodePath": [
"constant.character.escape"
]
}
}
],
"snippets": [
{
"language": "gdscript",
"path": "./configurations/snippets.json"
}
],
"debuggers": [
{
"type": "godot",
"label": "GDScript Godot Debug",
"runtime": "node",
"configurationAttributes": {
"launch": {
"required": [],
"properties": {
"project": {
"type": "string",
"description": "Absolute path to a directory with a project.godot file.",
"default": "${workspaceFolder}"
},
"address": {
"type": "string",
"description": "The IP address for the Godot remote debugger to use.",
"default": "127.0.0.1"
},
"port": {
"type": "number",
"description": "The port number for the Godot remote debugger to use.",
"default": 6007
},
"scene": {
"type": "string",
"enum": [
"main",
"current",
"pinned"
],
"enumDescriptions": [
"Launch the 'main_scene' specified in project.godot",
"Launch the scene (or related scene) in the current editor",
"Launch the pinned scene"
],
"description": "Scene file to run when debugging. Choices are 'main', 'current', 'pinned', or providing a custom path to a scene.",
"default": ""
},
"editor_path": {
"type": "string",
"description": "Absolute path to the Godot executable to be used for this debug profile.",
"default": false
},
"profiling": {
"type": "boolean",
"description": "Enable profiling in the script debugger.",
"default": false
},
"single_threaded_scene": {
"type": "boolean",
"description": "Scene tree runs in single-threaded mode. Sub-thread groups are disabled and run on the main thread. (Godot 4 only)",
"default": false
},
"debug_collisions": {
"type": "boolean",
"description": "Show collision shapes when running the scene.",
"default": false
},
"debug_paths": {
"type": "boolean",
"description": "Show navigation polygons when running the scene. (Godot 4 only)",
"default": false
},
"debug_navigation": {
"type": "boolean",
"description": "Show navigation polygons when running the scene.",
"default": false
},
"debug_avoidance": {
"type": "boolean",
"description": "Show navigation avoidance debug visuals when running the scene. (Godot 4 only)",
"default": false
},
"debug_stringnames": {
"type": "boolean",
"description": "Print all StringName allocations to stdout when the engine quits. (Godot 4 only)",
"default": false
},
"frame_delay": {
"type": "number",
"description": "Simulate high CPU load (delay each frame by <ms> milliseconds)."
},
"time_scale": {
"type": "number",
"description": "Force time scale (higher values are faster, 1.0 is normal speed)."
},
"disable_vsync": {
"type": "boolean",
"description": "Forces disabling of vertical synchronization, even if enabled in the project settings. Does not override driver-level V-Sync enforcement. (Godot 4 only)",
"default": false
},
"fixed_fps": {
"type": "number",
"description": "Force a fixed number of frames per second. This setting disables real-time synchronization."
},
"additional_options": {
"type": "string",
"description": "Additional command line arguments.",
"default": ""
}
}
},
"attach": {
"required": [],
"properties": {
"address": {
"type": "string",
"description": "The IP address for the Godot remote debugger to use.",
"default": "127.0.0.1"
},
"port": {
"type": "number",
"description": "The port number for the Godot remote debugger to use.",
"default": 6007
}
}
}
},
"initialConfigurations": [
{
"name": "GDScript: Launch Project",
"type": "godot",
"request": "launch",
"project": "${workspaceFolder}",
"debug_collisions": false,
"debug_paths": false,
"debug_navigation": false,
"additional_options": ""
}
],
"configurationSnippets": [
{
"label": "GDScript: Launch Project",
"description": "A config to launch the current project.",
"body": {
"name": "GDScript: Launch Project",
"type": "godot",
"request": "launch",
"project": "${workspaceFolder}",
"debug_collisions": false,
"debug_paths": false,
"debug_navigation": false,
"additional_options": ""
}
},
{
"label": "GDScript: Launch Current File",
"description": "A config to launch the currently open scene.",
"body": {
"name": "GDScript: Launch Current File",
"type": "godot",
"request": "launch",
"scene": "current",
"project": "${workspaceFolder}",
"additional_options": ""
}
},
{
"label": "GDScript: Launch Pinned File",
"description": "A config to launch the currently pinned scene.",
"body": {
"name": "GDScript: Launch Pinned File",
"type": "godot",
"request": "launch",
"scene": "pinned",
"project": "${workspaceFolder}",
"additional_options": ""
}
}
]
}
],
"breakpoints": [
{
"language": "gdscript"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "godotTools",
"title": "Godot Tools",
"icon": "resources/godot_icon.svg"
}
]
},
"views": {
"debug": [
{
"id": "godotTools.activeSceneTree",
"name": "Active Scene Tree",
"icon": "resources/godot_icon.svg"
},
{
"id": "godotTools.nodeInspector",
"name": "Inspector",
"icon": "resources/godot_icon.svg"
}
],
"godotTools": [
{
"id": "godotTools.scenePreview",
"name": "Scene Preview",
"icon": "resources/godot_icon.svg"
}
]
},
"viewsWelcome": [
{
"view": "godotTools.activeSceneTree",
"contents": "Scene Tree data has not been requested"
},
{
"view": "godotTools.nodeInspector",
"contents": "Node has not been inspected"
},
{
"view": "godotTools.scenePreview",
"contents": "Open a Scene to see a preview of its structure"
}
],
"menus": {
"commandPalette": [
{
"command": "godotTools.listGodotClasses",
"when": "godotTools.context.connectedToLSP"
},
{
"command": "godotTools.scenePreview.goToDefinition",
"when": "false"
},
{
"command": "godotTools.scenePreview.openDocumentation",
"when": "false"
},
{
"command": "godotTools.scenePreview.copyNodePath",
"when": "false"
},
{
"command": "godotTools.scenePreview.copyResourcePath",
"when": "false"
},
{
"command": "godotTools.scenePreview.openScript",
"when": "false"
},
{
"command": "godotTools.scenePreview.openScene",
"when": "false"
},
{
"command": "godotTools.debugger.editValue",
"when": "false"
},
{
"command": "godotTools.debugger.inspectNode",
"when": "false"
},
{
"command": "godotTools.debugger.refreshSceneTree",
"when": "false"
},
{
"command": "godotTools.debugger.refreshInspector",
"when": "false"
}
],
"view/title": [
{
"command": "godotTools.debugger.refreshSceneTree",
"when": "view == godotTools.activeSceneTree",
"group": "navigation"
},
{
"command": "godotTools.debugger.refreshInspector",
"when": "view == godotTools.nodeInspector",
"group": "navigation"
},
{
"command": "godotTools.scenePreview.lock",
"when": "view == godotTools.scenePreview && !godotTools.context.scenePreview.locked",
"group": "navigation@1"
},
{
"command": "godotTools.scenePreview.unlock",
"when": "view == godotTools.scenePreview && godotTools.context.scenePreview.locked",
"group": "navigation@1"
},
{
"command": "godotTools.scenePreview.refresh",
"when": "view == godotTools.scenePreview",
"group": "navigation@2"
},
{
"command": "godotTools.scenePreview.openMainScript",
"when": "view == godotTools.scenePreview",
"group": "navigation@3"
},
{
"command": "godotTools.scenePreview.openCurrentScene",
"when": "view == godotTools.scenePreview",
"group": "navigation@4"
}
],
"view/item/context": [
{
"command": "godotTools.debugger.inspectNode",
"when": "view == godotTools.activeSceneTree",
"group": "inline"
},
{
"command": "godotTools.debugger.inspectNode",
"when": "view == godotTools.nodeInspector && viewItem == remote_object",
"group": "inline"
},
{
"command": "godotTools.debugger.editValue",
"when": "view == godotTools.nodeInspector && viewItem == editable_value",
"group": "inline"
},
{
"command": "godotTools.scenePreview.goToDefinition",
"when": "view == godotTools.scenePreview",
"group": "1@1"
},
{
"command": "godotTools.scenePreview.openDocumentation",
"when": "view == godotTools.scenePreview",
"group": "1@1"
},
{
"command": "godotTools.scenePreview.copyNodePath",
"when": "view == godotTools.scenePreview"
},
{
"command": "godotTools.scenePreview.copyResourcePath",
"when": "view == godotTools.scenePreview && viewItem =~ /hasResourcePath/"
},
{
"command": "godotTools.scenePreview.openScene",
"when": "view == godotTools.scenePreview && viewItem =~ /openable/",
"group": "1@2"
},
{
"command": "godotTools.scenePreview.openScript",
"when": "view == godotTools.scenePreview && viewItem =~ /hasScript/",
"group": "1@2"
},
{
"command": "godotTools.scenePreview.openScene",
"when": "view == godotTools.scenePreview && viewItem =~ /openable/",
"group": "inline"
},
{
"command": "godotTools.scenePreview.openScript",
"when": "view == godotTools.scenePreview && viewItem =~ /hasScript/",
"group": "inline"
}
],
"explorer/context": [
{
"command": "godotTools.debugger.pinFile",
"group": "2_workspace",
"when": "resourceLangId in godotTools.context.sceneLikeFiles && !(resourcePath in godotTools.context.pinnedScene)"
},
{
"command": "godotTools.debugger.unpinFile",
"group": "2_workspace",
"when": "resourceLangId in godotTools.context.sceneLikeFiles && (resourcePath in godotTools.context.pinnedScene)"
},
{
"command": "godotTools.copyResourcePath",
"group": "6_copypath"
}
],
"editor/title/run": [
{
"command": "godotTools.debugger.debugCurrentFile",
"group": "navigation@10",
"when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace"
},
{
"command": "godotTools.debugger.debugPinnedFile",
"group": "navigation@10",
"when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace"
}
],
"editor/title": [
{
"command": "godotTools.debugger.pinFile",
"group": "navigation@11",
"when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace && !(resourcePath in godotTools.context.pinnedScene)"
},
{
"command": "godotTools.debugger.unpinFile",
"group": "navigation@11",
"when": "editorLangId in godotTools.context.sceneLikeFiles && !isInDiffEditor && !virtualWorkspace && (resourcePath in godotTools.context.pinnedScene)"
}
],
"editor/title/context": [
{
"command": "godotTools.copyResourcePath",
"group": "1_godot"
},
{
"command": "godotTools.debugger.pinFile",
"group": "1_godot",
"when": "resourceLangId in godotTools.context.sceneLikeFiles && !(resourcePath in godotTools.context.pinnedScene)"
},
{
"command": "godotTools.debugger.unpinFile",
"group": "1_godot",
"when": "resourceLangId in godotTools.context.sceneLikeFiles && (resourcePath in godotTools.context.pinnedScene)"
}
],
"editor/context": [
{
"command": "godotTools.switchSceneScript",
"when": "editorLangId in godotTools.context.godotFiles",
"group": "custom1@1"
}
]
}
},
"devDependencies": {
"@biomejs/biome": "^1.9.4",
"@types/chai": "^4.3.11",
"@types/chai-as-promised": "^8.0.1",
"@types/chai-subset": "^1.3.5",
"@types/marked": "^4.0.8",
"@types/mocha": "^10.0.6",
"@types/node": "^18.19.75",
"@types/prismjs": "^1.16.8",
"@types/sinon": "^17.0.4",
"@types/vscode": "^1.96.0",
"@types/ws": "^8.5.4",
"@typescript-eslint/eslint-plugin": "^5.57.1",
"@typescript-eslint/eslint-plugin-tslint": "^5.57.1",
"@typescript-eslint/parser": "^5.57.1",
"@vscode/test-cli": "^0.0.10",
"@vscode/test-electron": "^2.3.8",
"@vscode/vsce": "^2.29.0",
"chai": "^4.5.0",
"chai-as-promised": "^8.0.1",
"chai-subset": "^1.6.0",
"esbuild": "^0.25.0",
"eslint": "^8.37.0",
"mocha": "^10.8.2",
"sinon": "^19.0.2",
"ts-node": "^10.9.1",
"tsconfig-paths": "^4.2.0",
"tslint": "^5.20.1",
"typescript": "^5.2.2"
},
"dependencies": {
"@vscode/debugadapter": "^1.68.0",
"@vscode/debugprotocol": "^1.68.0",
"await-notify": "^1.0.1",
"bbcode-to-ansi": "^1.0.0",
"global": "^4.4.0",
"marked": "^4.0.11",
"net": "^1.0.2",
"prismjs": "^1.30.0",
"terminate": "^2.5.0",
"vscode-languageclient": "^9.0.1",
"vscode-oniguruma": "^2.0.1",
"vscode-textmate": "^9.0.0",
"ws": "^8.17.1",
"ya-bbcode": "^4.0.0"
}
}