docviz-builder 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +371 -0
- package/LICENSE +21 -0
- package/README.md +837 -0
- package/bin/docviz-mcp.mjs +10 -0
- package/bin/docviz.mjs +11 -0
- package/dist/build/builder.d.ts +62 -0
- package/dist/build/builder.d.ts.map +1 -0
- package/dist/build/builder.js +337 -0
- package/dist/build/builder.js.map +1 -0
- package/dist/build/diff.d.ts +64 -0
- package/dist/build/diff.d.ts.map +1 -0
- package/dist/build/diff.js +156 -0
- package/dist/build/diff.js.map +1 -0
- package/dist/build/doctor.d.ts +39 -0
- package/dist/build/doctor.d.ts.map +1 -0
- package/dist/build/doctor.js +190 -0
- package/dist/build/doctor.js.map +1 -0
- package/dist/build/init.d.ts +28 -0
- package/dist/build/init.d.ts.map +1 -0
- package/dist/build/init.js +274 -0
- package/dist/build/init.js.map +1 -0
- package/dist/build/preview.d.ts +13 -0
- package/dist/build/preview.d.ts.map +1 -0
- package/dist/build/preview.js +277 -0
- package/dist/build/preview.js.map +1 -0
- package/dist/build/skill.d.ts +41 -0
- package/dist/build/skill.d.ts.map +1 -0
- package/dist/build/skill.js +63 -0
- package/dist/build/skill.js.map +1 -0
- package/dist/build/verify.d.ts +26 -0
- package/dist/build/verify.d.ts.map +1 -0
- package/dist/build/verify.js +99 -0
- package/dist/build/verify.js.map +1 -0
- package/dist/cli.d.ts +20 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +427 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/load.d.ts +32 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +279 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/types.d.ts +89 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +5 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/cache.d.ts +32 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +69 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/errors.d.ts +115 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +164 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/hash.d.ts +57 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +0 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/package-version.d.ts +9 -0
- package/dist/core/package-version.d.ts.map +1 -0
- package/dist/core/package-version.js +44 -0
- package/dist/core/package-version.js.map +1 -0
- package/dist/core/paths.d.ts +46 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +105 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/registry.d.ts +24 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +72 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/types.d.ts +78 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +11 -0
- package/dist/core/types.js.map +1 -0
- package/dist/dsl/architecture.d.ts +15 -0
- package/dist/dsl/architecture.d.ts.map +1 -0
- package/dist/dsl/architecture.js +242 -0
- package/dist/dsl/architecture.js.map +1 -0
- package/dist/dsl/catalog.d.ts +62 -0
- package/dist/dsl/catalog.d.ts.map +1 -0
- package/dist/dsl/catalog.en.d.ts +18 -0
- package/dist/dsl/catalog.en.d.ts.map +1 -0
- package/dist/dsl/catalog.en.js +299 -0
- package/dist/dsl/catalog.en.js.map +1 -0
- package/dist/dsl/catalog.js +1082 -0
- package/dist/dsl/catalog.js.map +1 -0
- package/dist/dsl/chart.d.ts +14 -0
- package/dist/dsl/chart.d.ts.map +1 -0
- package/dist/dsl/chart.js +435 -0
- package/dist/dsl/chart.js.map +1 -0
- package/dist/dsl/compile.d.ts +31 -0
- package/dist/dsl/compile.d.ts.map +1 -0
- package/dist/dsl/compile.js +120 -0
- package/dist/dsl/compile.js.map +1 -0
- package/dist/dsl/diagram-bpmn.d.ts +13 -0
- package/dist/dsl/diagram-bpmn.d.ts.map +1 -0
- package/dist/dsl/diagram-bpmn.js +215 -0
- package/dist/dsl/diagram-bpmn.js.map +1 -0
- package/dist/dsl/diagram-product.d.ts +15 -0
- package/dist/dsl/diagram-product.d.ts.map +1 -0
- package/dist/dsl/diagram-product.js +291 -0
- package/dist/dsl/diagram-product.js.map +1 -0
- package/dist/dsl/diagram-technical.d.ts +28 -0
- package/dist/dsl/diagram-technical.d.ts.map +1 -0
- package/dist/dsl/diagram-technical.js +365 -0
- package/dist/dsl/diagram-technical.js.map +1 -0
- package/dist/dsl/diagram.d.ts +22 -0
- package/dist/dsl/diagram.d.ts.map +1 -0
- package/dist/dsl/diagram.js +542 -0
- package/dist/dsl/diagram.js.map +1 -0
- package/dist/dsl/fallbacks-d2.d.ts +27 -0
- package/dist/dsl/fallbacks-d2.d.ts.map +1 -0
- package/dist/dsl/fallbacks-d2.js +265 -0
- package/dist/dsl/fallbacks-d2.js.map +1 -0
- package/dist/dsl/fallbacks.d.ts +25 -0
- package/dist/dsl/fallbacks.d.ts.map +1 -0
- package/dist/dsl/fallbacks.js +264 -0
- package/dist/dsl/fallbacks.js.map +1 -0
- package/dist/dsl/fields.d.ts +93 -0
- package/dist/dsl/fields.d.ts.map +1 -0
- package/dist/dsl/fields.js +233 -0
- package/dist/dsl/fields.js.map +1 -0
- package/dist/dsl/index.d.ts +50 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +114 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/util.d.ts +105 -0
- package/dist/dsl/util.d.ts.map +1 -0
- package/dist/dsl/util.js +261 -0
- package/dist/dsl/util.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/scan.d.ts +73 -0
- package/dist/markdown/scan.d.ts.map +1 -0
- package/dist/markdown/scan.js +150 -0
- package/dist/markdown/scan.js.map +1 -0
- package/dist/markdown/transform.d.ts +28 -0
- package/dist/markdown/transform.d.ts.map +1 -0
- package/dist/markdown/transform.js +38 -0
- package/dist/markdown/transform.js.map +1 -0
- package/dist/mcp/server.d.ts +18 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +118 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +118 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +573 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/renderers/base.d.ts +18 -0
- package/dist/renderers/base.d.ts.map +1 -0
- package/dist/renderers/base.js +59 -0
- package/dist/renderers/base.js.map +1 -0
- package/dist/renderers/bpmn.d.ts +68 -0
- package/dist/renderers/bpmn.d.ts.map +1 -0
- package/dist/renderers/bpmn.js +158 -0
- package/dist/renderers/bpmn.js.map +1 -0
- package/dist/renderers/browser.d.ts +30 -0
- package/dist/renderers/browser.d.ts.map +1 -0
- package/dist/renderers/browser.js +143 -0
- package/dist/renderers/browser.js.map +1 -0
- package/dist/renderers/color-scheme.d.ts +40 -0
- package/dist/renderers/color-scheme.d.ts.map +1 -0
- package/dist/renderers/color-scheme.js +122 -0
- package/dist/renderers/color-scheme.js.map +1 -0
- package/dist/renderers/d2.d.ts +37 -0
- package/dist/renderers/d2.d.ts.map +1 -0
- package/dist/renderers/d2.js +108 -0
- package/dist/renderers/d2.js.map +1 -0
- package/dist/renderers/graphviz.d.ts +33 -0
- package/dist/renderers/graphviz.d.ts.map +1 -0
- package/dist/renderers/graphviz.js +88 -0
- package/dist/renderers/graphviz.js.map +1 -0
- package/dist/renderers/in-page.d.ts +33 -0
- package/dist/renderers/in-page.d.ts.map +1 -0
- package/dist/renderers/in-page.js +76 -0
- package/dist/renderers/in-page.js.map +1 -0
- package/dist/renderers/index.d.ts +20 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +94 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/kroki.d.ts +38 -0
- package/dist/renderers/kroki.d.ts.map +1 -0
- package/dist/renderers/kroki.js +151 -0
- package/dist/renderers/kroki.js.map +1 -0
- package/dist/renderers/likec4-svg.d.ts +82 -0
- package/dist/renderers/likec4-svg.d.ts.map +1 -0
- package/dist/renderers/likec4-svg.js +435 -0
- package/dist/renderers/likec4-svg.js.map +1 -0
- package/dist/renderers/likec4.d.ts +22 -0
- package/dist/renderers/likec4.d.ts.map +1 -0
- package/dist/renderers/likec4.js +77 -0
- package/dist/renderers/likec4.js.map +1 -0
- package/dist/renderers/mermaid.d.ts +64 -0
- package/dist/renderers/mermaid.d.ts.map +1 -0
- package/dist/renderers/mermaid.js +196 -0
- package/dist/renderers/mermaid.js.map +1 -0
- package/dist/renderers/plantuml.d.ts +56 -0
- package/dist/renderers/plantuml.d.ts.map +1 -0
- package/dist/renderers/plantuml.js +195 -0
- package/dist/renderers/plantuml.js.map +1 -0
- package/dist/renderers/svg-utils.d.ts +46 -0
- package/dist/renderers/svg-utils.d.ts.map +1 -0
- package/dist/renderers/svg-utils.js +439 -0
- package/dist/renderers/svg-utils.js.map +1 -0
- package/dist/renderers/svgbob.d.ts +26 -0
- package/dist/renderers/svgbob.d.ts.map +1 -0
- package/dist/renderers/svgbob.js +70 -0
- package/dist/renderers/svgbob.js.map +1 -0
- package/dist/renderers/vega-lite.d.ts +18 -0
- package/dist/renderers/vega-lite.d.ts.map +1 -0
- package/dist/renderers/vega-lite.js +94 -0
- package/dist/renderers/vega-lite.js.map +1 -0
- package/dist/themes/index.d.ts +17 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +419 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/types.d.ts +99 -0
- package/dist/themes/types.d.ts.map +1 -0
- package/dist/themes/types.js +9 -0
- package/dist/themes/types.js.map +1 -0
- package/eval/casos.json +513 -0
- package/package.json +114 -0
- package/scripts/capture-preview.mjs +101 -0
- package/scripts/check-github.mjs +128 -0
- package/scripts/eval.d.mts +8 -0
- package/scripts/eval.mjs +284 -0
- package/scripts/fetch-plantuml.mjs +122 -0
- package/scripts/generate-catalog-doc.mjs +106 -0
- package/scripts/rasterize.mjs +68 -0
- package/scripts/sync-docs.mjs +158 -0
- package/skills/docviz/SKILL.md +111 -0
- package/vendor/.gitkeep +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registro de renderers.
|
|
3
|
+
*
|
|
4
|
+
* El parser Markdown consulta este registro para saber que lenguajes son
|
|
5
|
+
* "compilables"; nunca importa un renderer concreto.
|
|
6
|
+
*/
|
|
7
|
+
import { UnknownRendererError } from './errors.js';
|
|
8
|
+
export class RendererRegistry {
|
|
9
|
+
renderers = new Map();
|
|
10
|
+
/** Alias de lenguaje -> tipo canonico (`dot` -> `graphviz`, etc.). */
|
|
11
|
+
aliases = new Map();
|
|
12
|
+
register(type, renderer, aliases = []) {
|
|
13
|
+
const key = normalize(type);
|
|
14
|
+
this.renderers.set(key, renderer);
|
|
15
|
+
for (const alias of aliases)
|
|
16
|
+
this.aliases.set(normalize(alias), key);
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
unregister(type) {
|
|
20
|
+
const key = normalize(type);
|
|
21
|
+
for (const [alias, target] of this.aliases) {
|
|
22
|
+
if (target === key)
|
|
23
|
+
this.aliases.delete(alias);
|
|
24
|
+
}
|
|
25
|
+
return this.renderers.delete(key);
|
|
26
|
+
}
|
|
27
|
+
/** Resuelve alias y devuelve el tipo canonico, o `undefined` si no existe. */
|
|
28
|
+
resolve(type) {
|
|
29
|
+
const key = normalize(type);
|
|
30
|
+
if (this.renderers.has(key))
|
|
31
|
+
return key;
|
|
32
|
+
const aliased = this.aliases.get(key);
|
|
33
|
+
if (aliased !== undefined && this.renderers.has(aliased))
|
|
34
|
+
return aliased;
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
has(type) {
|
|
38
|
+
return this.resolve(type) !== undefined;
|
|
39
|
+
}
|
|
40
|
+
/** Devuelve el renderer o lanza `UnknownRendererError`. */
|
|
41
|
+
get(type) {
|
|
42
|
+
const canonical = this.resolve(type);
|
|
43
|
+
if (canonical === undefined)
|
|
44
|
+
throw new UnknownRendererError(type, this.types());
|
|
45
|
+
return this.renderers.get(canonical);
|
|
46
|
+
}
|
|
47
|
+
types() {
|
|
48
|
+
return [...this.renderers.keys()].sort();
|
|
49
|
+
}
|
|
50
|
+
/** Todos los lenguajes reconocidos en una valla de codigo, alias incluidos. */
|
|
51
|
+
languages() {
|
|
52
|
+
return [...new Set([...this.renderers.keys(), ...this.aliases.keys()])].sort();
|
|
53
|
+
}
|
|
54
|
+
async disposeAll() {
|
|
55
|
+
const errors = [];
|
|
56
|
+
for (const renderer of this.renderers.values()) {
|
|
57
|
+
try {
|
|
58
|
+
await renderer.dispose?.();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
errors.push(err);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (errors.length > 0) {
|
|
65
|
+
throw new AggregateError(errors, 'fallo la liberacion de algun renderer');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function normalize(type) {
|
|
70
|
+
return type.trim().toLowerCase();
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contratos publicos de DocViz Builder.
|
|
3
|
+
*
|
|
4
|
+
* El parser Markdown solo conoce estas interfaces; ningun detalle de PlantUML,
|
|
5
|
+
* Mermaid, D2, Vega-Lite, Graphviz o LikeC4 se filtra hacia arriba.
|
|
6
|
+
*/
|
|
7
|
+
import type { Theme } from '../themes/types.js';
|
|
8
|
+
export type OutputFormat = 'svg' | 'png';
|
|
9
|
+
export declare const MIME_TYPES: Record<OutputFormat, string>;
|
|
10
|
+
/** Opciones que el builder entrega a cada renderer en cada invocacion. */
|
|
11
|
+
export interface RenderOptions {
|
|
12
|
+
/** Formato pedido. El renderer debe fallar si no lo soporta. */
|
|
13
|
+
format: OutputFormat;
|
|
14
|
+
/** Tema resuelto del proyecto. */
|
|
15
|
+
theme: Theme;
|
|
16
|
+
/** Titulo del diagrama, util para `<title>` accesible dentro del SVG. */
|
|
17
|
+
title?: string;
|
|
18
|
+
/** Milisegundos maximos de render. Superarlo es un error, no un warning. */
|
|
19
|
+
timeoutMs: number;
|
|
20
|
+
/** Tamano maximo aceptado del recurso generado, en bytes. */
|
|
21
|
+
maxOutputBytes: number;
|
|
22
|
+
}
|
|
23
|
+
export interface RenderResult {
|
|
24
|
+
format: OutputFormat;
|
|
25
|
+
content: Buffer;
|
|
26
|
+
mimeType: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Un renderer traduce un lenguaje declarativo a una imagen.
|
|
30
|
+
*
|
|
31
|
+
* `version()` participa en el hash del recurso: si el motor cambia de version,
|
|
32
|
+
* los recursos cacheados se invalidan solos.
|
|
33
|
+
*/
|
|
34
|
+
export interface DiagramRenderer {
|
|
35
|
+
readonly type: string;
|
|
36
|
+
readonly defaultFormat: OutputFormat;
|
|
37
|
+
readonly supportedFormats: readonly OutputFormat[];
|
|
38
|
+
/** Identificador estable de la version del motor subyacente. */
|
|
39
|
+
version(): Promise<string>;
|
|
40
|
+
render(source: string, options: RenderOptions): Promise<RenderResult>;
|
|
41
|
+
/** Libera recursos persistentes (navegador, wasm, JVM). */
|
|
42
|
+
dispose?(): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
/** Un bloque declarativo detectado dentro de un documento Markdown. */
|
|
45
|
+
export interface DiagramBlock {
|
|
46
|
+
/** Lenguaje de la valla: `plantuml`, `mermaid`, `diagram`, `chart`, ... */
|
|
47
|
+
lang: string;
|
|
48
|
+
/** Tipo de renderer final tras resolver el DSL de alto nivel. */
|
|
49
|
+
rendererType: string;
|
|
50
|
+
/** Codigo fuente que recibira el renderer. */
|
|
51
|
+
source: string;
|
|
52
|
+
/** Codigo fuente tal cual aparece en el documento (DSL sin compilar). */
|
|
53
|
+
rawSource: string;
|
|
54
|
+
/** Titulo usado como alt text y como base del nombre de archivo. */
|
|
55
|
+
title: string;
|
|
56
|
+
/** Formato pedido explicitamente en la valla, si lo hubo. */
|
|
57
|
+
requestedFormat?: OutputFormat;
|
|
58
|
+
/** Posicion en el documento fuente, para reemplazo quirurgico y errores. */
|
|
59
|
+
start: number;
|
|
60
|
+
end: number;
|
|
61
|
+
line: number;
|
|
62
|
+
}
|
|
63
|
+
export interface RenderedAsset {
|
|
64
|
+
/** Ruta relativa al directorio de salida, con separadores POSIX. */
|
|
65
|
+
relativePath: string;
|
|
66
|
+
absolutePath: string;
|
|
67
|
+
hash: string;
|
|
68
|
+
format: OutputFormat;
|
|
69
|
+
bytes: number;
|
|
70
|
+
fromCache: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface BuildStats {
|
|
73
|
+
documents: number;
|
|
74
|
+
blocks: number;
|
|
75
|
+
generated: number;
|
|
76
|
+
cacheHits: number;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;AAEzC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAGnD,CAAC;AAEF,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,MAAM,EAAE,YAAY,CAAC;IACrB,kCAAkC;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,YAAY,EAAE,CAAC;IACnD,gEAAgE;IAChE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,2DAA2D;IAC3D,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contratos publicos de DocViz Builder.
|
|
3
|
+
*
|
|
4
|
+
* El parser Markdown solo conoce estas interfaces; ningun detalle de PlantUML,
|
|
5
|
+
* Mermaid, D2, Vega-Lite, Graphviz o LikeC4 se filtra hacia arriba.
|
|
6
|
+
*/
|
|
7
|
+
export const MIME_TYPES = {
|
|
8
|
+
svg: 'image/svg+xml',
|
|
9
|
+
png: 'image/png',
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,CAAC,MAAM,UAAU,GAAiC;IACtD,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,WAAW;CACjB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bloque `architecture`: modelo C4 declarativo -> DSL LikeC4 -> SVG.
|
|
3
|
+
*
|
|
4
|
+
* El agente describe elementos y relaciones; DocViz escribe el LikeC4, incluida
|
|
5
|
+
* la especificacion de tipos y la vista.
|
|
6
|
+
*/
|
|
7
|
+
export interface CompiledArchitecture {
|
|
8
|
+
rendererType: 'likec4';
|
|
9
|
+
source: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const ARCHITECTURE_TYPES: readonly ["c4-context", "c4-container", "c4-component", "c4-deployment", "context", "container", "component"];
|
|
12
|
+
export declare function compileArchitecture(doc: Record<string, unknown>): CompiledArchitecture;
|
|
13
|
+
/** Genera la fuente LikeC4 del modelo declarado. */
|
|
14
|
+
export declare function architectureLikeC4(doc: Record<string, unknown>): string;
|
|
15
|
+
//# sourceMappingURL=architecture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/dsl/architecture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,QAAQ,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB,+GAQrB,CAAC;AAmDX,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAEtF;AAED,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAuIvE"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bloque `architecture`: modelo C4 declarativo -> DSL LikeC4 -> SVG.
|
|
3
|
+
*
|
|
4
|
+
* El agente describe elementos y relaciones; DocViz escribe el LikeC4, incluida
|
|
5
|
+
* la especificacion de tipos y la vista.
|
|
6
|
+
*/
|
|
7
|
+
import { fail } from './util.js';
|
|
8
|
+
import { asArrowShorthand, asRecord, likec4Label, optionalArray, optionalString, requireArray, requireString, toEdge, } from './util.js';
|
|
9
|
+
export const ARCHITECTURE_TYPES = [
|
|
10
|
+
'c4-context',
|
|
11
|
+
'c4-container',
|
|
12
|
+
'c4-component',
|
|
13
|
+
'c4-deployment',
|
|
14
|
+
'context',
|
|
15
|
+
'container',
|
|
16
|
+
'component',
|
|
17
|
+
];
|
|
18
|
+
/** Clases de elemento admitidas y su forma LikeC4. */
|
|
19
|
+
const ELEMENT_KINDS = {
|
|
20
|
+
person: { shape: 'person' },
|
|
21
|
+
actor: { shape: 'person' },
|
|
22
|
+
system: { shape: 'rectangle' },
|
|
23
|
+
'external-system': { shape: 'rectangle' },
|
|
24
|
+
container: { shape: 'rectangle' },
|
|
25
|
+
component: { shape: 'component' },
|
|
26
|
+
database: { shape: 'cylinder' },
|
|
27
|
+
queue: { shape: 'queue' },
|
|
28
|
+
storage: { shape: 'storage' },
|
|
29
|
+
browser: { shape: 'browser' },
|
|
30
|
+
mobile: { shape: 'mobile' },
|
|
31
|
+
service: { shape: 'rectangle' },
|
|
32
|
+
};
|
|
33
|
+
/** Alias del usuario -> clase canonica. */
|
|
34
|
+
const KIND_ALIASES = {
|
|
35
|
+
usuario: 'person',
|
|
36
|
+
persona: 'person',
|
|
37
|
+
actor: 'actor',
|
|
38
|
+
sistema: 'system',
|
|
39
|
+
externo: 'external-system',
|
|
40
|
+
'sistema-externo': 'external-system',
|
|
41
|
+
contenedor: 'container',
|
|
42
|
+
componente: 'component',
|
|
43
|
+
'base-de-datos': 'database',
|
|
44
|
+
bd: 'database',
|
|
45
|
+
db: 'database',
|
|
46
|
+
cola: 'queue',
|
|
47
|
+
almacenamiento: 'storage',
|
|
48
|
+
navegador: 'browser',
|
|
49
|
+
movil: 'mobile',
|
|
50
|
+
servicio: 'service',
|
|
51
|
+
};
|
|
52
|
+
const COLORS = ['primary', 'secondary', 'muted', 'blue', 'green', 'amber', 'red', 'gray', 'indigo', 'sky', 'slate'];
|
|
53
|
+
export function compileArchitecture(doc) {
|
|
54
|
+
return { rendererType: 'likec4', source: architectureLikeC4(doc) };
|
|
55
|
+
}
|
|
56
|
+
/** Genera la fuente LikeC4 del modelo declarado. */
|
|
57
|
+
export function architectureLikeC4(doc) {
|
|
58
|
+
const type = (optionalString(doc, 'type') ?? 'c4-context').toLowerCase();
|
|
59
|
+
if (!ARCHITECTURE_TYPES.includes(type)) {
|
|
60
|
+
fail(`el tipo de arquitectura "${type}" no existe`, `tipos disponibles: ${ARCHITECTURE_TYPES.join(', ')}`);
|
|
61
|
+
}
|
|
62
|
+
const rawElements = requireArray(doc['elements'] ?? doc['nodes'], 'architecture.elements');
|
|
63
|
+
const rawRelations = optionalArray(doc['relations'] ?? doc['relationships'], 'architecture.relations');
|
|
64
|
+
const title = optionalString(doc, 'title');
|
|
65
|
+
const elements = new Map();
|
|
66
|
+
const order = [];
|
|
67
|
+
for (const raw of rawElements) {
|
|
68
|
+
const record = asRecord(raw, 'architecture.elements');
|
|
69
|
+
const name = requireString(record, 'name', 'architecture.elements');
|
|
70
|
+
const id = sanitizeId(optionalString(record, 'id') ?? name, elements);
|
|
71
|
+
const kind = normalizeKind(optionalString(record, 'kind') ?? 'system');
|
|
72
|
+
const element = { id, kind, name, children: [] };
|
|
73
|
+
const description = optionalString(record, 'description');
|
|
74
|
+
if (description !== undefined)
|
|
75
|
+
element.description = description;
|
|
76
|
+
const technology = optionalString(record, 'technology') ?? optionalString(record, 'tech');
|
|
77
|
+
if (technology !== undefined)
|
|
78
|
+
element.technology = technology;
|
|
79
|
+
const color = optionalString(record, 'color');
|
|
80
|
+
if (color !== undefined) {
|
|
81
|
+
if (!COLORS.includes(color.toLowerCase())) {
|
|
82
|
+
fail(`el color "${color}" no existe`, `colores validos: ${COLORS.join(', ')}`);
|
|
83
|
+
}
|
|
84
|
+
element.color = color.toLowerCase();
|
|
85
|
+
}
|
|
86
|
+
const parent = optionalString(record, 'parent');
|
|
87
|
+
if (parent !== undefined)
|
|
88
|
+
element.parent = parent;
|
|
89
|
+
elements.set(id, element);
|
|
90
|
+
order.push(id);
|
|
91
|
+
}
|
|
92
|
+
// Resolucion de jerarquia: `parent` puede referirse al id o al nombre.
|
|
93
|
+
const byName = new Map();
|
|
94
|
+
for (const element of elements.values())
|
|
95
|
+
byName.set(element.name, element);
|
|
96
|
+
const roots = [];
|
|
97
|
+
for (const id of order) {
|
|
98
|
+
const element = elements.get(id);
|
|
99
|
+
if (element.parent === undefined) {
|
|
100
|
+
roots.push(element);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const parent = elements.get(element.parent) ?? byName.get(element.parent);
|
|
104
|
+
if (parent === undefined) {
|
|
105
|
+
fail(`el elemento padre "${element.parent}" de "${element.name}" no existe`, `elementos declarados: ${[...elements.values()].map((e) => e.name).join(', ')}`);
|
|
106
|
+
}
|
|
107
|
+
if (parent === element)
|
|
108
|
+
fail(`el elemento "${element.name}" no puede ser su propio padre`);
|
|
109
|
+
parent.children.push(element);
|
|
110
|
+
}
|
|
111
|
+
assertNoCycles(roots, elements.size);
|
|
112
|
+
// Especificacion: solo las clases realmente usadas.
|
|
113
|
+
const usedKinds = [...new Set([...elements.values()].map((e) => e.kind))].sort();
|
|
114
|
+
const lines = ['specification {'];
|
|
115
|
+
for (const kind of usedKinds) {
|
|
116
|
+
const shape = ELEMENT_KINDS[kind].shape;
|
|
117
|
+
// `size sm` evita cajas de 320x180 con una sola palabra dentro: un
|
|
118
|
+
// contexto C4 de tres elementos cabe asi en una pantalla.
|
|
119
|
+
lines.push(` element ${kind} {`, ' style {', ` shape ${shape}`, ' size sm', ' }', ' }');
|
|
120
|
+
}
|
|
121
|
+
lines.push('}', '', 'model {');
|
|
122
|
+
const fqnOf = new Map();
|
|
123
|
+
const containersWithChildren = [];
|
|
124
|
+
const emit = (element, indent, prefix) => {
|
|
125
|
+
const fqn = prefix === '' ? element.id : `${prefix}.${element.id}`;
|
|
126
|
+
fqnOf.set(element.id, fqn);
|
|
127
|
+
fqnOf.set(element.name, fqn);
|
|
128
|
+
if (element.children.length > 0)
|
|
129
|
+
containersWithChildren.push(fqn);
|
|
130
|
+
lines.push(`${indent}${element.id} = ${element.kind} ${likec4Label(element.name)} {`);
|
|
131
|
+
if (element.description !== undefined)
|
|
132
|
+
lines.push(`${indent} description ${likec4Label(element.description)}`);
|
|
133
|
+
if (element.technology !== undefined)
|
|
134
|
+
lines.push(`${indent} technology ${likec4Label(element.technology)}`);
|
|
135
|
+
if (element.color !== undefined) {
|
|
136
|
+
lines.push(`${indent} style {`, `${indent} color ${element.color}`, `${indent} }`);
|
|
137
|
+
}
|
|
138
|
+
// Los hijos se emiten dentro del cuerpo del padre: asi LikeC4 los dibuja
|
|
139
|
+
// como elementos contenidos y no como cajas sueltas.
|
|
140
|
+
for (const child of element.children)
|
|
141
|
+
emit(child, `${indent} `, fqn);
|
|
142
|
+
lines.push(`${indent}}`);
|
|
143
|
+
};
|
|
144
|
+
for (const root of roots)
|
|
145
|
+
emit(root, ' ', '');
|
|
146
|
+
lines.push('');
|
|
147
|
+
for (const raw of rawRelations) {
|
|
148
|
+
// `- Usuario -> Core: Utiliza` llega como cadena o, si YAML vio los dos
|
|
149
|
+
// puntos, como mapa de una entrada. Ambas se normalizan igual que la forma
|
|
150
|
+
// explicita `{from, to, label}`.
|
|
151
|
+
const relation = toRelationRecord(raw);
|
|
152
|
+
const from = resolveRef(fqnOf, requireString(relation, 'from', 'architecture.relations'), 'from');
|
|
153
|
+
const to = resolveRef(fqnOf, requireString(relation, 'to', 'architecture.relations'), 'to');
|
|
154
|
+
const label = optionalString(relation, 'label') ?? optionalString(relation, 'text');
|
|
155
|
+
const technology = optionalString(relation, 'technology') ?? optionalString(relation, 'tech');
|
|
156
|
+
if (technology !== undefined) {
|
|
157
|
+
lines.push(` ${from} -> ${to} ${likec4Label(label ?? '')} {`);
|
|
158
|
+
lines.push(` technology ${likec4Label(technology)}`);
|
|
159
|
+
lines.push(' }');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
lines.push(` ${from} -> ${to}${label !== undefined ? ` ${likec4Label(label)}` : ''}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
lines.push('}', '', 'views {', ' view index {');
|
|
166
|
+
if (title !== undefined)
|
|
167
|
+
lines.push(` title ${likec4Label(title)}`);
|
|
168
|
+
const direction = optionalString(doc, 'direction');
|
|
169
|
+
if (direction !== undefined) {
|
|
170
|
+
const valid = ['TopBottom', 'BottomTop', 'LeftRight', 'RightLeft'];
|
|
171
|
+
const normalized = valid.find((v) => v.toLowerCase() === direction.replace(/[-_]/g, '').toLowerCase());
|
|
172
|
+
if (normalized === undefined) {
|
|
173
|
+
fail(`la direccion "${direction}" no existe`, `direcciones validas: ${valid.join(', ')}`);
|
|
174
|
+
}
|
|
175
|
+
lines.push(` autoLayout ${normalized}`);
|
|
176
|
+
}
|
|
177
|
+
lines.push(' include *');
|
|
178
|
+
// `include *` de LikeC4 solo trae el primer nivel: sin esto, un modelo con
|
|
179
|
+
// contenedores anidados se dibujaria como una unica caja vacia.
|
|
180
|
+
for (const fqn of containersWithChildren)
|
|
181
|
+
lines.push(` include ${fqn}.**`);
|
|
182
|
+
lines.push(' }', '}');
|
|
183
|
+
return lines.join('\n');
|
|
184
|
+
}
|
|
185
|
+
/** Normaliza cualquiera de las formas admitidas de relacion a `{from,to,label}`. */
|
|
186
|
+
function toRelationRecord(raw) {
|
|
187
|
+
if (typeof raw === 'string' || asArrowShorthand(raw) !== undefined) {
|
|
188
|
+
const edge = toEdge(raw, 'architecture.relations');
|
|
189
|
+
const record = { from: edge.from, to: edge.to };
|
|
190
|
+
if (edge.label !== undefined)
|
|
191
|
+
record['label'] = edge.label;
|
|
192
|
+
return record;
|
|
193
|
+
}
|
|
194
|
+
return asRecord(raw, 'architecture.relations');
|
|
195
|
+
}
|
|
196
|
+
function resolveRef(fqnOf, ref, field) {
|
|
197
|
+
const fqn = fqnOf.get(ref);
|
|
198
|
+
if (fqn === undefined) {
|
|
199
|
+
fail(`"${ref}" no corresponde a ningun elemento declarado (${field})`, `referencias validas: ${[...new Set(fqnOf.keys())].join(', ')}`);
|
|
200
|
+
}
|
|
201
|
+
return fqn;
|
|
202
|
+
}
|
|
203
|
+
function normalizeKind(kind) {
|
|
204
|
+
const normalized = kind.trim().toLowerCase().replace(/\s+/g, '-');
|
|
205
|
+
const canonical = KIND_ALIASES[normalized] ?? normalized;
|
|
206
|
+
if (ELEMENT_KINDS[canonical] === undefined) {
|
|
207
|
+
fail(`la clase de elemento "${kind}" no existe`, `clases validas: ${Object.keys(ELEMENT_KINDS).join(', ')}`);
|
|
208
|
+
}
|
|
209
|
+
return canonical;
|
|
210
|
+
}
|
|
211
|
+
/** Identificadores LikeC4: letra inicial, despues letras, digitos y `_`. */
|
|
212
|
+
function sanitizeId(raw, existing) {
|
|
213
|
+
let id = raw
|
|
214
|
+
.normalize('NFD')
|
|
215
|
+
.replace(/[̀-ͯ]/g, '')
|
|
216
|
+
.replace(/[^A-Za-z0-9_]+/g, '_')
|
|
217
|
+
.replace(/^_+|_+$/g, '');
|
|
218
|
+
if (id === '' || /^[0-9]/.test(id))
|
|
219
|
+
id = `e_${id}`;
|
|
220
|
+
if (!existing.has(id))
|
|
221
|
+
return id;
|
|
222
|
+
let n = 2;
|
|
223
|
+
while (existing.has(`${id}_${n}`))
|
|
224
|
+
n += 1;
|
|
225
|
+
return `${id}_${n}`;
|
|
226
|
+
}
|
|
227
|
+
function assertNoCycles(roots, total) {
|
|
228
|
+
let visited = 0;
|
|
229
|
+
const walk = (element, depth) => {
|
|
230
|
+
if (depth > 32)
|
|
231
|
+
fail('la jerarquia de elementos es demasiado profunda o tiene un ciclo');
|
|
232
|
+
visited += 1;
|
|
233
|
+
for (const child of element.children)
|
|
234
|
+
walk(child, depth + 1);
|
|
235
|
+
};
|
|
236
|
+
for (const root of roots)
|
|
237
|
+
walk(root, 0);
|
|
238
|
+
if (visited !== total) {
|
|
239
|
+
fail('hay elementos con una relacion de padre ciclica', 'revisa los campos "parent"');
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=architecture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/dsl/architecture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catalogo de tipos del DSL.
|
|
3
|
+
*
|
|
4
|
+
* Es la fuente unica de verdad: que motor atiende cada intencion, con que
|
|
5
|
+
* alternativa si ese motor no esta disponible, para que sirve y cuando NO
|
|
6
|
+
* conviene usarlo.
|
|
7
|
+
*
|
|
8
|
+
* Los tres ultimos campos no son documentacion decorativa. El consumidor
|
|
9
|
+
* habitual del catalogo es un modelo de lenguaje decidiendo como explicar algo:
|
|
10
|
+
* "cuando no usarlo" evita la mitad de los errores, y un esqueleto minimo evita
|
|
11
|
+
* la otra mitad.
|
|
12
|
+
*/
|
|
13
|
+
export type DslLang = 'diagram' | 'chart' | 'architecture';
|
|
14
|
+
export interface TypeSpec {
|
|
15
|
+
/** Nombre canonico del tipo. */
|
|
16
|
+
readonly type: string;
|
|
17
|
+
/** Valla en la que se declara. */
|
|
18
|
+
readonly lang: DslLang;
|
|
19
|
+
/** Motor preferido. */
|
|
20
|
+
readonly engine: string;
|
|
21
|
+
/**
|
|
22
|
+
* Motores alternativos, en orden de preferencia.
|
|
23
|
+
*
|
|
24
|
+
* Permiten compilar en una maquina sin navegador o sin Java: el tipo se
|
|
25
|
+
* resuelve con el siguiente motor disponible en lugar de abortar el build.
|
|
26
|
+
* Un tipo sin alternativas depende de su motor.
|
|
27
|
+
*/
|
|
28
|
+
readonly fallbacks?: readonly string[];
|
|
29
|
+
/** Sinonimos aceptados en `type`. */
|
|
30
|
+
readonly aliases?: readonly string[];
|
|
31
|
+
/** Que muestra el diagrama, en una linea. */
|
|
32
|
+
readonly purpose: string;
|
|
33
|
+
/** Situacion en la que es la eleccion correcta. */
|
|
34
|
+
readonly whenToUse: string;
|
|
35
|
+
/** Situacion en la que conviene otro tipo, u ninguno. */
|
|
36
|
+
readonly whenNotToUse: string;
|
|
37
|
+
/**
|
|
38
|
+
* La misma ficha en ingles.
|
|
39
|
+
*
|
|
40
|
+
* No es cortesia: la puntuacion de `docviz suggest` mide la peticion contra
|
|
41
|
+
* la prosa del catalogo, y con la prosa solo en español una peticion en
|
|
42
|
+
* ingles se quedaba sin esa señal. Medido sobre el banco de casos, el hueco
|
|
43
|
+
* entre idiomas era de siete puntos.
|
|
44
|
+
*/
|
|
45
|
+
readonly en?: {
|
|
46
|
+
readonly purpose: string;
|
|
47
|
+
readonly whenToUse: string;
|
|
48
|
+
readonly whenNotToUse: string;
|
|
49
|
+
};
|
|
50
|
+
/** Esqueleto minimo que compila tal cual. */
|
|
51
|
+
readonly example: string;
|
|
52
|
+
/** Palabras clave para la busqueda de `docviz_suggest`. */
|
|
53
|
+
readonly keywords: readonly string[];
|
|
54
|
+
}
|
|
55
|
+
export declare const TYPE_CATALOG: readonly TypeSpec[];
|
|
56
|
+
/** Busca un tipo por su nombre canonico o por cualquiera de sus alias. */
|
|
57
|
+
export declare function findType(name: string): TypeSpec | undefined;
|
|
58
|
+
export declare function typesFor(lang: DslLang): TypeSpec[];
|
|
59
|
+
export declare function typeNames(lang: DslLang): string[];
|
|
60
|
+
/** Todos los nombres aceptados, alias incluidos. */
|
|
61
|
+
export declare function allTypeNames(): string[];
|
|
62
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/dsl/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE;QACZ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAkiCD,eAAO,MAAM,YAAY,EAAE,SAAS,QAAQ,EAG1C,CAAC;AAQH,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE3D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,CAElD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAIjD;AAED,oDAAoD;AACpD,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ficha de cada tipo en ingles.
|
|
3
|
+
*
|
|
4
|
+
* Vive aparte del catalogo para que la traduccion se pueda revisar de un
|
|
5
|
+
* vistazo, y para que anadir un idioma no obligue a tocar las 57 definiciones.
|
|
6
|
+
*
|
|
7
|
+
* No es documentacion decorativa: `docviz suggest` puntua la peticion contra
|
|
8
|
+
* esta prosa igual que contra la española, asi que una peticion en ingles deja
|
|
9
|
+
* de depender solo de las palabras clave. Una prueba comprueba que no falte
|
|
10
|
+
* ningun tipo.
|
|
11
|
+
*/
|
|
12
|
+
export interface TypeSpecEn {
|
|
13
|
+
readonly purpose: string;
|
|
14
|
+
readonly whenToUse: string;
|
|
15
|
+
readonly whenNotToUse: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const CATALOG_EN: Readonly<Record<string, TypeSpecEn>>;
|
|
18
|
+
//# sourceMappingURL=catalog.en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.en.d.ts","sourceRoot":"","sources":["../../src/dsl/catalog.en.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA8R3D,CAAC"}
|