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,156 @@
1
+ /**
2
+ * Comparacion de dos arboles de documentos.
3
+ *
4
+ * Responde a una pregunta que el build no responde: **que diagramas cambiaron**
5
+ * entre dos versiones de la documentacion. En una revision de codigo, el
6
+ * diff de un `.md` muestra que se toco un bloque YAML, pero no si el dibujo
7
+ * resultante es distinto; y el nombre del recurso generado cambia tambien
8
+ * cuando solo cambio el tema o la version del motor.
9
+ *
10
+ * Por eso la identidad que se compara aqui no es la del recurso, sino la del
11
+ * contenido efectivo: `motor + fuente compilada`. Un cambio de tema no aparece
12
+ * como cambio de diagrama, y reordenar el YAML sin alterar el resultado
13
+ * tampoco.
14
+ */
15
+ import { readFile } from 'node:fs/promises';
16
+ import path from 'node:path';
17
+ import { fingerprint } from '../core/hash.js';
18
+ import { toPosix } from '../core/paths.js';
19
+ import { compileDsl, DSL_LANGUAGES } from '../dsl/index.js';
20
+ import { scanDocument } from '../markdown/scan.js';
21
+ import { buildRegistry } from '../renderers/index.js';
22
+ import { collectMarkdown } from './builder.js';
23
+ /**
24
+ * Compara los diagramas de `baseDir` con los de `headDir`.
25
+ *
26
+ * No renderiza: compila el DSL y se queda con la fuente que recibiria el motor.
27
+ * Un lado invalido no aborta la comparacion —la version antigua puede estar
28
+ * rota y aun asi interesa saber que cambio— pero sus bloques se reportan.
29
+ */
30
+ export async function diff(config, baseDir, headDir) {
31
+ const registry = buildRegistry(config);
32
+ try {
33
+ const base = await inventory(baseDir, registry, 'base');
34
+ const head = await inventory(headDir, registry, 'head');
35
+ const entries = [];
36
+ const summary = { added: 0, removed: 0, changed: 0, unchanged: 0 };
37
+ for (const [key, headEntry] of head.entries) {
38
+ const baseEntry = base.entries.get(key);
39
+ if (baseEntry === undefined) {
40
+ entries.push({ status: 'added', ...describe(headEntry), headHash: headEntry.hash });
41
+ summary.added += 1;
42
+ continue;
43
+ }
44
+ if (baseEntry.hash === headEntry.hash && baseEntry.engine === headEntry.engine) {
45
+ entries.push({
46
+ status: 'unchanged',
47
+ ...describe(headEntry),
48
+ baseHash: baseEntry.hash,
49
+ headHash: headEntry.hash,
50
+ });
51
+ summary.unchanged += 1;
52
+ continue;
53
+ }
54
+ entries.push({
55
+ status: 'changed',
56
+ ...describe(headEntry),
57
+ ...(baseEntry.engine !== headEntry.engine ? { previousEngine: baseEntry.engine } : {}),
58
+ baseHash: baseEntry.hash,
59
+ headHash: headEntry.hash,
60
+ });
61
+ summary.changed += 1;
62
+ }
63
+ for (const [key, baseEntry] of base.entries) {
64
+ if (head.entries.has(key))
65
+ continue;
66
+ entries.push({ status: 'removed', ...describe(baseEntry), baseHash: baseEntry.hash });
67
+ summary.removed += 1;
68
+ }
69
+ entries.sort((a, b) => (a.file === b.file ? a.line - b.line : a.file < b.file ? -1 : 1));
70
+ return {
71
+ base: toPosix(baseDir),
72
+ head: toPosix(headDir),
73
+ entries,
74
+ issues: [...base.issues, ...head.issues],
75
+ summary,
76
+ };
77
+ }
78
+ finally {
79
+ await registry.disposeAll().catch(() => undefined);
80
+ }
81
+ }
82
+ /** `true` si algo cambio entre las dos versiones. */
83
+ export function hasChanges(result) {
84
+ return result.summary.added + result.summary.removed + result.summary.changed > 0;
85
+ }
86
+ function describe(entry) {
87
+ return { file: entry.file, title: entry.title, line: entry.line, lang: entry.lang, engine: entry.engine };
88
+ }
89
+ /**
90
+ * Recorre un directorio y devuelve sus diagramas indexados.
91
+ *
92
+ * La clave es `archivo::titulo::repeticion`. Usar el titulo y no la linea es
93
+ * deliberado: insertar un parrafo desplaza todos los bloques del documento, y
94
+ * un diff que marca doce diagramas como nuevos por eso no sirve de nada.
95
+ */
96
+ async function inventory(dir, registry, side) {
97
+ const entries = new Map();
98
+ const issues = [];
99
+ const files = await collectMarkdown(dir);
100
+ for (const file of files) {
101
+ const relative = toPosix(path.relative(dir, file));
102
+ const text = await readFile(file, 'utf8');
103
+ const scanned = scanDocument(text, {
104
+ resolveLanguage: (lang) => registry.resolve(lang),
105
+ compileDsl: (lang, source) => compileDsl(lang, source, (engine) => registry.has(engine)),
106
+ dslLanguages: DSL_LANGUAGES,
107
+ });
108
+ for (const issue of scanned.errors) {
109
+ issues.push({
110
+ side,
111
+ file: relative,
112
+ line: issue.line,
113
+ message: issue.error instanceof Error ? issue.error.message : String(issue.error),
114
+ });
115
+ }
116
+ const seen = new Map();
117
+ for (const block of scanned.blocks) {
118
+ const base = `${relative}::${block.title}`;
119
+ const occurrence = (seen.get(base) ?? 0) + 1;
120
+ seen.set(base, occurrence);
121
+ entries.set(`${base}::${occurrence}`, {
122
+ file: relative,
123
+ title: block.title,
124
+ line: block.line,
125
+ lang: block.lang,
126
+ engine: block.rendererType,
127
+ hash: fingerprint({ engine: block.rendererType, source: block.source }),
128
+ });
129
+ }
130
+ }
131
+ return { entries, issues };
132
+ }
133
+ /** Reporte legible, en el orden en que aparecen los documentos. */
134
+ export function formatDiff(result, options = {}) {
135
+ const marks = { added: '+', removed: '-', changed: '~', unchanged: ' ' };
136
+ const shown = result.entries.filter((e) => options.all === true || e.status !== 'unchanged');
137
+ const lines = ['', `base: ${result.base}`, `head: ${result.head}`, ''];
138
+ if (shown.length === 0) {
139
+ lines.push(' sin cambios en los diagramas');
140
+ }
141
+ else {
142
+ const width = Math.max(...shown.map((e) => `${e.file}:${e.line}`.length));
143
+ for (const entry of shown) {
144
+ const motor = entry.previousEngine === undefined ? entry.engine : `${entry.previousEngine} -> ${entry.engine}`;
145
+ lines.push(` ${marks[entry.status]} ${`${entry.file}:${entry.line}`.padEnd(width)} "${entry.title}" (${entry.lang}, ${motor})`);
146
+ }
147
+ }
148
+ const { added, removed, changed, unchanged } = result.summary;
149
+ lines.push('', `resumen: ${added} nuevo(s), ${removed} eliminado(s), ${changed} modificado(s), ${unchanged} igual(es)`);
150
+ for (const issue of result.issues) {
151
+ lines.push(`AVISO [${issue.side}] ${issue.file}:${issue.line} no se pudo interpretar: ${issue.message}`);
152
+ }
153
+ lines.push('');
154
+ return lines.join('\n');
155
+ }
156
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/build/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Diagnostico del entorno.
3
+ *
4
+ * Con el sistema de respaldos, "esta instalado" dejo de ser una respuesta de si
5
+ * o no: sin Java hay tipos que se dibujan igual con otro motor, otros que se
6
+ * degradan y otros que no se pueden dibujar. Este comando dice exactamente cual
7
+ * es cual, en lugar de dejar que se descubra cuando falla un build.
8
+ */
9
+ import type { DocVizConfig } from '../config/types.js';
10
+ export type Estado = 'ok' | 'ausente' | 'no-usado';
11
+ export interface Requisito {
12
+ nombre: string;
13
+ estado: Estado;
14
+ detalle: string;
15
+ /** Que hacer si falta. */
16
+ remedio?: string;
17
+ }
18
+ export interface DiagnosticoTipo {
19
+ tipo: string;
20
+ motorPreferido: string;
21
+ /** Motor que se usaria ahora mismo, o `undefined` si ninguno esta disponible. */
22
+ motorEfectivo?: string;
23
+ }
24
+ export interface Diagnostico {
25
+ requisitos: Requisito[];
26
+ motoresDisponibles: string[];
27
+ motoresAusentes: string[];
28
+ /** Tipos que se dibujarian con su motor preferido. */
29
+ intactos: DiagnosticoTipo[];
30
+ /** Tipos que caerian a un respaldo: se dibujan, con otro aspecto. */
31
+ degradados: DiagnosticoTipo[];
32
+ /** Tipos que hoy no se pueden dibujar. */
33
+ imposibles: DiagnosticoTipo[];
34
+ ok: boolean;
35
+ }
36
+ export declare function diagnosticar(config: DocVizConfig): Promise<Diagnostico>;
37
+ /** Informe legible del diagnostico. */
38
+ export declare function formatearDiagnostico(d: Diagnostico): string;
39
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/build/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,qEAAqE;IACrE,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,0CAA0C;IAC1C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,EAAE,EAAE,OAAO,CAAC;CACb;AAqBD,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6G7E;AAQD,uCAAuC;AACvC,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CA6C3D"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Diagnostico del entorno.
3
+ *
4
+ * Con el sistema de respaldos, "esta instalado" dejo de ser una respuesta de si
5
+ * o no: sin Java hay tipos que se dibujan igual con otro motor, otros que se
6
+ * degradan y otros que no se pueden dibujar. Este comando dice exactamente cual
7
+ * es cual, en lugar de dejar que se descubra cuando falla un build.
8
+ */
9
+ import { access, constants } from 'node:fs/promises';
10
+ import { execFile } from 'node:child_process';
11
+ import { promisify } from 'node:util';
12
+ import { TYPE_CATALOG } from '../dsl/index.js';
13
+ import { compilerEngines } from '../dsl/compile.js';
14
+ import { buildRegistry } from '../renderers/index.js';
15
+ import { findBrowser } from '../renderers/browser.js';
16
+ import { resolveJarPath } from '../renderers/plantuml.js';
17
+ import { resolveFromRoot } from '../config/load.js';
18
+ const run = promisify(execFile);
19
+ async function existe(ruta) {
20
+ try {
21
+ await access(ruta, constants.R_OK);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ async function versionDeJava(ejecutable) {
29
+ try {
30
+ // Java escribe su version en stderr, no en stdout.
31
+ const { stderr } = await run(ejecutable, ['-version'], { timeout: 20_000 });
32
+ return stderr.split('\n')[0]?.trim();
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
38
+ export async function diagnosticar(config) {
39
+ const requisitos = [];
40
+ const r = config.renderers;
41
+ requisitos.push({
42
+ nombre: 'Node.js',
43
+ estado: 'ok',
44
+ detalle: process.version,
45
+ });
46
+ // --- Java y PlantUML ---
47
+ const java = r.plantuml.java ?? process.env['DOCVIZ_JAVA'] ?? 'java';
48
+ const versionJava = r.plantuml.enabled ? await versionDeJava(java) : undefined;
49
+ if (!r.plantuml.enabled) {
50
+ requisitos.push({ nombre: 'Java', estado: 'no-usado', detalle: 'PlantUML esta deshabilitado' });
51
+ }
52
+ else if (versionJava !== undefined) {
53
+ requisitos.push({ nombre: 'Java', estado: 'ok', detalle: versionJava });
54
+ }
55
+ else {
56
+ requisitos.push({
57
+ nombre: 'Java',
58
+ estado: 'ausente',
59
+ detalle: `no se pudo ejecutar "${java}"`,
60
+ remedio: 'instala un JRE 8 o superior, o define renderers.plantuml.java',
61
+ });
62
+ }
63
+ // La ruta tiene que ser la misma que usara el renderer. Resolverla aqui
64
+ // contra la raiz del proyecto daba un falso negativo en todo proyecto que
65
+ // instale DocViz: el jar viaja dentro del paquete, no del proyecto.
66
+ const jar = r.plantuml.jar !== undefined ? resolveFromRoot(config, r.plantuml.jar) : resolveJarPath();
67
+ if (!r.plantuml.enabled) {
68
+ requisitos.push({ nombre: 'plantuml.jar', estado: 'no-usado', detalle: 'PlantUML esta deshabilitado' });
69
+ }
70
+ else if (await existe(jar)) {
71
+ requisitos.push({ nombre: 'plantuml.jar', estado: 'ok', detalle: jar });
72
+ }
73
+ else {
74
+ requisitos.push({
75
+ nombre: 'plantuml.jar',
76
+ estado: 'ausente',
77
+ detalle: `no esta en ${jar}`,
78
+ remedio: 'ejecuta `npx docviz setup`, o define renderers.plantuml.jar',
79
+ });
80
+ }
81
+ // --- Navegador ---
82
+ const necesitaNavegador = r.mermaid.enabled || r.bpmn.enabled;
83
+ const navegador = findBrowser(r.mermaid.browserPath ?? r.bpmn.browserPath);
84
+ if (!necesitaNavegador) {
85
+ requisitos.push({
86
+ nombre: 'Chromium',
87
+ estado: 'no-usado',
88
+ detalle: 'Mermaid y BPMN estan deshabilitados',
89
+ });
90
+ }
91
+ else if (navegador !== undefined) {
92
+ requisitos.push({ nombre: 'Chromium', estado: 'ok', detalle: navegador });
93
+ }
94
+ else {
95
+ requisitos.push({
96
+ nombre: 'Chromium',
97
+ estado: 'ausente',
98
+ detalle: 'no se encontro ningun navegador',
99
+ remedio: 'instala Google Chrome, exporta DOCVIZ_BROWSER_PATH o ejecuta `npx playwright install chromium`',
100
+ });
101
+ }
102
+ // --- Que motores quedan realmente utilizables ---
103
+ const registry = buildRegistry(config);
104
+ const registrados = new Set(registry.types());
105
+ await registry.disposeAll().catch(() => undefined);
106
+ const utilizable = (motor) => {
107
+ if (!registrados.has(motor))
108
+ return false;
109
+ if (motor === 'plantuml' || motor === 'plantuml-c4') {
110
+ return versionJava !== undefined && requisitos.some((q) => q.nombre === 'plantuml.jar' && q.estado === 'ok');
111
+ }
112
+ if (motor === 'mermaid' || motor === 'bpmn')
113
+ return navegador !== undefined;
114
+ return true;
115
+ };
116
+ const motoresDisponibles = [...registrados].filter(utilizable).sort();
117
+ const motoresAusentes = [...registrados].filter((m) => !utilizable(m)).sort();
118
+ const intactos = [];
119
+ const degradados = [];
120
+ const imposibles = [];
121
+ for (const spec of TYPE_CATALOG) {
122
+ // Solo cuentan los respaldos que ademas tienen compilador propio.
123
+ const conCompilador = compilerEngines(spec.type);
124
+ const candidatos = [spec.engine, ...(spec.fallbacks ?? [])].filter((m) => spec.lang === 'chart' || conCompilador.includes(m));
125
+ const efectivo = candidatos.find(utilizable);
126
+ const entrada = { tipo: spec.type, motorPreferido: spec.engine };
127
+ if (efectivo !== undefined)
128
+ entrada.motorEfectivo = efectivo;
129
+ if (efectivo === undefined)
130
+ imposibles.push(entrada);
131
+ else if (efectivo === spec.engine)
132
+ intactos.push(entrada);
133
+ else
134
+ degradados.push(entrada);
135
+ }
136
+ return {
137
+ requisitos,
138
+ motoresDisponibles,
139
+ motoresAusentes,
140
+ intactos,
141
+ degradados,
142
+ imposibles,
143
+ ok: imposibles.length === 0,
144
+ };
145
+ }
146
+ const SIMBOLO = {
147
+ ok: 'ok ',
148
+ ausente: 'FALTA',
149
+ 'no-usado': '- ',
150
+ };
151
+ /** Informe legible del diagnostico. */
152
+ export function formatearDiagnostico(d) {
153
+ const lineas = ['', 'Entorno', ''];
154
+ const ancho = Math.max(...d.requisitos.map((q) => q.nombre.length));
155
+ for (const q of d.requisitos) {
156
+ lineas.push(` ${SIMBOLO[q.estado]} ${q.nombre.padEnd(ancho)} ${q.detalle}`);
157
+ if (q.remedio !== undefined)
158
+ lineas.push(` ${' '.repeat(ancho)} -> ${q.remedio}`);
159
+ }
160
+ lineas.push('', 'Motores', '');
161
+ lineas.push(` disponibles: ${d.motoresDisponibles.join(', ') || 'ninguno'}`);
162
+ if (d.motoresAusentes.length > 0)
163
+ lineas.push(` no usables: ${d.motoresAusentes.join(', ')}`);
164
+ lineas.push('', 'Tipos', '');
165
+ lineas.push(` ${String(d.intactos.length).padStart(3)} se dibujan con su motor preferido`);
166
+ if (d.degradados.length > 0) {
167
+ lineas.push(` ${String(d.degradados.length).padStart(3)} usaran su respaldo:`);
168
+ for (const t of d.degradados) {
169
+ lineas.push(` ${t.tipo} (${t.motorPreferido} -> ${t.motorEfectivo})`);
170
+ }
171
+ }
172
+ if (d.imposibles.length > 0) {
173
+ lineas.push(` ${String(d.imposibles.length).padStart(3)} no se pueden dibujar:`);
174
+ // Se agrupan por motor: la accion que los arregla es la misma para todos.
175
+ const porMotor = new Map();
176
+ for (const t of d.imposibles) {
177
+ const lista = porMotor.get(t.motorPreferido) ?? [];
178
+ lista.push(t.tipo);
179
+ porMotor.set(t.motorPreferido, lista);
180
+ }
181
+ for (const [motor, tipos] of porMotor) {
182
+ lineas.push(` ${motor}: ${tipos.join(', ')}`);
183
+ }
184
+ }
185
+ lineas.push('', d.ok
186
+ ? 'Todo el catalogo se puede dibujar.'
187
+ : 'Falta algo del entorno: los tipos de arriba fallarian al compilar.', '');
188
+ return lineas.join('\n');
189
+ }
190
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/build/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Preparacion de un proyecto para usar DocViz.
3
+ *
4
+ * Adoptarlo a mano son cuatro archivos y cinco scripts, y el que se olvida
5
+ * siempre es `AGENTS.md`, justo el que hace que un agente escriba bien los
6
+ * bloques. Este comando deja el proyecto listo y no sobrescribe nada que ya
7
+ * exista: informa y sigue.
8
+ */
9
+ export interface InitOptions {
10
+ /** Raiz del proyecto donde se escribe. */
11
+ cwd: string;
12
+ /** Tema inicial. */
13
+ theme: string;
14
+ /** Sobrescribe los archivos que ya existan. */
15
+ force: boolean;
16
+ }
17
+ export interface InitResult {
18
+ creados: string[];
19
+ omitidos: string[];
20
+ /** Scripts que habria que anadir a package.json, si falta alguno. */
21
+ scriptsPendientes: Array<[string, string]>;
22
+ }
23
+ /** Scripts que forman el flujo de trabajo documentado. */
24
+ export declare const SCRIPTS: ReadonlyArray<readonly [string, string]>;
25
+ export declare function init(options: InitOptions): Promise<InitResult>;
26
+ /** Informe legible de lo que hizo `init`. */
27
+ export declare function formatearInit(result: InitResult, theme: string): string;
28
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/build/init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qEAAqE;IACrE,iBAAiB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C;AAED,0DAA0D;AAC1D,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5D,CAAC;AA4LF,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAgDpE;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgCvE"}