| { |
| "name": "vscode-fuchsia", |
| "displayName": "Fuchsia", |
| "description": "Fuchsia developer extension.", |
| "license": "SEE LICENSE IN LICENSE", |
| "publisher": "fuchsia-authors", |
| "typings": "dist/types", |
| "repository": { |
| "type": "git", |
| "url": "https://fuchsia.googlesource.com/vscode-plugins" |
| }, |
| "bugs": { |
| "url": "https://bugs.fuchsia.dev/p/fuchsia/issues/entry?template=Fuchsia+Editor+Tooling" |
| }, |
| "version": "1.2024050.0", |
| "engines": { |
| "vscode": "^1.66.0" |
| }, |
| "categories": [ |
| "Other" |
| ], |
| "activationEvents": [ |
| "onLanguage:fidl", |
| "onLanguage:cml", |
| "workspaceContains:.jiri_root/bin/ffx", |
| "workspaceContains:tools/ffx", |
| "onView:vscode-fuchsia.loggingView", |
| "onDebugResolve:zxdb", |
| "onCommand:fuchsia.target.select", |
| "onCommand:fuchsia.target.show", |
| "onCommand:fuchsia.sendFeedback", |
| "onCommand:fuchsia.viewLogs" |
| ], |
| "main": "./dist/extension", |
| "contributes": { |
| "breakpoints": [ |
| { |
| "language": "c" |
| }, |
| { |
| "language": "cpp" |
| }, |
| { |
| "language": "rust" |
| } |
| ], |
| "debuggers": [ |
| { |
| "type": "zxdb", |
| "label": "zxdb", |
| "languages": [ |
| "cpp", |
| "c", |
| "rust" |
| ], |
| "configurationAttributes": { |
| "launch": { |
| "required": [ |
| "launchCommand", |
| "process" |
| ], |
| "properties": { |
| "launchCommand": { |
| "type": "string", |
| "description": "Command to launch the debuggee, e.g., fx test hello-world-test", |
| "default": "${command:EnterLaunchCommand}" |
| }, |
| "process": { |
| "type": "string", |
| "description": "Name of the process that will be launched by the command. For components, its usually the component name\ne.g, hello-world-test.\nPartial names are also valid e.g., hello-world.", |
| "default": "${command:PickProcess}" |
| } |
| } |
| }, |
| "attach": { |
| "required": [ |
| "process" |
| ], |
| "properties": { |
| "process": { |
| "type": "string", |
| "description": "Name of the process to debug. For components, its usually the component name\ne.g., hello-world-test.\nPartial names are also valid e.g., hello-world.", |
| "default": "${command:PickProcess}" |
| }, |
| "recursive": { |
| "type": "boolean", |
| "description": "Whether to also attach to child components.", |
| "default": false |
| } |
| } |
| } |
| }, |
| "initialConfigurations": [ |
| { |
| "name": "Launch(zxdb) <TODO: give a custom name>", |
| "type": "zxdb", |
| "request": "launch", |
| "launchCommand": "<TODO: Add a shell command to launch debuggee e.g., fx test hello-world-test>", |
| "process": "<TODO: Debugging process name. For components, it's usually the component name. e.g., hello-world-test>" |
| } |
| ], |
| "configurationSnippets": [ |
| { |
| "label": "zxdb: Launch", |
| "description": "Launch an executable on target.", |
| "body": { |
| "name": "Launch(zxdb) <TODO: give a custom name>", |
| "type": "zxdb", |
| "request": "launch", |
| "launchCommand": "<TODO: update this e.g., fx test hello-world-test>", |
| "process": "<TODO: update this e.g., hello-world-test>" |
| } |
| }, |
| { |
| "label": "zxdb: Launch (input based)", |
| "description": "Launch an executable on target. Input box will appear for launch command and process name while debugging.", |
| "body": { |
| "name": "Launch(zxdb) input based", |
| "type": "zxdb", |
| "request": "launch", |
| "launchCommand": "^\"\\${command:EnterLaunchCommand}\"", |
| "process": "^\"\\${command:PickProcess}\"" |
| } |
| }, |
| { |
| "label": "zxdb: Launch example", |
| "description": "An example zxdb launch configuration.", |
| "body": { |
| "name": "Launch(zxdb) example", |
| "type": "zxdb", |
| "request": "launch", |
| "launchCommand": "fx test hello-world-test", |
| "process": "hello-world-test" |
| } |
| }, |
| { |
| "label": "zxdb: Attach", |
| "description": "Attach to a process on target.", |
| "body": { |
| "name": "Attach(zxdb) <TODO: give a custom name>", |
| "type": "zxdb", |
| "request": "attach", |
| "process": "<TODO: update this e.g., hello-world-test>" |
| } |
| }, |
| { |
| "label": "zxdb: Attach (input based)", |
| "description": "Attach to a process on target. Input box will appear for process name while debugging", |
| "body": { |
| "name": "Attach(zxdb) input based", |
| "type": "zxdb", |
| "request": "attach", |
| "process": "^\"\\${command:PickProcess}\"" |
| } |
| }, |
| { |
| "label": "zxdb: Attach example", |
| "description": "An example zxdb attach configuration.", |
| "body": { |
| "name": "Attach(zxdb) example", |
| "type": "zxdb", |
| "request": "attach", |
| "process": "archivist.cm" |
| } |
| } |
| ], |
| "variables": { |
| "PickProcess": "fuchsia.internal.zxdb.pickProcess", |
| "EnterLaunchCommand": "fuchsia.internal.zxdb.enterLaunchCommand" |
| } |
| } |
| ], |
| "commands": [ |
| { |
| "command": "fuchsia.emu.start", |
| "title": "Start Emulator", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.emu.stop", |
| "title": "Stop Emulator", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.zxdb.attach", |
| "title": "Attach Debugger", |
| "category": "Fuchsia", |
| "icon": "$(debug)" |
| }, |
| { |
| "command": "fuchsia.target.reboot", |
| "title": "Reboot Target", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.target.powerOff", |
| "title": "Power off Target", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.target.show", |
| "title": "Target Show", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.target.snapshot", |
| "title": "Capture snapshot", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.sendFeedback", |
| "title": "Send Feedback", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.target.select", |
| "title": "Select default device", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.viewLogs", |
| "title": "View Logs", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.component.show", |
| "title": "Show component details", |
| "category": "Fuchsia" |
| }, |
| { |
| "command": "fuchsia.refreshComponentExplorer", |
| "title": "Refresh component explorer", |
| "icon": "$(refresh)", |
| "category": "Fuchsia" |
| } |
| ], |
| "configuration": [ |
| { |
| "title": "Fuchsia SDK", |
| "id": "fuchsia", |
| "properties": { |
| "fuchsia.ffxPath": { |
| "type": "string", |
| "description": "The path to the FFX executable to use with this project." |
| }, |
| "fuchsia.debug": { |
| "scope": "window", |
| "type": "boolean", |
| "default": false, |
| "description": "Enable logging of debug messages." |
| }, |
| "fuchsia.connectionTimeout": { |
| "scope": "window", |
| "type": "number", |
| "default": 1000, |
| "description": "FFX connection timeout in milliseconds (default = 1000)." |
| }, |
| "fuchsia.zxdb.timeout": { |
| "scope": "window", |
| "type": "number", |
| "default": 30000, |
| "description": "ZXDB timeout in milliseconds." |
| }, |
| "fuchsia.featurePreview": { |
| "scope": "window", |
| "type": "string", |
| "default": "auto", |
| "enum": [ |
| "nightly", |
| "stable", |
| "auto" |
| ], |
| "enumDescriptions": [ |
| "use features only enabled in nightly builds, regardless of the version of the extension", |
| "use only features available in stable builds, regardless of the version of the extension", |
| "autodetect which features to enabled based on the version of the extension" |
| ], |
| "markdownDescription": "Bulk-enable or disable feature previews. Individual options in Fuchsia: Feature Previews will override this setting." |
| } |
| } |
| } |
| ], |
| "grammars": [ |
| { |
| "language": "fidl", |
| "scopeName": "source.fidl", |
| "path": "./dist/resources/fidl.tmLanguage.json" |
| }, |
| { |
| "language": "cml", |
| "scopeName": "source.cml", |
| "path": "./dist/resources/cml.tmLanguage.json" |
| }, |
| { |
| "language": "fuchsia-log", |
| "scopeName": "source.fuchsia-log", |
| "path": "./dist/resources/fuchsia-log.tmLanguage.json" |
| } |
| ], |
| "languages": [ |
| { |
| "id": "fidl", |
| "aliases": [ |
| "FIDL", |
| "Fidl", |
| "fidl" |
| ], |
| "extensions": [ |
| ".fidl" |
| ], |
| "configuration": "./resources/language_configs/fidl.json" |
| }, |
| { |
| "id": "cml", |
| "aliases": [ |
| "CML", |
| "Cml", |
| "cml" |
| ], |
| "extensions": [ |
| ".cml" |
| ] |
| }, |
| { |
| "id": "fuchsia-log", |
| "aliases": [ |
| "fuchsia-log" |
| ], |
| "extensions": [ |
| ".fuchsia-log" |
| ] |
| } |
| ], |
| "views": { |
| "debug": [ |
| { |
| "id": "vscode-fuchsia.componentExplorer", |
| "name": "Fuchsia Components" |
| } |
| ] |
| }, |
| "menus": { |
| "view/title": [ |
| { |
| "command": "fuchsia.refreshComponentExplorer", |
| "when": "view == vscode-fuchsia.componentExplorer", |
| "group": "navigation" |
| } |
| ], |
| "view/item/context": [ |
| { |
| "command": "fuchsia.zxdb.attach", |
| "when": "view == vscode-fuchsia.componentExplorer && viewItem == running", |
| "group": "inline" |
| } |
| ] |
| } |
| }, |
| "icon": "resources/fuchsia_icon_256x256.png", |
| "scripts": { |
| "build": "node build.mjs", |
| "prepare": "npx tsc", |
| "watch": "node build.mjs watch", |
| "clean": "rm -rf dist && rm -rf test-dist", |
| "preupdate-syntax-snapshot": "npm run build", |
| "update-syntax-snapshot": "npx vscode-tmgrammar-snap --updateSnapshot 'src/test/suite/snap/**/*.test.*[!p]'", |
| "pretest": "node build.mjs && git clean -Xdf ./testdata/", |
| "test": "npm run typecheck && npm run lint && node ./test-dist/src/test/run_test.js", |
| "lint": "npx eslint \"src/**/*.ts\"", |
| "typecheck": "npx tsc", |
| "typecheck:watch": "npx tsc --watch", |
| "lint:fix": "npx eslint \"src/**/*.ts\" --fix", |
| "pretest:ci": "node build.mjs", |
| "test:ci": "node ./test-dist/src/test/run_test.js", |
| "vscode:prepublish": "NODE_ENV=production node build.mjs", |
| "bc": "node build.mjs && npx tsc" |
| }, |
| "devDependencies": { |
| "@types/chai-dom": "^0.0.12", |
| "@types/glob": "^7.2.0", |
| "@types/jsdom": "^16.2.14", |
| "@types/mocha": "^9.0.0", |
| "@types/node": "14.x", |
| "@types/sinon": "^10.0.11", |
| "@types/vscode": "^1.66.0", |
| "@typescript-eslint/eslint-plugin": "^5.9.1", |
| "@typescript-eslint/parser": "^5.9.1", |
| "@vscode/codicons": "^0.0.30", |
| "@vscode/test-electron": "^2.0.3", |
| "@vscode/vsce": "^2.25.0", |
| "@web/test-runner": "^0.14.0", |
| "chai-dom": "^1.11.0", |
| "esbuild": "^0.15.0", |
| "eslint": "^8.6.0", |
| "eslint-plugin-jsdoc": "^39.6.4", |
| "glob": "^7.2.0", |
| "mocha": "^9.1.3", |
| "peggy": "^1.2.0", |
| "sinon": "^13.0.1", |
| "source-map-support": "^0.5.21", |
| "typescript": "^4.5.4", |
| "vscode-tmgrammar-test": "^0.1.1" |
| }, |
| "dependencies": { |
| "@vscode/debugprotocol": "^1.55.1", |
| "jsonparse": "^1.3.1", |
| "lit": "^2.2.5" |
| }, |
| "__metadata": { |
| "id": "72e71b86-9c3a-42ac-bad6-7beecee326c5", |
| "publisherDisplayName": "The Fuchsia Authors", |
| "publisherId": "6b4341fb-1e2c-4a5e-9c1f-1d34016009f5", |
| "isPreReleaseVersion": false |
| } |
| } |