Archify Diagram Viewer 0.1.0
VS Code extension that previews Archify diagrams from their JSON sources (live, as you type) and opens rendered Archify HTML in a viewer tab. Bundles the Archify 3.0.1 renderer and runs it on VS Code's Node runtime. Adds validation diagnostics, JSON schema help, source-link navigation, export saving, render-to-file and open-in-browser commands. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,354 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "Archify Shared Definitions",
|
||||
"$defs": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
|
||||
},
|
||||
"locale": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
|
||||
"maxLength": 35
|
||||
},
|
||||
"translations": {
|
||||
"type": "object",
|
||||
"propertyNames": {
|
||||
"pattern": "^[a-z][a-zA-Z0-9]*(\\.[a-z][a-zA-Z0-9]*)*$"
|
||||
},
|
||||
"additionalProperties": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 400
|
||||
},
|
||||
"maxProperties": 600
|
||||
},
|
||||
"animation": {
|
||||
"enum": [
|
||||
"trace",
|
||||
"none"
|
||||
]
|
||||
},
|
||||
"visualPreset": {
|
||||
"enum": [
|
||||
"classic",
|
||||
"signal-flow",
|
||||
"blueprint",
|
||||
"editorial"
|
||||
]
|
||||
},
|
||||
"qualityProfile": {
|
||||
"enum": [
|
||||
"standard",
|
||||
"showcase"
|
||||
]
|
||||
},
|
||||
"portableOutputPath": {
|
||||
"description": "A portable POSIX-relative HTML output path. It must be safe to interpret identically on every supported host filesystem.",
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^[^/]+(?:/[^/]+)*$",
|
||||
"allOf": [
|
||||
{
|
||||
"pattern": "(?:^|/)[^/]+[.][Hh][Tt][Mm][Ll]$"
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "[\\\\<>:\"|?*\\u0000-\\u001F\\u007F-\\u009F]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "[\\uD800-\\uDFFF]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "(^|/)[.]{1,2}(/|$)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "[. ](/|$)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "(^|/)[^/]{256}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "(^|/)(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Nn][Ii][Nn][$]|[Cc][Oo][Nn][Oo][Uu][Tt][$]|[Cc][Oo][Mm][1-9¹²³]|[Ll][Pp][Tt][1-9¹²³])(?:[.]|/|$)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"not": {
|
||||
"pattern": "(^|/)[^/]*~[1-9][0-9]*(?:[.]|/|$)"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"side": {
|
||||
"enum": [
|
||||
"left",
|
||||
"right",
|
||||
"top",
|
||||
"bottom"
|
||||
]
|
||||
},
|
||||
"relationshipWidth": {
|
||||
"type": "number",
|
||||
"minimum": 0.5
|
||||
},
|
||||
"point": {
|
||||
"type": "array",
|
||||
"prefixItems": [
|
||||
{
|
||||
"type": "number"
|
||||
},
|
||||
{
|
||||
"type": "number"
|
||||
}
|
||||
],
|
||||
"items": false,
|
||||
"minItems": 2,
|
||||
"maxItems": 2
|
||||
},
|
||||
"componentType": {
|
||||
"enum": [
|
||||
"frontend",
|
||||
"backend",
|
||||
"database",
|
||||
"cloud",
|
||||
"security",
|
||||
"messagebus",
|
||||
"external"
|
||||
]
|
||||
},
|
||||
"nodeIcon": {
|
||||
"description": "Decorative corner icon. Omit the icon field for the type default; none hides it. Does not change type, color, or legend grouping.",
|
||||
"enum": [
|
||||
"calendar",
|
||||
"clock",
|
||||
"person",
|
||||
"briefcase",
|
||||
"flag",
|
||||
"moon",
|
||||
"frontend",
|
||||
"backend",
|
||||
"database",
|
||||
"cloud",
|
||||
"security",
|
||||
"messagebus",
|
||||
"external",
|
||||
"start",
|
||||
"active",
|
||||
"waiting",
|
||||
"success",
|
||||
"failure",
|
||||
"neutral",
|
||||
"none"
|
||||
]
|
||||
},
|
||||
"brandMark": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 2048,
|
||||
"anyOf": [
|
||||
{
|
||||
"maxLength": 80,
|
||||
"pattern": "^[^\\r\\n]+$"
|
||||
},
|
||||
{
|
||||
"pattern": "^https?://"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"url",
|
||||
"sha256"
|
||||
],
|
||||
"properties": {
|
||||
"url": {
|
||||
"type": "string",
|
||||
"minLength": 8,
|
||||
"maxLength": 2048,
|
||||
"pattern": "^https?://"
|
||||
},
|
||||
"sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-f0-9]{64}$"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"variant": {
|
||||
"enum": [
|
||||
"default",
|
||||
"emphasis",
|
||||
"security",
|
||||
"dashed"
|
||||
]
|
||||
},
|
||||
"legendMode": {
|
||||
"enum": [
|
||||
"auto",
|
||||
"all",
|
||||
"hidden"
|
||||
]
|
||||
},
|
||||
"legendEntry": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"minProperties": 1,
|
||||
"properties": {
|
||||
"label": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 80
|
||||
},
|
||||
"visible": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"guidedViews": {
|
||||
"type": "array",
|
||||
"maxItems": 5,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"label",
|
||||
"focus"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/$defs/id"
|
||||
},
|
||||
"label": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 48
|
||||
},
|
||||
"focus": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/id"
|
||||
}
|
||||
},
|
||||
"note": {
|
||||
"type": "string",
|
||||
"maxLength": 140
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"url",
|
||||
"revision"
|
||||
],
|
||||
"properties": {
|
||||
"url": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"provider": {
|
||||
"enum": [
|
||||
"github",
|
||||
"gitee"
|
||||
]
|
||||
},
|
||||
"link_mode": {
|
||||
"enum": [
|
||||
"web",
|
||||
"local-only"
|
||||
]
|
||||
},
|
||||
"revision": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-fA-F0-9]{40}$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sourceReferences": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"maxItems": 3,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"path"
|
||||
],
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 240
|
||||
},
|
||||
"line": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"end_line": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"label": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 48
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cards": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"dot",
|
||||
"title",
|
||||
"items"
|
||||
],
|
||||
"properties": {
|
||||
"dot": {
|
||||
"enum": [
|
||||
"cyan",
|
||||
"emerald",
|
||||
"violet",
|
||||
"amber",
|
||||
"rose",
|
||||
"orange",
|
||||
"slate"
|
||||
]
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user