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>
182 lines
5.6 KiB
JSON
182 lines
5.6 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://github.com/tt-a1i/archify/schemas/common.schema.json",
|
|
"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" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|