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.
Files changed (233) hide show
  1. package/AGENTS.md +371 -0
  2. package/LICENSE +21 -0
  3. package/README.md +837 -0
  4. package/bin/docviz-mcp.mjs +10 -0
  5. package/bin/docviz.mjs +11 -0
  6. package/dist/build/builder.d.ts +62 -0
  7. package/dist/build/builder.d.ts.map +1 -0
  8. package/dist/build/builder.js +337 -0
  9. package/dist/build/builder.js.map +1 -0
  10. package/dist/build/diff.d.ts +64 -0
  11. package/dist/build/diff.d.ts.map +1 -0
  12. package/dist/build/diff.js +156 -0
  13. package/dist/build/diff.js.map +1 -0
  14. package/dist/build/doctor.d.ts +39 -0
  15. package/dist/build/doctor.d.ts.map +1 -0
  16. package/dist/build/doctor.js +190 -0
  17. package/dist/build/doctor.js.map +1 -0
  18. package/dist/build/init.d.ts +28 -0
  19. package/dist/build/init.d.ts.map +1 -0
  20. package/dist/build/init.js +274 -0
  21. package/dist/build/init.js.map +1 -0
  22. package/dist/build/preview.d.ts +13 -0
  23. package/dist/build/preview.d.ts.map +1 -0
  24. package/dist/build/preview.js +277 -0
  25. package/dist/build/preview.js.map +1 -0
  26. package/dist/build/skill.d.ts +41 -0
  27. package/dist/build/skill.d.ts.map +1 -0
  28. package/dist/build/skill.js +63 -0
  29. package/dist/build/skill.js.map +1 -0
  30. package/dist/build/verify.d.ts +26 -0
  31. package/dist/build/verify.d.ts.map +1 -0
  32. package/dist/build/verify.js +99 -0
  33. package/dist/build/verify.js.map +1 -0
  34. package/dist/cli.d.ts +20 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +427 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/config/load.d.ts +32 -0
  39. package/dist/config/load.d.ts.map +1 -0
  40. package/dist/config/load.js +279 -0
  41. package/dist/config/load.js.map +1 -0
  42. package/dist/config/types.d.ts +89 -0
  43. package/dist/config/types.d.ts.map +1 -0
  44. package/dist/config/types.js +5 -0
  45. package/dist/config/types.js.map +1 -0
  46. package/dist/core/cache.d.ts +32 -0
  47. package/dist/core/cache.d.ts.map +1 -0
  48. package/dist/core/cache.js +69 -0
  49. package/dist/core/cache.js.map +1 -0
  50. package/dist/core/errors.d.ts +115 -0
  51. package/dist/core/errors.d.ts.map +1 -0
  52. package/dist/core/errors.js +164 -0
  53. package/dist/core/errors.js.map +1 -0
  54. package/dist/core/hash.d.ts +57 -0
  55. package/dist/core/hash.d.ts.map +1 -0
  56. package/dist/core/hash.js +0 -0
  57. package/dist/core/hash.js.map +1 -0
  58. package/dist/core/package-version.d.ts +9 -0
  59. package/dist/core/package-version.d.ts.map +1 -0
  60. package/dist/core/package-version.js +44 -0
  61. package/dist/core/package-version.js.map +1 -0
  62. package/dist/core/paths.d.ts +46 -0
  63. package/dist/core/paths.d.ts.map +1 -0
  64. package/dist/core/paths.js +105 -0
  65. package/dist/core/paths.js.map +1 -0
  66. package/dist/core/registry.d.ts +24 -0
  67. package/dist/core/registry.d.ts.map +1 -0
  68. package/dist/core/registry.js +72 -0
  69. package/dist/core/registry.js.map +1 -0
  70. package/dist/core/types.d.ts +78 -0
  71. package/dist/core/types.d.ts.map +1 -0
  72. package/dist/core/types.js +11 -0
  73. package/dist/core/types.js.map +1 -0
  74. package/dist/dsl/architecture.d.ts +15 -0
  75. package/dist/dsl/architecture.d.ts.map +1 -0
  76. package/dist/dsl/architecture.js +242 -0
  77. package/dist/dsl/architecture.js.map +1 -0
  78. package/dist/dsl/catalog.d.ts +62 -0
  79. package/dist/dsl/catalog.d.ts.map +1 -0
  80. package/dist/dsl/catalog.en.d.ts +18 -0
  81. package/dist/dsl/catalog.en.d.ts.map +1 -0
  82. package/dist/dsl/catalog.en.js +299 -0
  83. package/dist/dsl/catalog.en.js.map +1 -0
  84. package/dist/dsl/catalog.js +1082 -0
  85. package/dist/dsl/catalog.js.map +1 -0
  86. package/dist/dsl/chart.d.ts +14 -0
  87. package/dist/dsl/chart.d.ts.map +1 -0
  88. package/dist/dsl/chart.js +435 -0
  89. package/dist/dsl/chart.js.map +1 -0
  90. package/dist/dsl/compile.d.ts +31 -0
  91. package/dist/dsl/compile.d.ts.map +1 -0
  92. package/dist/dsl/compile.js +120 -0
  93. package/dist/dsl/compile.js.map +1 -0
  94. package/dist/dsl/diagram-bpmn.d.ts +13 -0
  95. package/dist/dsl/diagram-bpmn.d.ts.map +1 -0
  96. package/dist/dsl/diagram-bpmn.js +215 -0
  97. package/dist/dsl/diagram-bpmn.js.map +1 -0
  98. package/dist/dsl/diagram-product.d.ts +15 -0
  99. package/dist/dsl/diagram-product.d.ts.map +1 -0
  100. package/dist/dsl/diagram-product.js +291 -0
  101. package/dist/dsl/diagram-product.js.map +1 -0
  102. package/dist/dsl/diagram-technical.d.ts +28 -0
  103. package/dist/dsl/diagram-technical.d.ts.map +1 -0
  104. package/dist/dsl/diagram-technical.js +365 -0
  105. package/dist/dsl/diagram-technical.js.map +1 -0
  106. package/dist/dsl/diagram.d.ts +22 -0
  107. package/dist/dsl/diagram.d.ts.map +1 -0
  108. package/dist/dsl/diagram.js +542 -0
  109. package/dist/dsl/diagram.js.map +1 -0
  110. package/dist/dsl/fallbacks-d2.d.ts +27 -0
  111. package/dist/dsl/fallbacks-d2.d.ts.map +1 -0
  112. package/dist/dsl/fallbacks-d2.js +265 -0
  113. package/dist/dsl/fallbacks-d2.js.map +1 -0
  114. package/dist/dsl/fallbacks.d.ts +25 -0
  115. package/dist/dsl/fallbacks.d.ts.map +1 -0
  116. package/dist/dsl/fallbacks.js +264 -0
  117. package/dist/dsl/fallbacks.js.map +1 -0
  118. package/dist/dsl/fields.d.ts +93 -0
  119. package/dist/dsl/fields.d.ts.map +1 -0
  120. package/dist/dsl/fields.js +233 -0
  121. package/dist/dsl/fields.js.map +1 -0
  122. package/dist/dsl/index.d.ts +50 -0
  123. package/dist/dsl/index.d.ts.map +1 -0
  124. package/dist/dsl/index.js +114 -0
  125. package/dist/dsl/index.js.map +1 -0
  126. package/dist/dsl/util.d.ts +105 -0
  127. package/dist/dsl/util.d.ts.map +1 -0
  128. package/dist/dsl/util.js +261 -0
  129. package/dist/dsl/util.js.map +1 -0
  130. package/dist/index.d.ts +27 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +21 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/markdown/scan.d.ts +73 -0
  135. package/dist/markdown/scan.d.ts.map +1 -0
  136. package/dist/markdown/scan.js +150 -0
  137. package/dist/markdown/scan.js.map +1 -0
  138. package/dist/markdown/transform.d.ts +28 -0
  139. package/dist/markdown/transform.d.ts.map +1 -0
  140. package/dist/markdown/transform.js +38 -0
  141. package/dist/markdown/transform.js.map +1 -0
  142. package/dist/mcp/server.d.ts +18 -0
  143. package/dist/mcp/server.d.ts.map +1 -0
  144. package/dist/mcp/server.js +118 -0
  145. package/dist/mcp/server.js.map +1 -0
  146. package/dist/mcp/tools.d.ts +118 -0
  147. package/dist/mcp/tools.d.ts.map +1 -0
  148. package/dist/mcp/tools.js +573 -0
  149. package/dist/mcp/tools.js.map +1 -0
  150. package/dist/renderers/base.d.ts +18 -0
  151. package/dist/renderers/base.d.ts.map +1 -0
  152. package/dist/renderers/base.js +59 -0
  153. package/dist/renderers/base.js.map +1 -0
  154. package/dist/renderers/bpmn.d.ts +68 -0
  155. package/dist/renderers/bpmn.d.ts.map +1 -0
  156. package/dist/renderers/bpmn.js +158 -0
  157. package/dist/renderers/bpmn.js.map +1 -0
  158. package/dist/renderers/browser.d.ts +30 -0
  159. package/dist/renderers/browser.d.ts.map +1 -0
  160. package/dist/renderers/browser.js +143 -0
  161. package/dist/renderers/browser.js.map +1 -0
  162. package/dist/renderers/color-scheme.d.ts +40 -0
  163. package/dist/renderers/color-scheme.d.ts.map +1 -0
  164. package/dist/renderers/color-scheme.js +122 -0
  165. package/dist/renderers/color-scheme.js.map +1 -0
  166. package/dist/renderers/d2.d.ts +37 -0
  167. package/dist/renderers/d2.d.ts.map +1 -0
  168. package/dist/renderers/d2.js +108 -0
  169. package/dist/renderers/d2.js.map +1 -0
  170. package/dist/renderers/graphviz.d.ts +33 -0
  171. package/dist/renderers/graphviz.d.ts.map +1 -0
  172. package/dist/renderers/graphviz.js +88 -0
  173. package/dist/renderers/graphviz.js.map +1 -0
  174. package/dist/renderers/in-page.d.ts +33 -0
  175. package/dist/renderers/in-page.d.ts.map +1 -0
  176. package/dist/renderers/in-page.js +76 -0
  177. package/dist/renderers/in-page.js.map +1 -0
  178. package/dist/renderers/index.d.ts +20 -0
  179. package/dist/renderers/index.d.ts.map +1 -0
  180. package/dist/renderers/index.js +94 -0
  181. package/dist/renderers/index.js.map +1 -0
  182. package/dist/renderers/kroki.d.ts +38 -0
  183. package/dist/renderers/kroki.d.ts.map +1 -0
  184. package/dist/renderers/kroki.js +151 -0
  185. package/dist/renderers/kroki.js.map +1 -0
  186. package/dist/renderers/likec4-svg.d.ts +82 -0
  187. package/dist/renderers/likec4-svg.d.ts.map +1 -0
  188. package/dist/renderers/likec4-svg.js +435 -0
  189. package/dist/renderers/likec4-svg.js.map +1 -0
  190. package/dist/renderers/likec4.d.ts +22 -0
  191. package/dist/renderers/likec4.d.ts.map +1 -0
  192. package/dist/renderers/likec4.js +77 -0
  193. package/dist/renderers/likec4.js.map +1 -0
  194. package/dist/renderers/mermaid.d.ts +64 -0
  195. package/dist/renderers/mermaid.d.ts.map +1 -0
  196. package/dist/renderers/mermaid.js +196 -0
  197. package/dist/renderers/mermaid.js.map +1 -0
  198. package/dist/renderers/plantuml.d.ts +56 -0
  199. package/dist/renderers/plantuml.d.ts.map +1 -0
  200. package/dist/renderers/plantuml.js +195 -0
  201. package/dist/renderers/plantuml.js.map +1 -0
  202. package/dist/renderers/svg-utils.d.ts +46 -0
  203. package/dist/renderers/svg-utils.d.ts.map +1 -0
  204. package/dist/renderers/svg-utils.js +439 -0
  205. package/dist/renderers/svg-utils.js.map +1 -0
  206. package/dist/renderers/svgbob.d.ts +26 -0
  207. package/dist/renderers/svgbob.d.ts.map +1 -0
  208. package/dist/renderers/svgbob.js +70 -0
  209. package/dist/renderers/svgbob.js.map +1 -0
  210. package/dist/renderers/vega-lite.d.ts +18 -0
  211. package/dist/renderers/vega-lite.d.ts.map +1 -0
  212. package/dist/renderers/vega-lite.js +94 -0
  213. package/dist/renderers/vega-lite.js.map +1 -0
  214. package/dist/themes/index.d.ts +17 -0
  215. package/dist/themes/index.d.ts.map +1 -0
  216. package/dist/themes/index.js +419 -0
  217. package/dist/themes/index.js.map +1 -0
  218. package/dist/themes/types.d.ts +99 -0
  219. package/dist/themes/types.d.ts.map +1 -0
  220. package/dist/themes/types.js +9 -0
  221. package/dist/themes/types.js.map +1 -0
  222. package/eval/casos.json +513 -0
  223. package/package.json +114 -0
  224. package/scripts/capture-preview.mjs +101 -0
  225. package/scripts/check-github.mjs +128 -0
  226. package/scripts/eval.d.mts +8 -0
  227. package/scripts/eval.mjs +284 -0
  228. package/scripts/fetch-plantuml.mjs +122 -0
  229. package/scripts/generate-catalog-doc.mjs +106 -0
  230. package/scripts/rasterize.mjs +68 -0
  231. package/scripts/sync-docs.mjs +158 -0
  232. package/skills/docviz/SKILL.md +111 -0
  233. 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"}