Files
archify-vscode-ext/package.json
T
2026-09-30 13:24:24 +03:00

334 lines
10 KiB
JSON

{
"name": "archify-vscode-ext",
"displayName": "Archify Diagram Viewer",
"description": "Visualize Archify diagrams: preview .archify files (and *.architecture.json-style sources) live, and open rendered Archify HTML inside VS Code.",
"version": "0.2.0",
"publisher": "vscode-extensions",
"license": "MIT",
"icon": "media/icon.png",
"galleryBanner": {
"color": "#0f172a",
"theme": "dark"
},
"repository": {
"type": "git",
"url": "https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext.git"
},
"engines": {
"vscode": "^1.100.0"
},
"categories": [
"Visualization",
"Programming Languages"
],
"keywords": [
"archify",
"diagram",
"architecture",
"sequence",
"workflow"
],
"main": "./dist/extension.js",
"activationEvents": [
"onLanguage:json",
"onLanguage:jsonc",
"onLanguage:html",
"workspaceContains:**/*.{archify,architecture.json,workflow.json,sequence.json,dataflow.json,lifecycle.json}",
"onWebviewPanel:archify.preview"
],
"contributes": {
"commands": [
{
"command": "archify.showPreview",
"title": "Open Preview",
"category": "Archify",
"icon": "$(open-preview)"
},
{
"command": "archify.showPreviewToSide",
"title": "Open Preview to the Side",
"category": "Archify",
"icon": "$(open-preview)"
},
{
"command": "archify.openHtmlViewer",
"title": "Open in Archify Viewer",
"category": "Archify",
"icon": "$(open-preview)"
},
{
"command": "archify.renderToHtml",
"title": "Render to HTML File\u2026",
"category": "Archify",
"icon": "$(file-code)"
},
{
"command": "archify.openInBrowser",
"title": "Open in Browser",
"category": "Archify",
"icon": "$(globe)"
},
{
"command": "archify.refreshPreview",
"title": "Refresh Preview",
"category": "Archify",
"icon": "$(refresh)"
},
{
"command": "archify.showSource",
"title": "Show Source",
"category": "Archify",
"icon": "$(go-to-file)"
}
],
"menus": {
"commandPalette": [
{
"command": "archify.showPreview",
"when": "archify.isDiagramSource || archify.isArchifyHtml"
},
{
"command": "archify.showPreviewToSide",
"when": "archify.isDiagramSource"
},
{
"command": "archify.openHtmlViewer",
"when": "resourceExtname == .html"
},
{
"command": "archify.renderToHtml",
"when": "archify.isDiagramSource || archifyPreviewFocus"
},
{
"command": "archify.openInBrowser",
"when": "archify.isDiagramSource || archify.isArchifyHtml || archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'"
},
{
"command": "archify.refreshPreview",
"when": "archifyPreviewFocus"
},
{
"command": "archify.showSource",
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'"
}
],
"editor/title": [
{
"command": "archify.showPreviewToSide",
"when": "archify.isDiagramSource && !notebookEditorFocused",
"group": "navigation"
},
{
"command": "archify.openHtmlViewer",
"when": "archify.isArchifyHtml && activeCustomEditorId != 'archify.htmlViewer'",
"group": "navigation"
},
{
"command": "archify.refreshPreview",
"when": "archifyPreviewFocus",
"group": "navigation"
},
{
"command": "archify.showSource",
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'",
"group": "navigation"
},
{
"command": "archify.openInBrowser",
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'",
"group": "1_archify"
},
{
"command": "archify.renderToHtml",
"when": "archify.isDiagramSource || archifyPreviewFocus",
"group": "1_archify"
}
],
"explorer/context": [
{
"command": "archify.showPreview",
"when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
"group": "navigation@20"
},
{
"command": "archify.renderToHtml",
"when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
"group": "navigation@21"
},
{
"command": "archify.openHtmlViewer",
"when": "resourceExtname == .html",
"group": "navigation@20"
}
],
"editor/title/context": [
{
"command": "archify.showPreview",
"when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
"group": "1_open"
}
]
},
"keybindings": [
{
"command": "archify.showPreviewToSide",
"key": "ctrl+k v",
"mac": "cmd+k v",
"when": "editorTextFocus && archify.isDiagramSource"
},
{
"command": "archify.showPreview",
"key": "ctrl+shift+v",
"mac": "cmd+shift+v",
"when": "editorTextFocus && archify.isDiagramSource"
}
],
"customEditors": [
{
"viewType": "archify.htmlViewer",
"displayName": "Archify Diagram Viewer",
"selector": [
{
"filenamePattern": "*.html"
}
],
"priority": "option"
}
],
"jsonValidation": [
{
"fileMatch": "*.archify",
"url": "./schemas/archify.schema.json"
},
{
"fileMatch": "*.architecture.json",
"url": "./schemas/architecture.schema.json"
},
{
"fileMatch": "*.workflow.json",
"url": "./schemas/workflow.schema.json"
},
{
"fileMatch": "*.sequence.json",
"url": "./schemas/sequence.schema.json"
},
{
"fileMatch": "*.dataflow.json",
"url": "./schemas/dataflow.schema.json"
},
{
"fileMatch": "*.lifecycle.json",
"url": "./schemas/lifecycle.schema.json"
}
],
"configuration": {
"title": "Archify",
"properties": {
"archify.theme": {
"type": "string",
"enum": [
"vscode",
"dark",
"light",
"diagram"
],
"enumDescriptions": [
"Follow the VS Code color theme.",
"Always use the dark diagram theme.",
"Always use the light diagram theme.",
"Keep whatever the diagram or its toolbar chooses."
],
"default": "vscode",
"description": "Theme used when showing Archify diagrams."
},
"archify.preview.liveUpdate": {
"type": "boolean",
"default": true,
"description": "Re-render the preview while you type. When off, the preview updates on save."
},
"archify.preview.debounceMs": {
"type": "number",
"default": 400,
"minimum": 50,
"description": "Delay in milliseconds before re-rendering after an edit."
},
"archify.validation.enabled": {
"type": "boolean",
"default": true,
"description": "Report Archify validation results (schema, layout and source evidence) in the Problems panel."
},
"archify.quality": {
"type": "string",
"enum": [
"",
"standard",
"showcase"
],
"enumDescriptions": [
"Use the quality profile declared in the diagram.",
"Force the standard quality gate.",
"Force the showcase quality gate."
],
"default": "",
"description": "Quality profile passed to the Archify renderer."
},
"archify.sourceEvidence": {
"type": "string",
"enum": [
"fallback",
"strict"
],
"enumDescriptions": [
"If source evidence cannot be verified, still show the diagram without source links and explain why.",
"Treat unverifiable source evidence as a render error, exactly like the Archify CLI."
],
"default": "fallback",
"description": "How to handle diagrams whose repository source evidence cannot be verified locally."
},
"archify.repoRoot": {
"type": "string",
"default": "",
"description": "Git checkout used to verify source evidence. Empty means the Git top-level directory of the diagram file."
},
"archify.nodePath": {
"type": "string",
"default": "",
"description": "Node.js executable (18 or newer) used to run the renderer. Empty means the runtime bundled with VS Code."
}
}
},
"languages": [
{
"id": "json",
"extensions": [
".archify"
]
}
]
},
"scripts": {
"sync:archify": "node scripts/sync-archify.mjs",
"build": "node esbuild.mjs",
"watch": "node esbuild.mjs --watch",
"typecheck": "tsc --noEmit",
"test": "node esbuild.mjs --tests && node --test \"out/test/*.test.js\"",
"vscode:prepublish": "node esbuild.mjs --production",
"package": "vsce package --no-dependencies --baseContentUrl https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext/src/branch/main --baseImagesUrl https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext/raw/branch/main",
"test:integration": "node esbuild.mjs && node esbuild.mjs --tests && node test/integration/run.mjs"
},
"devDependencies": {
"@types/node": "^22.0.0",
"@types/vscode": "~1.100.0",
"@vscode/test-electron": "^3.1.0",
"@vscode/vsce": "^3.0.0",
"ajv": "^8.20.0",
"esbuild": "^0.25.0",
"jsonc-parser": "^3.3.1",
"typescript": "^5.8.0"
},
"bugs": {
"url": "https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext/issues"
},
"homepage": "https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext#readme"
}