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,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos de producto y proceso que se dibujan con Mermaid: recorrido de usuario,
|
|
3
|
+
* historia de ramas, tablero, priorizacion, flujo de volumenes, composicion,
|
|
4
|
+
* perfil multieje, mapa mental y bloques.
|
|
5
|
+
*/
|
|
6
|
+
import { fail } from './util.js';
|
|
7
|
+
import { asNamedRecord, asRecord, IdFactory, nameOf, optionalArray, optionalNumber, optionalString, requireArray, requireNumber, requireString, } from './util.js';
|
|
8
|
+
/**
|
|
9
|
+
* Mermaid usa `:` y `,` como separadores en varias de sus notaciones y no
|
|
10
|
+
* admite comillas dentro de una etiqueta.
|
|
11
|
+
*/
|
|
12
|
+
function plain(text) {
|
|
13
|
+
return text.replace(/[:,;"']/g, ' ').replace(/\s+/g, ' ').trim();
|
|
14
|
+
}
|
|
15
|
+
// --------------------------------------------------------------------------
|
|
16
|
+
export function journey(doc) {
|
|
17
|
+
const sections = requireArray(doc['sections'] ?? doc['secciones'], 'diagram.sections');
|
|
18
|
+
const lines = ['journey'];
|
|
19
|
+
const title = optionalString(doc, 'title');
|
|
20
|
+
if (title !== undefined)
|
|
21
|
+
lines.push(` title ${plain(title)}`);
|
|
22
|
+
for (const rawSection of sections) {
|
|
23
|
+
const section = asRecord(rawSection, 'diagram.sections');
|
|
24
|
+
lines.push(` section ${plain(requireString(section, 'name', 'diagram.sections'))}`);
|
|
25
|
+
for (const rawStep of requireArray(section['steps'] ?? section['pasos'], 'diagram.sections[].steps')) {
|
|
26
|
+
const step = asNamedRecord(rawStep, 'diagram.sections[].steps', 'name');
|
|
27
|
+
const name = requireString(step, 'name', 'diagram.sections[].steps');
|
|
28
|
+
const score = optionalNumber(step, 'score', 'diagram.sections[].steps') ?? 3;
|
|
29
|
+
if (score < 1 || score > 5) {
|
|
30
|
+
fail(`la satisfaccion de "${name}" debe estar entre 1 y 5`, `valor recibido: ${score}`);
|
|
31
|
+
}
|
|
32
|
+
const actors = optionalArray(step['actors'] ?? step['actores'], 'diagram.sections[].steps[].actors')
|
|
33
|
+
.map((a) => plain(nameOf(a, 'diagram.sections[].steps[].actors')))
|
|
34
|
+
.join(', ');
|
|
35
|
+
lines.push(` ${plain(name)}: ${Math.round(score)}: ${actors === '' ? 'Usuario' : actors}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return lines.join('\n');
|
|
39
|
+
}
|
|
40
|
+
// --------------------------------------------------------------------------
|
|
41
|
+
export function gitGraph(doc) {
|
|
42
|
+
const steps = requireArray(doc['commits'] ?? doc['steps'], 'diagram.commits');
|
|
43
|
+
const lines = ['gitGraph'];
|
|
44
|
+
const branches = new Set(['main']);
|
|
45
|
+
for (const raw of steps) {
|
|
46
|
+
const record = asNamedRecord(raw, 'diagram.commits', 'commit');
|
|
47
|
+
const branch = optionalString(record, 'branch');
|
|
48
|
+
if (branch !== undefined) {
|
|
49
|
+
branches.add(branch);
|
|
50
|
+
lines.push(` branch ${identifier(branch)}`);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const checkout = optionalString(record, 'checkout');
|
|
54
|
+
if (checkout !== undefined) {
|
|
55
|
+
if (!branches.has(checkout)) {
|
|
56
|
+
fail(`la rama "${checkout}" no se ha creado todavia`, `ramas conocidas: ${[...branches].join(', ')}`);
|
|
57
|
+
}
|
|
58
|
+
lines.push(` checkout ${identifier(checkout)}`);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const merge = optionalString(record, 'merge');
|
|
62
|
+
if (merge !== undefined) {
|
|
63
|
+
if (!branches.has(merge)) {
|
|
64
|
+
fail(`la rama "${merge}" no se ha creado todavia`, `ramas conocidas: ${[...branches].join(', ')}`);
|
|
65
|
+
}
|
|
66
|
+
lines.push(` merge ${identifier(merge)}`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const tag = optionalString(record, 'tag');
|
|
70
|
+
const commit = optionalString(record, 'commit');
|
|
71
|
+
if (commit !== undefined || tag !== undefined) {
|
|
72
|
+
const parts = [];
|
|
73
|
+
if (commit !== undefined)
|
|
74
|
+
parts.push(`id: "${plain(commit)}"`);
|
|
75
|
+
if (tag !== undefined)
|
|
76
|
+
parts.push(`tag: "${plain(tag)}"`);
|
|
77
|
+
lines.push(` commit ${parts.join(' ')}`.trimEnd());
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
fail('cada paso de diagram.commits debe ser commit, branch, checkout, merge o tag', 'ejemplo: - commit: version inicial');
|
|
81
|
+
}
|
|
82
|
+
return lines.join('\n');
|
|
83
|
+
}
|
|
84
|
+
/** Mermaid no admite espacios en el nombre de una rama. */
|
|
85
|
+
function identifier(name) {
|
|
86
|
+
return name
|
|
87
|
+
.normalize('NFD')
|
|
88
|
+
.replace(/[̀-ͯ]/g, '')
|
|
89
|
+
.replace(/[^A-Za-z0-9_/-]+/g, '-')
|
|
90
|
+
.replace(/^-+|-+$/g, '');
|
|
91
|
+
}
|
|
92
|
+
// --------------------------------------------------------------------------
|
|
93
|
+
export function kanban(doc) {
|
|
94
|
+
const columns = requireArray(doc['columns'] ?? doc['columnas'], 'diagram.columns');
|
|
95
|
+
const ids = new IdFactory('k');
|
|
96
|
+
const lines = ['kanban'];
|
|
97
|
+
for (const rawColumn of columns) {
|
|
98
|
+
const column = asNamedRecord(rawColumn, 'diagram.columns', 'name');
|
|
99
|
+
const name = requireString(column, 'name', 'diagram.columns');
|
|
100
|
+
lines.push(` ${plain(name)}`);
|
|
101
|
+
for (const rawItem of optionalArray(column['items'] ?? column['tarjetas'], 'diagram.columns[].items')) {
|
|
102
|
+
const item = asNamedRecord(rawItem, 'diagram.columns[].items', 'name');
|
|
103
|
+
const label = requireString(item, 'name', 'diagram.columns[].items');
|
|
104
|
+
const assignee = optionalString(item, 'assignee') ?? optionalString(item, 'responsable');
|
|
105
|
+
const suffix = assignee !== undefined ? `@{ assigned: '${plain(assignee)}' }` : '';
|
|
106
|
+
lines.push(` ${ids.id(`${name}/${label}`)}[${plain(label)}]${suffix}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return lines.join('\n');
|
|
110
|
+
}
|
|
111
|
+
// --------------------------------------------------------------------------
|
|
112
|
+
export function quadrant(doc) {
|
|
113
|
+
const xAxis = requireArray(doc['xAxis'] ?? doc['ejeX'], 'diagram.xAxis');
|
|
114
|
+
const yAxis = requireArray(doc['yAxis'] ?? doc['ejeY'], 'diagram.yAxis');
|
|
115
|
+
const quadrants = requireArray(doc['quadrants'] ?? doc['cuadrantes'], 'diagram.quadrants');
|
|
116
|
+
const items = optionalArray(doc['items'] ?? doc['elementos'], 'diagram.items');
|
|
117
|
+
if (xAxis.length !== 2 || yAxis.length !== 2) {
|
|
118
|
+
fail('los ejes se declaran con dos extremos', 'ejemplo: xAxis: [Bajo esfuerzo, Alto esfuerzo]');
|
|
119
|
+
}
|
|
120
|
+
if (quadrants.length !== 4) {
|
|
121
|
+
fail('quadrant necesita exactamente 4 cuadrantes', `se recibieron ${quadrants.length}`);
|
|
122
|
+
}
|
|
123
|
+
const lines = ['quadrantChart'];
|
|
124
|
+
const title = optionalString(doc, 'title');
|
|
125
|
+
if (title !== undefined)
|
|
126
|
+
lines.push(` title ${plain(title)}`);
|
|
127
|
+
lines.push(` x-axis ${plain(nameOf(xAxis[0], 'diagram.xAxis'))} --> ${plain(nameOf(xAxis[1], 'diagram.xAxis'))}`);
|
|
128
|
+
lines.push(` y-axis ${plain(nameOf(yAxis[0], 'diagram.yAxis'))} --> ${plain(nameOf(yAxis[1], 'diagram.yAxis'))}`);
|
|
129
|
+
quadrants.forEach((q, i) => {
|
|
130
|
+
lines.push(` quadrant-${i + 1} ${plain(nameOf(q, 'diagram.quadrants'))}`);
|
|
131
|
+
});
|
|
132
|
+
for (const raw of items) {
|
|
133
|
+
const item = asRecord(raw, 'diagram.items');
|
|
134
|
+
const name = requireString(item, 'name', 'diagram.items');
|
|
135
|
+
const x = requireNumber(item, 'x', 'diagram.items');
|
|
136
|
+
const y = requireNumber(item, 'y', 'diagram.items');
|
|
137
|
+
for (const [axis, value] of [['x', x], ['y', y]]) {
|
|
138
|
+
if (value < 0 || value > 1) {
|
|
139
|
+
fail(`la coordenada ${axis} de "${name}" debe estar entre 0 y 1`, `valor recibido: ${value}; 0 es el extremo inicial del eje y 1 el final`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
lines.push(` ${plain(name)}: [${x}, ${y}]`);
|
|
143
|
+
}
|
|
144
|
+
return lines.join('\n');
|
|
145
|
+
}
|
|
146
|
+
// --------------------------------------------------------------------------
|
|
147
|
+
export function sankey(doc) {
|
|
148
|
+
const flows = requireArray(doc['flows'] ?? doc['flujos'], 'diagram.flows');
|
|
149
|
+
const lines = ['sankey-beta', ''];
|
|
150
|
+
for (const raw of flows) {
|
|
151
|
+
const flow = asRecord(raw, 'diagram.flows');
|
|
152
|
+
const from = requireString(flow, 'from', 'diagram.flows');
|
|
153
|
+
const to = requireString(flow, 'to', 'diagram.flows');
|
|
154
|
+
const value = requireNumber(flow, 'value', 'diagram.flows');
|
|
155
|
+
if (value <= 0)
|
|
156
|
+
fail(`el valor del flujo "${from} -> ${to}" debe ser positivo`, `valor recibido: ${value}`);
|
|
157
|
+
// El formato es CSV: las comas del texto se escapan entrecomillando.
|
|
158
|
+
lines.push(`${csv(from)},${csv(to)},${value}`);
|
|
159
|
+
}
|
|
160
|
+
return lines.join('\n');
|
|
161
|
+
}
|
|
162
|
+
function csv(text) {
|
|
163
|
+
return /[",]/.test(text) ? `"${text.replace(/"/g, '""')}"` : text;
|
|
164
|
+
}
|
|
165
|
+
// --------------------------------------------------------------------------
|
|
166
|
+
export function treemap(doc) {
|
|
167
|
+
const groups = optionalArray(doc['groups'] ?? doc['grupos'], 'diagram.groups');
|
|
168
|
+
const flat = optionalArray(doc['data'] ?? doc['items'], 'diagram.data');
|
|
169
|
+
if (groups.length === 0 && flat.length === 0) {
|
|
170
|
+
fail('treemap necesita groups o data', 'ejemplo: groups:\n - name: Backend\n items:\n - name: API\n value: 40');
|
|
171
|
+
}
|
|
172
|
+
const lines = ['treemap-beta'];
|
|
173
|
+
const leaf = (raw, indent, field) => {
|
|
174
|
+
const item = asRecord(raw, field);
|
|
175
|
+
const name = requireString(item, 'name', field);
|
|
176
|
+
const value = requireNumber(item, 'value', field);
|
|
177
|
+
if (value <= 0)
|
|
178
|
+
fail(`el valor de "${name}" debe ser positivo`, `valor recibido: ${value}`);
|
|
179
|
+
lines.push(`${indent}"${plain(name)}": ${value}`);
|
|
180
|
+
};
|
|
181
|
+
for (const raw of groups) {
|
|
182
|
+
const group = asRecord(raw, 'diagram.groups');
|
|
183
|
+
lines.push(`"${plain(requireString(group, 'name', 'diagram.groups'))}"`);
|
|
184
|
+
for (const item of requireArray(group['items'], 'diagram.groups[].items')) {
|
|
185
|
+
leaf(item, ' ', 'diagram.groups[].items');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
for (const item of flat)
|
|
189
|
+
leaf(item, '', 'diagram.data');
|
|
190
|
+
return lines.join('\n');
|
|
191
|
+
}
|
|
192
|
+
// --------------------------------------------------------------------------
|
|
193
|
+
export function radar(doc) {
|
|
194
|
+
const axes = requireArray(doc['axes'] ?? doc['ejes'], 'diagram.axes');
|
|
195
|
+
const series = optionalArray(doc['series'], 'diagram.series');
|
|
196
|
+
const values = optionalArray(doc['values'] ?? doc['valores'], 'diagram.values');
|
|
197
|
+
if (series.length === 0 && values.length === 0) {
|
|
198
|
+
fail('radar necesita series o values', 'ejemplo: values: [3, 4, 2]');
|
|
199
|
+
}
|
|
200
|
+
const axisNames = axes.map((a) => plain(nameOf(a, 'diagram.axes')));
|
|
201
|
+
if (axisNames.length < 3)
|
|
202
|
+
fail('un radar necesita al menos tres ejes', `se recibieron ${axisNames.length}`);
|
|
203
|
+
const ids = new IdFactory('ax');
|
|
204
|
+
const lines = ['radar-beta'];
|
|
205
|
+
const title = optionalString(doc, 'title');
|
|
206
|
+
if (title !== undefined)
|
|
207
|
+
lines.push(` title ${plain(title)}`);
|
|
208
|
+
lines.push(` axis ${axisNames.map((n) => `${ids.id(n)}["${n}"]`).join(', ')}`);
|
|
209
|
+
const curves = series.length > 0
|
|
210
|
+
? series.map((raw) => {
|
|
211
|
+
const s = asRecord(raw, 'diagram.series');
|
|
212
|
+
return { name: requireString(s, 'name', 'diagram.series'), values: requireArray(s['values'], 'diagram.series[].values') };
|
|
213
|
+
})
|
|
214
|
+
: [{ name: optionalString(doc, 'seriesName') ?? 'Actual', values }];
|
|
215
|
+
const curveIds = new IdFactory('c');
|
|
216
|
+
for (const curve of curves) {
|
|
217
|
+
if (curve.values.length !== axisNames.length) {
|
|
218
|
+
fail(`la serie "${curve.name}" tiene ${curve.values.length} valores y hay ${axisNames.length} ejes`, 'debe haber exactamente un valor por eje, en el mismo orden');
|
|
219
|
+
}
|
|
220
|
+
const numbers = curve.values.map((v) => {
|
|
221
|
+
const n = typeof v === 'number' ? v : Number(v);
|
|
222
|
+
if (!Number.isFinite(n))
|
|
223
|
+
fail(`los valores de "${curve.name}" deben ser numericos`, `valor recibido: ${String(v)}`);
|
|
224
|
+
return n;
|
|
225
|
+
});
|
|
226
|
+
lines.push(` curve ${curveIds.id(curve.name)}["${plain(curve.name)}"]{${numbers.join(', ')}}`);
|
|
227
|
+
}
|
|
228
|
+
const max = optionalNumber(doc, 'max', 'diagram.max');
|
|
229
|
+
if (max !== undefined)
|
|
230
|
+
lines.push(` max ${max}`);
|
|
231
|
+
const min = optionalNumber(doc, 'min', 'diagram.min');
|
|
232
|
+
if (min !== undefined)
|
|
233
|
+
lines.push(` min ${min}`);
|
|
234
|
+
return lines.join('\n');
|
|
235
|
+
}
|
|
236
|
+
function toNode(raw, field) {
|
|
237
|
+
if (typeof raw === 'string')
|
|
238
|
+
return { name: raw.trim(), children: [] };
|
|
239
|
+
const record = asRecord(raw, field);
|
|
240
|
+
const name = requireString(record, 'name', field);
|
|
241
|
+
const rawChildren = record['children'] ?? record['items'] ?? record['branches'];
|
|
242
|
+
return {
|
|
243
|
+
name,
|
|
244
|
+
children: optionalArray(rawChildren, `${field}.children`).map((c) => toNode(c, `${field}.children`)),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
export function mindmap(doc) {
|
|
248
|
+
const root = requireString(doc, 'root', 'diagram.root');
|
|
249
|
+
const branches = requireArray(doc['branches'] ?? doc['items'], 'diagram.branches');
|
|
250
|
+
const lines = ['mindmap', ` root((${plain(root)}))`];
|
|
251
|
+
const walk = (node, depth) => {
|
|
252
|
+
lines.push(`${' '.repeat(depth)}${plain(node.name)}`);
|
|
253
|
+
for (const child of node.children)
|
|
254
|
+
walk(child, depth + 1);
|
|
255
|
+
};
|
|
256
|
+
for (const raw of branches)
|
|
257
|
+
walk(toNode(raw, 'diagram.branches'), 2);
|
|
258
|
+
return lines.join('\n');
|
|
259
|
+
}
|
|
260
|
+
// --------------------------------------------------------------------------
|
|
261
|
+
export function block(doc) {
|
|
262
|
+
const rows = requireArray(doc['rows'] ?? doc['filas'], 'diagram.rows');
|
|
263
|
+
const widest = Math.max(...rows.map((r) => optionalArray(r, 'diagram.rows[]').length));
|
|
264
|
+
if (widest === 0)
|
|
265
|
+
fail('cada fila de diagram.rows debe tener al menos un bloque');
|
|
266
|
+
const ids = new IdFactory('b');
|
|
267
|
+
const lines = ['block-beta', ` columns ${widest}`];
|
|
268
|
+
for (const rawRow of rows) {
|
|
269
|
+
const cells = requireArray(rawRow, 'diagram.rows[]');
|
|
270
|
+
const rendered = cells.map((cell) => {
|
|
271
|
+
const item = asNamedRecord(cell, 'diagram.rows[]', 'name');
|
|
272
|
+
const name = requireString(item, 'name', 'diagram.rows[]');
|
|
273
|
+
const span = optionalNumber(item, 'span', 'diagram.rows[]');
|
|
274
|
+
const id = ids.id(name);
|
|
275
|
+
// Un bloque que ocupa varias columnas se declara con `id:n`.
|
|
276
|
+
const width = span !== undefined && span > 1 ? `:${Math.round(span)}` : '';
|
|
277
|
+
return `${id}["${plain(name)}"]${width}`;
|
|
278
|
+
});
|
|
279
|
+
// Se completa la fila para que la rejilla no descuadre.
|
|
280
|
+
const used = cells.reduce((total, cell) => {
|
|
281
|
+
const item = typeof cell === 'string' ? {} : asRecord(cell, 'diagram.rows[]');
|
|
282
|
+
const span = optionalNumber(item, 'span', 'diagram.rows[]');
|
|
283
|
+
return total + (span !== undefined && span > 1 ? Math.round(span) : 1);
|
|
284
|
+
}, 0);
|
|
285
|
+
lines.push(` ${rendered.join(' ')}`);
|
|
286
|
+
if (used < widest)
|
|
287
|
+
lines.push(` space:${widest - used}`);
|
|
288
|
+
}
|
|
289
|
+
return lines.join('\n');
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=diagram-product.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-product.js","sourceRoot":"","sources":["../../src/dsl/diagram-product.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos tecnicos que se dibujan con PlantUML: modelo de datos, casos de uso,
|
|
3
|
+
* componentes, despliegue, bocetos de interfaz, estructuras de datos y
|
|
4
|
+
* descomposicion del trabajo.
|
|
5
|
+
*
|
|
6
|
+
* Todos comparten el mismo principio que el resto del DSL: el autor declara
|
|
7
|
+
* nombres y relaciones, y el compilador se encarga de la sintaxis del motor.
|
|
8
|
+
*/
|
|
9
|
+
export declare function entityRelationship(doc: Record<string, unknown>): string;
|
|
10
|
+
export declare function useCase(doc: Record<string, unknown>): string;
|
|
11
|
+
export declare function componentDiagram(doc: Record<string, unknown>): string;
|
|
12
|
+
export declare function deployment(doc: Record<string, unknown>): string;
|
|
13
|
+
/**
|
|
14
|
+
* Boceto de interfaz con Salt, la notacion de mockups de PlantUML.
|
|
15
|
+
*
|
|
16
|
+
* Salt maquetea por columnas separadas con `|`, asi que cada fila del DSL se
|
|
17
|
+
* traduce a una fila de la rejilla.
|
|
18
|
+
*/
|
|
19
|
+
export declare function wireframe(doc: Record<string, unknown>): string;
|
|
20
|
+
export declare function jsonTree(doc: Record<string, unknown>): string;
|
|
21
|
+
export declare function yamlTree(doc: Record<string, unknown>): string;
|
|
22
|
+
/** Descomposicion del trabajo: arbol jerarquico con la notacion de PlantUML. */
|
|
23
|
+
export declare function workBreakdown(doc: Record<string, unknown>): string;
|
|
24
|
+
/** Mapa mental con PlantUML; es el respaldo de la version de Mermaid. */
|
|
25
|
+
export declare function plantUmlMindmap(doc: Record<string, unknown>): string;
|
|
26
|
+
/** Cronograma con PlantUML; es el respaldo de la version de Mermaid. */
|
|
27
|
+
export declare function plantUmlGantt(doc: Record<string, unknown>): string;
|
|
28
|
+
//# sourceMappingURL=diagram-technical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-technical.d.ts","sourceRoot":"","sources":["../../src/dsl/diagram-technical.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAsDvE;AAuBD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAyC5D;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA4CrE;AAMD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAuC/D;AAcD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAyC9D;AASD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAI7D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAI7D;AAqDD,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAYlE;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAYpE;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAyBlE"}
|