429 lines
13 KiB
JSON
429 lines
13 KiB
JSON
{
|
|
"name": "archify-vscode-ext",
|
|
"displayName": "Archify Diagram Viewer",
|
|
"description": "Archify diagrams in VS Code. Write diagrams as .archify files in YAML: they open as the interactive diagram, with live updates, validation, templates and completion. Also previews Archify's own JSON files (*.architecture.json, \u2026) and opens rendered Archify HTML.",
|
|
"version": "0.7.2",
|
|
"publisher": "root-at-skic",
|
|
"license": "MIT",
|
|
"sponsor": {
|
|
"url": "https://buymeacoffee.com/root.at.skic"
|
|
},
|
|
"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",
|
|
"architecture",
|
|
"c4",
|
|
"diagram",
|
|
"model",
|
|
"registry",
|
|
"sequence",
|
|
"workflow",
|
|
"yaml"
|
|
],
|
|
"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",
|
|
"workspaceContains:**/*.archify-registry"
|
|
],
|
|
"contributes": {
|
|
"commands": [
|
|
{
|
|
"command": "archify.newDiagram",
|
|
"title": "Archify | New Diagram\u2026",
|
|
"icon": "$(new-file)"
|
|
},
|
|
{
|
|
"command": "archify.newModel",
|
|
"title": "Archify | New Model\u2026",
|
|
"icon": "$(new-folder)"
|
|
},
|
|
{
|
|
"command": "archify.showPreview",
|
|
"title": "Archify | Open Preview",
|
|
"icon": "$(open-preview)"
|
|
},
|
|
{
|
|
"command": "archify.showPreviewToSide",
|
|
"title": "Archify | Open Preview to the Side",
|
|
"icon": "$(open-preview)"
|
|
},
|
|
{
|
|
"command": "archify.openHtmlViewer",
|
|
"title": "Archify | Open in HTML Viewer",
|
|
"icon": "$(open-preview)"
|
|
},
|
|
{
|
|
"command": "archify.renderToHtml",
|
|
"title": "Archify | Render to HTML File\u2026",
|
|
"icon": "$(file-code)"
|
|
},
|
|
{
|
|
"command": "archify.openInBrowser",
|
|
"title": "Archify | Open in Browser",
|
|
"icon": "$(globe)"
|
|
},
|
|
{
|
|
"command": "archify.refreshPreview",
|
|
"title": "Archify | Refresh Preview",
|
|
"icon": "$(refresh)"
|
|
},
|
|
{
|
|
"command": "archify.showSource",
|
|
"title": "Archify | Show Source",
|
|
"icon": "$(go-to-file)"
|
|
},
|
|
{
|
|
"command": "archify.openModel",
|
|
"title": "Archify | Open Model",
|
|
"icon": "$(symbol-structure)"
|
|
}
|
|
],
|
|
"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 || activeCustomEditorId == 'archify.diagram'"
|
|
},
|
|
{
|
|
"command": "archify.openInBrowser",
|
|
"when": "archify.isDiagramSource || archify.isArchifyHtml || archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer' || activeCustomEditorId == 'archify.diagram'"
|
|
},
|
|
{
|
|
"command": "archify.refreshPreview",
|
|
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.diagram'"
|
|
},
|
|
{
|
|
"command": "archify.showSource",
|
|
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer' || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry'"
|
|
},
|
|
{
|
|
"command": "archify.openModel",
|
|
"when": "archify.isDiagramSource || archifyPreviewFocus || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry'"
|
|
}
|
|
],
|
|
"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' || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry'",
|
|
"group": "navigation"
|
|
},
|
|
{
|
|
"command": "archify.openInBrowser",
|
|
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'",
|
|
"group": "1_archify"
|
|
},
|
|
{
|
|
"command": "archify.renderToHtml",
|
|
"when": "archify.isDiagramSource || archifyPreviewFocus",
|
|
"group": "1_archify"
|
|
},
|
|
{
|
|
"command": "archify.openModel",
|
|
"when": "archify.inModel && (archify.isDiagramSource || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry') && !notebookEditorFocused",
|
|
"group": "navigation@60"
|
|
}
|
|
],
|
|
"explorer/context": [
|
|
{
|
|
"command": "archify.newDiagram",
|
|
"when": "explorerResourceIsFolder",
|
|
"group": "zzz_archify@1"
|
|
},
|
|
{
|
|
"command": "archify.newModel",
|
|
"when": "explorerResourceIsFolder",
|
|
"group": "zzz_archify@2"
|
|
},
|
|
{
|
|
"command": "archify.showPreview",
|
|
"when": "resourceFilename =~ /(\\.archify|\\.archify-registry|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
|
|
"group": "zzz_archify@3"
|
|
},
|
|
{
|
|
"command": "archify.renderToHtml",
|
|
"when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
|
|
"group": "zzz_archify@4"
|
|
},
|
|
{
|
|
"command": "archify.openHtmlViewer",
|
|
"when": "resourceExtname == .html",
|
|
"group": "zzz_archify@3"
|
|
},
|
|
{
|
|
"command": "archify.openModel",
|
|
"when": "resourceFilename =~ /\\.archify(-registry)?$/",
|
|
"group": "zzz_archify@5"
|
|
}
|
|
],
|
|
"editor/title/context": [
|
|
{
|
|
"command": "archify.showPreview",
|
|
"when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
|
|
"group": "zzz_archify@1"
|
|
}
|
|
],
|
|
"file/newFile": [
|
|
{
|
|
"command": "archify.newDiagram",
|
|
"group": "file"
|
|
},
|
|
{
|
|
"command": "archify.newModel",
|
|
"group": "file"
|
|
}
|
|
]
|
|
},
|
|
"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.diagram",
|
|
"displayName": "Archify Diagram",
|
|
"selector": [
|
|
{
|
|
"filenamePattern": "*.archify"
|
|
}
|
|
],
|
|
"priority": "default"
|
|
},
|
|
{
|
|
"viewType": "archify.registry",
|
|
"displayName": "Archify Registry",
|
|
"selector": [
|
|
{
|
|
"filenamePattern": "*.archify-registry"
|
|
}
|
|
],
|
|
"priority": "default"
|
|
},
|
|
{
|
|
"viewType": "archify.htmlViewer",
|
|
"displayName": "Archify HTML Viewer",
|
|
"selector": [
|
|
{
|
|
"filenamePattern": "*.html"
|
|
}
|
|
],
|
|
"priority": "option"
|
|
}
|
|
],
|
|
"jsonValidation": [
|
|
{
|
|
"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.defaultView": {
|
|
"type": "string",
|
|
"enum": [
|
|
"2d",
|
|
"3d"
|
|
],
|
|
"enumDescriptions": [
|
|
"Open diagrams as Archify draws them.",
|
|
"Open diagrams in the 3D view. The 3D button in the diagram toolbar switches back."
|
|
],
|
|
"default": "2d",
|
|
"description": "How diagrams open. Each open diagram remembers its own choice."
|
|
},
|
|
"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": "yaml",
|
|
"extensions": [
|
|
".archify",
|
|
".archify-registry"
|
|
]
|
|
}
|
|
],
|
|
"yamlValidation": [
|
|
{
|
|
"fileMatch": "*.archify",
|
|
"url": "./schemas/archify.schema.json"
|
|
},
|
|
{
|
|
"fileMatch": "*.archify-registry",
|
|
"url": "./schemas/archify-registry.schema.json"
|
|
}
|
|
]
|
|
},
|
|
"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/three": "^0.186.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",
|
|
"dependencies": {
|
|
"three": "^0.186.1",
|
|
"yaml": "^2.9.1"
|
|
}
|
|
}
|