@imolko/create-ultra-reporter 2.1.23-beta

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 (182) hide show
  1. package/README.md +219 -0
  2. package/bin/classes/index.d.ts +0 -0
  3. package/bin/classes/index.js +2 -0
  4. package/bin/classes/index.js.map +1 -0
  5. package/bin/classes/logger.d.ts +42 -0
  6. package/bin/classes/logger.js +185 -0
  7. package/bin/classes/logger.js.map +1 -0
  8. package/bin/cli.d.ts +2 -0
  9. package/bin/cli.js +48 -0
  10. package/bin/cli.js.map +1 -0
  11. package/bin/commands/build.d.ts +2 -0
  12. package/bin/commands/build.js +151 -0
  13. package/bin/commands/build.js.map +1 -0
  14. package/bin/commands/create.d.ts +60 -0
  15. package/bin/commands/create.js +368 -0
  16. package/bin/commands/create.js.map +1 -0
  17. package/bin/commands/generate-documentation.d.ts +2 -0
  18. package/bin/commands/generate-documentation.js +249 -0
  19. package/bin/commands/generate-documentation.js.map +1 -0
  20. package/bin/commands/generate.d.ts +2 -0
  21. package/bin/commands/generate.js +79 -0
  22. package/bin/commands/generate.js.map +1 -0
  23. package/bin/commands/index.d.ts +6 -0
  24. package/bin/commands/index.js +16 -0
  25. package/bin/commands/index.js.map +1 -0
  26. package/bin/commands/init.d.ts +2 -0
  27. package/bin/commands/init.js +54 -0
  28. package/bin/commands/init.js.map +1 -0
  29. package/bin/commands/serve.d.ts +2 -0
  30. package/bin/commands/serve.js +124 -0
  31. package/bin/commands/serve.js.map +1 -0
  32. package/bin/commands/types.d.ts +65 -0
  33. package/bin/commands/types.js +9 -0
  34. package/bin/commands/types.js.map +1 -0
  35. package/bin/config/reader.d.ts +17 -0
  36. package/bin/config/reader.js +166 -0
  37. package/bin/config/reader.js.map +1 -0
  38. package/bin/config/types.d.ts +57 -0
  39. package/bin/config/types.js +21 -0
  40. package/bin/config/types.js.map +1 -0
  41. package/bin/data/documentation-folder.d.ts +1 -0
  42. package/bin/data/documentation-folder.js +5 -0
  43. package/bin/data/documentation-folder.js.map +1 -0
  44. package/bin/data/files-generated.d.ts +1 -0
  45. package/bin/data/files-generated.js +10 -0
  46. package/bin/data/files-generated.js.map +1 -0
  47. package/bin/data/index.d.ts +2 -0
  48. package/bin/data/index.js +8 -0
  49. package/bin/data/index.js.map +1 -0
  50. package/bin/pipeline/generate.d.ts +26 -0
  51. package/bin/pipeline/generate.js +269 -0
  52. package/bin/pipeline/generate.js.map +1 -0
  53. package/bin/reporters/data-loading.d.ts +121 -0
  54. package/bin/reporters/data-loading.js +398 -0
  55. package/bin/reporters/data-loading.js.map +1 -0
  56. package/bin/reporters/data-transformation.d.ts +101 -0
  57. package/bin/reporters/data-transformation.js +392 -0
  58. package/bin/reporters/data-transformation.js.map +1 -0
  59. package/bin/reporters/file-writing.d.ts +29 -0
  60. package/bin/reporters/file-writing.js +100 -0
  61. package/bin/reporters/file-writing.js.map +1 -0
  62. package/bin/reporters/generate-domain-documentation.d.ts +17 -0
  63. package/bin/reporters/generate-domain-documentation.js +161 -0
  64. package/bin/reporters/generate-domain-documentation.js.map +1 -0
  65. package/bin/reporters/generate-use-cases-documentation.d.ts +18 -0
  66. package/bin/reporters/generate-use-cases-documentation.js +123 -0
  67. package/bin/reporters/generate-use-cases-documentation.js.map +1 -0
  68. package/bin/reporters/rendering.d.ts +116 -0
  69. package/bin/reporters/rendering.js +385 -0
  70. package/bin/reporters/rendering.js.map +1 -0
  71. package/bin/reporters/templates/README.md +28 -0
  72. package/bin/reporters/templates/card.template.jsx +5 -0
  73. package/bin/reporters/templates/cards-container.template.jsx +5 -0
  74. package/bin/reporters/types.d.ts +190 -0
  75. package/bin/reporters/types.js +8 -0
  76. package/bin/reporters/types.js.map +1 -0
  77. package/bin/scaffold/assembler.d.ts +13 -0
  78. package/bin/scaffold/assembler.js +371 -0
  79. package/bin/scaffold/assembler.js.map +1 -0
  80. package/bin/scaffold/doc-assembler.d.ts +10 -0
  81. package/bin/scaffold/doc-assembler.js +113 -0
  82. package/bin/scaffold/doc-assembler.js.map +1 -0
  83. package/bin/scripts/add-import.d.ts +1 -0
  84. package/bin/scripts/add-import.js +26 -0
  85. package/bin/scripts/add-import.js.map +1 -0
  86. package/bin/scripts/converter.d.ts +6 -0
  87. package/bin/scripts/converter.js +120 -0
  88. package/bin/scripts/converter.js.map +1 -0
  89. package/bin/scripts/copy-files.d.ts +1 -0
  90. package/bin/scripts/copy-files.js +96 -0
  91. package/bin/scripts/copy-files.js.map +1 -0
  92. package/bin/scripts/create-folder.d.ts +1 -0
  93. package/bin/scripts/create-folder.js +23 -0
  94. package/bin/scripts/create-folder.js.map +1 -0
  95. package/bin/scripts/delete-paths.d.ts +1 -0
  96. package/bin/scripts/delete-paths.js +34 -0
  97. package/bin/scripts/delete-paths.js.map +1 -0
  98. package/bin/scripts/exists-file.d.ts +5 -0
  99. package/bin/scripts/exists-file.js +12 -0
  100. package/bin/scripts/exists-file.js.map +1 -0
  101. package/bin/scripts/generate-track-artifacts.d.ts +1 -0
  102. package/bin/scripts/generate-track-artifacts.js +59 -0
  103. package/bin/scripts/generate-track-artifacts.js.map +1 -0
  104. package/bin/scripts/get-artifacts.d.ts +1 -0
  105. package/bin/scripts/get-artifacts.js +38 -0
  106. package/bin/scripts/get-artifacts.js.map +1 -0
  107. package/bin/scripts/get-directories.d.ts +1 -0
  108. package/bin/scripts/get-directories.js +10 -0
  109. package/bin/scripts/get-directories.js.map +1 -0
  110. package/bin/scripts/get-file.d.ts +9 -0
  111. package/bin/scripts/get-file.js +38 -0
  112. package/bin/scripts/get-file.js.map +1 -0
  113. package/bin/scripts/labels.d.ts +35 -0
  114. package/bin/scripts/labels.js +108 -0
  115. package/bin/scripts/labels.js.map +1 -0
  116. package/bin/scripts/markdown.d.ts +34 -0
  117. package/bin/scripts/markdown.js +99 -0
  118. package/bin/scripts/markdown.js.map +1 -0
  119. package/bin/scripts/names.d.ts +18 -0
  120. package/bin/scripts/names.js +64 -0
  121. package/bin/scripts/names.js.map +1 -0
  122. package/bin/scripts/track-artifacts.d.ts +2 -0
  123. package/bin/scripts/track-artifacts.js +101 -0
  124. package/bin/scripts/track-artifacts.js.map +1 -0
  125. package/bin/utils/create-folder.d.ts +1 -0
  126. package/bin/utils/create-folder.js +23 -0
  127. package/bin/utils/create-folder.js.map +1 -0
  128. package/bin/utils/delete-markdown-files.d.ts +1 -0
  129. package/bin/utils/delete-markdown-files.js +46 -0
  130. package/bin/utils/delete-markdown-files.js.map +1 -0
  131. package/bin/utils/delete-paths.d.ts +5 -0
  132. package/bin/utils/delete-paths.js +26 -0
  133. package/bin/utils/delete-paths.js.map +1 -0
  134. package/bin/utils/exists-file.d.ts +6 -0
  135. package/bin/utils/exists-file.js +13 -0
  136. package/bin/utils/exists-file.js.map +1 -0
  137. package/bin/utils/exists-folder.d.ts +6 -0
  138. package/bin/utils/exists-folder.js +13 -0
  139. package/bin/utils/exists-folder.js.map +1 -0
  140. package/bin/utils/get-internal-resource-path.d.ts +1 -0
  141. package/bin/utils/get-internal-resource-path.js +43 -0
  142. package/bin/utils/get-internal-resource-path.js.map +1 -0
  143. package/bin/utils/get-json-file.d.ts +1 -0
  144. package/bin/utils/get-json-file.js +27 -0
  145. package/bin/utils/get-json-file.js.map +1 -0
  146. package/bin/utils/index.d.ts +6 -0
  147. package/bin/utils/index.js +16 -0
  148. package/bin/utils/index.js.map +1 -0
  149. package/bin/utils/run-command.d.ts +5 -0
  150. package/bin/utils/run-command.js +36 -0
  151. package/bin/utils/run-command.js.map +1 -0
  152. package/jsdoc.conf.json +30 -0
  153. package/package.json +75 -0
  154. package/templates/documentation/README.md +41 -0
  155. package/templates/documentation/docs/.gitkeep +0 -0
  156. package/templates/documentation/docusaurus.config.ts +127 -0
  157. package/templates/documentation/package-lock.json +19431 -0
  158. package/templates/documentation/package.json +49 -0
  159. package/templates/documentation/sidebars.ts +33 -0
  160. package/templates/documentation/src/components/ArtifactTable/FilterBar.tsx +185 -0
  161. package/templates/documentation/src/components/ArtifactTable/index.tsx +298 -0
  162. package/templates/documentation/src/components/ArtifactTable/styles.module.css +282 -0
  163. package/templates/documentation/src/components/ArtifactTable/types.ts +31 -0
  164. package/templates/documentation/src/components/HomepageFeatures/index.tsx +77 -0
  165. package/templates/documentation/src/components/HomepageFeatures/styles.module.css +11 -0
  166. package/templates/documentation/src/css/custom.css +30 -0
  167. package/templates/documentation/src/pages/index.module.css +23 -0
  168. package/templates/documentation/src/pages/index.tsx +43 -0
  169. package/templates/documentation/src/pages/markdown-page.md +7 -0
  170. package/templates/documentation/static/.nojekyll +0 -0
  171. package/templates/documentation/static/img/docusaurus-social-card.jpg +0 -0
  172. package/templates/documentation/static/img/docusaurus.png +0 -0
  173. package/templates/documentation/static/img/favicon.ico +0 -0
  174. package/templates/documentation/static/img/logo.svg +1 -0
  175. package/templates/documentation/static/img/logo_imolko_azul.png +0 -0
  176. package/templates/documentation/static/img/undraw_docusaurus_mountain.svg +171 -0
  177. package/templates/documentation/static/img/undraw_docusaurus_react.svg +170 -0
  178. package/templates/documentation/static/img/undraw_docusaurus_tree.svg +40 -0
  179. package/templates/documentation/tsconfig.json +8 -0
  180. package/templates/documentation/ultra-reporter.config.json +55 -0
  181. package/templates/track-artifacts-script.ts +44 -0
  182. package/tsconfig.build-track.json +39 -0
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Data-transformation layer — pure functions that enrich and transform data.
4
+ // All functions are stateless and have no I/O side effects.
5
+ // ---------------------------------------------------------------------------
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.extractProperties = extractProperties;
41
+ exports.extractClassProperties = extractClassProperties;
42
+ exports.extractMethodDefinitions = extractMethodDefinitions;
43
+ exports.matchJsdocToArtifacts = matchJsdocToArtifacts;
44
+ exports.matchTests = matchTests;
45
+ exports.aggregateTestCounts = aggregateTestCounts;
46
+ exports.buildArtifactId = buildArtifactId;
47
+ exports.enrichArtifact = enrichArtifact;
48
+ exports.enrichUseCase = enrichUseCase;
49
+ exports.matchTestAnnotations = matchTestAnnotations;
50
+ exports.buildManifestEntries = buildManifestEntries;
51
+ const path = __importStar(require("path"));
52
+ const data_loading_1 = require("./data-loading");
53
+ // ---------------------------------------------------------------------------
54
+ // extractProperties — extracts Property[] from JSDoc props.ts entries
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * Extracts property definitions from JSDoc elements whose meta.filename is 'props.ts'.
58
+ * Iterates over each matching element's `.properties` array and maps them
59
+ * to typed Property objects.
60
+ */
61
+ function extractProperties(jsdocElems) {
62
+ const properties = [];
63
+ for (const jsdocElem of jsdocElems) {
64
+ if (jsdocElem.meta?.filename !== 'props.ts') {
65
+ continue;
66
+ }
67
+ if (!jsdocElem.properties) {
68
+ continue;
69
+ }
70
+ for (const prop of jsdocElem.properties) {
71
+ const elem = {
72
+ name: prop.name || '',
73
+ description: prop.description || '',
74
+ type: prop.type?.names?.[0]
75
+ ? prop.type.names[0]
76
+ : '',
77
+ };
78
+ properties.push(elem);
79
+ }
80
+ }
81
+ return properties;
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // extractClassProperties — extracts ClassProperty[] from JSDoc definition.ts
85
+ // ---------------------------------------------------------------------------
86
+ /**
87
+ * Extracts ClassProperty definitions from JSDoc elements whose
88
+ * meta.filename is 'definition.ts' and meta.code.type is 'ClassProperty'.
89
+ */
90
+ function extractClassProperties(jsdocElems) {
91
+ const classProperties = [];
92
+ for (const jsdocElem of jsdocElems) {
93
+ const type = jsdocElem.meta?.code?.type ?? '';
94
+ if (jsdocElem.meta?.filename !== 'definition.ts') {
95
+ continue;
96
+ }
97
+ if (type !== 'ClassProperty') {
98
+ continue;
99
+ }
100
+ const elem = {
101
+ name: jsdocElem.name,
102
+ type: 'ClassProperty',
103
+ comment: jsdocElem.comment,
104
+ deprecated: jsdocElem.deprecated || '',
105
+ description: jsdocElem.description || '',
106
+ params: jsdocElem.params || [],
107
+ examples: jsdocElem.examples || [],
108
+ returns: jsdocElem.returns || [],
109
+ };
110
+ classProperties.push(elem);
111
+ }
112
+ return classProperties;
113
+ }
114
+ // ---------------------------------------------------------------------------
115
+ // extractMethodDefinitions — extracts MethodDefinition[] from JSDoc
116
+ // ---------------------------------------------------------------------------
117
+ /**
118
+ * Extracts MethodDefinition from JSDoc elements whose meta.filename is
119
+ * 'definition.ts' and meta.code.type is 'MethodDefinition'.
120
+ */
121
+ function extractMethodDefinitions(jsdocElems) {
122
+ const methodDefinitions = [];
123
+ for (const jsdocElem of jsdocElems) {
124
+ const codeType = jsdocElem.meta?.code?.type ?? '';
125
+ if (jsdocElem.meta?.filename !== 'definition.ts') {
126
+ continue;
127
+ }
128
+ if (codeType !== 'MethodDefinition') {
129
+ continue;
130
+ }
131
+ const elem = {
132
+ name: jsdocElem.name,
133
+ type: 'MethodDefinition',
134
+ comment: jsdocElem.comment,
135
+ deprecated: jsdocElem.deprecated || '',
136
+ description: jsdocElem.description || '',
137
+ params: jsdocElem.params || [],
138
+ examples: jsdocElem.examples || [],
139
+ returns: jsdocElem.returns || [],
140
+ };
141
+ methodDefinitions.push(elem);
142
+ }
143
+ return methodDefinitions;
144
+ }
145
+ // ---------------------------------------------------------------------------
146
+ // matchJsdocToArtifacts — directory-based JSDoc path matching (FIXED)
147
+ // ---------------------------------------------------------------------------
148
+ /**
149
+ * Matches JSDoc elements to artifacts using directory-based path matching.
150
+ *
151
+ * For each artifact with jsondocMustMatchPath (e.g. "/MyEntity"), the function
152
+ * checks if the JSDoc element's meta.path contains that directory as a path
153
+ * segment (e.g. ".../MyEntity/definition.ts" matches "/MyEntity").
154
+ *
155
+ * This replaces the broken exact-suffix regex approach in the original code.
156
+ */
157
+ function matchJsdocToArtifacts(jsdocData, artifacts) {
158
+ const result = new Map();
159
+ for (const jsdocElem of jsdocData) {
160
+ const jsdocPath = jsdocElem.meta?.path ?? '';
161
+ if (!jsdocPath) {
162
+ continue;
163
+ }
164
+ for (const artifact of artifacts) {
165
+ const targetPath = artifact.jsondocMustMatchPath;
166
+ if (!targetPath) {
167
+ continue;
168
+ }
169
+ // Strip leading slash for segment matching
170
+ const dirName = targetPath.replace(/^\//, '');
171
+ // Split path into segments and check for exact directory match
172
+ const segments = jsdocPath.split('/');
173
+ if (!segments.includes(dirName)) {
174
+ continue;
175
+ }
176
+ if (!result.has(targetPath)) {
177
+ result.set(targetPath, []);
178
+ }
179
+ result.get(targetPath).push(jsdocElem);
180
+ }
181
+ }
182
+ return result;
183
+ }
184
+ // ---------------------------------------------------------------------------
185
+ // matchTests — matches test files to an artifact by path inclusion
186
+ // ---------------------------------------------------------------------------
187
+ /**
188
+ * Returns test files whose testFilePath includes the given artifactPath.
189
+ * The original code uses `artifactPath + '/'` to prevent matching similar names.
190
+ */
191
+ function matchTests(artifactPath, testResults) {
192
+ const matched = [];
193
+ for (const testFile of testResults) {
194
+ if ((testFile.testFilePath || '').includes(artifactPath)) {
195
+ matched.push(testFile);
196
+ }
197
+ }
198
+ return matched;
199
+ }
200
+ /**
201
+ * Sums pass/fail/pending/todo test counts across a list of test files.
202
+ */
203
+ function aggregateTestCounts(tests) {
204
+ const counts = {
205
+ numPassingTests: 0,
206
+ numFailingTests: 0,
207
+ numPendingTests: 0,
208
+ numTodoTests: 0,
209
+ };
210
+ for (const test of tests) {
211
+ counts.numPassingTests += test.numPassingTests || 0;
212
+ counts.numFailingTests += test.numFailingTests || 0;
213
+ counts.numPendingTests += test.numPendingTests || 0;
214
+ counts.numTodoTests += test.numTodoTests || 0;
215
+ }
216
+ return counts;
217
+ }
218
+ /**
219
+ * Generates an anchor-safe id and a filename-safe idMarkdown from the
220
+ * artifact name and context name.
221
+ *
222
+ * - `id`: "contextName-artifactName" lowered, spaces→hyphens, stripped of special chars
223
+ * - `idMarkdown`: "artifactName" lowered, spaces→hyphens, stripped of special chars
224
+ */
225
+ function buildArtifactId(name, contextName) {
226
+ const sanitize = (input) => input
227
+ .trim()
228
+ .toLocaleLowerCase()
229
+ .replace(/[\s\t]+/g, '-')
230
+ .replace(/[^a-zA-Z0-9\-]/g, '');
231
+ return {
232
+ id: sanitize(`${contextName}-${name}`),
233
+ idMarkdown: sanitize(name),
234
+ };
235
+ }
236
+ // ---------------------------------------------------------------------------
237
+ // enrichArtifact — composes extraction, loading, matching into EnrichedArtifact
238
+ // ---------------------------------------------------------------------------
239
+ /**
240
+ * Enriches a raw artifact with JSDoc data, YAML definition, attachments,
241
+ * matched test results, and computed IDs.
242
+ *
243
+ * Calls data-loading functions (loadArtifactMetadataAndContent) for I/O
244
+ * and pure transformation functions for data processing.
245
+ */
246
+ async function enrichArtifact(artifact, jsdocElems, allTestResults, cwd, basePath, contextName) {
247
+ const properties = extractProperties(jsdocElems);
248
+ const classProperties = extractClassProperties(jsdocElems);
249
+ const methodDefinitions = extractMethodDefinitions(jsdocElems);
250
+ const { definition: definitionData, attachmentsMd } = await (0, data_loading_1.loadArtifactMetadataAndContent)(artifact.name, basePath, cwd);
251
+ // Build relative path so it matches test file paths (which are relative to cwd)
252
+ const artifactPath = path.relative(cwd, path.resolve(cwd, basePath, artifact.name)) + '/';
253
+ const testResults = matchTests(artifactPath, allTestResults);
254
+ const annotatedTestResults = matchTestAnnotations(testResults, jsdocElems);
255
+ const testCounts = aggregateTestCounts(annotatedTestResults);
256
+ const { id, idMarkdown } = buildArtifactId(artifact.name, contextName);
257
+ return {
258
+ name: artifact.name,
259
+ type: artifact.type,
260
+ jsondocMustMatchPath: artifact.jsondocMustMatchPath,
261
+ category: artifact.category,
262
+ description: definitionData.description || artifact.description || '',
263
+ id,
264
+ idMarkdown,
265
+ title: definitionData.title || artifact.name,
266
+ properties,
267
+ classProperties,
268
+ methodDefinitions,
269
+ tags: definitionData.tags || [],
270
+ hasAttachments: attachmentsMd.trim() !== '',
271
+ attachmentsMd,
272
+ testResults: annotatedTestResults,
273
+ ...testCounts,
274
+ };
275
+ }
276
+ // ---------------------------------------------------------------------------
277
+ // enrichUseCase — enriches a raw use-case with test data and computed IDs
278
+ // ---------------------------------------------------------------------------
279
+ /**
280
+ * Enriches a raw use-case with matched test results, aggregated test counts,
281
+ * and computed IDs.
282
+ *
283
+ * Uses the same matchTests and aggregateTestCounts as the domain pipeline.
284
+ * The ID-building differs from buildArtifactId: use-case IDs include the
285
+ * index (for uniqueness within a context) and idMarkdown uses the title
286
+ * instead of an artifact name.
287
+ */
288
+ function enrichUseCase(raw, allTestResults, index, contextName) {
289
+ const sanitize = (input) => input
290
+ .trim()
291
+ .toLocaleLowerCase()
292
+ .replace(/[\s\t]+/g, '-')
293
+ .replace(/[^a-zA-Z0-9\-]/g, '');
294
+ const testResults = matchTests(raw.path, allTestResults);
295
+ const counts = aggregateTestCounts(testResults);
296
+ return {
297
+ ...raw,
298
+ id: sanitize(`${contextName}-${raw.title}-${index}`),
299
+ idMarkdown: sanitize(raw.title),
300
+ testResults,
301
+ ...counts,
302
+ };
303
+ }
304
+ // ---------------------------------------------------------------------------
305
+ // matchTestAnnotations — matches spec.ts JSDoc elements to test results
306
+ // ---------------------------------------------------------------------------
307
+ /**
308
+ * Matches JSDoc elements from .spec.ts files to individual test results.
309
+ *
310
+ * For each test result in each test file, finds the first JSDoc element
311
+ * whose `name` (from @name tag) is contained in the test's `fullName`
312
+ * AND whose `meta.path` shares at least one path segment with the test
313
+ * file's directory path.
314
+ *
315
+ * Matching annotations are attached as `result.annotation`.
316
+ *
317
+ * @param testFiles - Array of test files with their test results
318
+ * @param jsdocElems - JSDoc elements (may include spec.ts entries with annotations)
319
+ * @returns The test files with annotations attached (mutated in place)
320
+ */
321
+ function matchTestAnnotations(testFiles, jsdocElems) {
322
+ // Filter to spec.ts JSDoc elements that have a name (@name tag required)
323
+ const specDocs = jsdocElems.filter((elem) => elem.meta?.filename?.includes('spec.ts') &&
324
+ !!elem.name);
325
+ if (specDocs.length === 0) {
326
+ return testFiles;
327
+ }
328
+ for (const testFile of testFiles) {
329
+ // Extract the directory path from the test file path
330
+ const testDir = extractDir(testFile.testFilePath);
331
+ for (const testResult of testFile.testResults) {
332
+ const match = specDocs.find((doc) => {
333
+ // Name matching: testFullName must include the JSDoc element's name
334
+ if (!testResult.fullName.includes(doc.name)) {
335
+ return false;
336
+ }
337
+ // Path matching: test file's directory must be contained within
338
+ // the JSDoc element's meta.path (or vice versa), ensuring they
339
+ // belong to the same artifact directory.
340
+ const docPath = doc.meta?.path || '';
341
+ return testDir !== '' && docPath !== '' &&
342
+ (docPath.includes(testDir) || testDir.includes(docPath));
343
+ });
344
+ if (match) {
345
+ testResult.annotation = {
346
+ description: match.description || '',
347
+ tags: match.tags || [],
348
+ };
349
+ }
350
+ }
351
+ }
352
+ return testFiles;
353
+ }
354
+ /**
355
+ * Extracts the directory portion of a file path (strips filename).
356
+ *
357
+ * @example
358
+ * extractDir('/project/domain/src/MyEntity/entity.spec.ts')
359
+ * // => '/project/domain/src/MyEntity'
360
+ */
361
+ function extractDir(filePath) {
362
+ const lastSlash = filePath.lastIndexOf('/');
363
+ return lastSlash >= 0 ? filePath.slice(0, lastSlash) : filePath;
364
+ }
365
+ // ---------------------------------------------------------------------------
366
+ // buildManifestEntries — converts enriched artifacts to manifest entries
367
+ // ---------------------------------------------------------------------------
368
+ /**
369
+ * Converts a list of enriched artifacts to manifest entries for the
370
+ * searchable artifact table.
371
+ *
372
+ * Aggregate artifacts get `categories: ["domain-artifacts", "aggregates"]`;
373
+ * all other types get `categories: ["domain-artifacts"]`.
374
+ *
375
+ * @param artifacts - The fully enriched artifacts
376
+ * @param contextName - The bounded context name for this package root
377
+ * @returns Manifest entries ready for serialization to JSON
378
+ */
379
+ function buildManifestEntries(artifacts, contextName) {
380
+ return artifacts.map((artifact) => ({
381
+ name: artifact.name,
382
+ type: artifact.type,
383
+ tags: artifact.tags || [],
384
+ contextName,
385
+ description: artifact.description || '',
386
+ idMarkdown: artifact.idMarkdown,
387
+ categories: artifact.type === 'aggregate'
388
+ ? ['domain-artifacts', 'aggregates']
389
+ : ['domain-artifacts'],
390
+ }));
391
+ }
392
+ //# sourceMappingURL=data-transformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-transformation.js","sourceRoot":"","sources":["../../src/reporters/data-transformation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ArtifactManifestEntry, UseCasePage } from './types';
2
+ /** A rendered artifact page ready for writing. */
3
+ export interface ArtifactPage {
4
+ markdown: string;
5
+ destPaths: string[];
6
+ }
7
+ /**
8
+ * Writes each artifact page to its destination paths.
9
+ * Creates parent directories as needed and overwrites existing files.
10
+ *
11
+ * Aggregates get written to multiple destinations (domain + aggregates tabs).
12
+ */
13
+ export declare function writeArtifactPages(pages: ArtifactPage[]): void;
14
+ /**
15
+ * Writes each use-case page to its destination path.
16
+ * Creates parent directories as needed and overwrites existing files.
17
+ */
18
+ export declare function writeUseCasePages(pages: UseCasePage[]): void;
19
+ /**
20
+ * Appends artifact manifest entries to `static/data/artifacts-manifest.json`
21
+ * inside the given documentation path.
22
+ *
23
+ * Reads the existing manifest if it exists, appends the new entries, and
24
+ * writes the combined array back. Creates parent directories as needed.
25
+ *
26
+ * @param entries - The manifest entries to append
27
+ * @param documentationPath - Root path of the documentation site
28
+ */
29
+ export declare function appendManifestToStatic(entries: ArtifactManifestEntry[], documentationPath: string): void;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // File-writing layer — writes rendered artifact pages to disk.
4
+ // ---------------------------------------------------------------------------
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.writeArtifactPages = writeArtifactPages;
40
+ exports.writeUseCasePages = writeUseCasePages;
41
+ exports.appendManifestToStatic = appendManifestToStatic;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ /**
45
+ * Writes each artifact page to its destination paths.
46
+ * Creates parent directories as needed and overwrites existing files.
47
+ *
48
+ * Aggregates get written to multiple destinations (domain + aggregates tabs).
49
+ */
50
+ function writeArtifactPages(pages) {
51
+ for (const page of pages) {
52
+ for (const destPath of page.destPaths) {
53
+ const dir = path.dirname(destPath);
54
+ fs.mkdirSync(dir, { recursive: true });
55
+ fs.writeFileSync(destPath, page.markdown);
56
+ }
57
+ }
58
+ }
59
+ /**
60
+ * Writes each use-case page to its destination path.
61
+ * Creates parent directories as needed and overwrites existing files.
62
+ */
63
+ function writeUseCasePages(pages) {
64
+ for (const page of pages) {
65
+ const dir = path.dirname(page.destPath);
66
+ fs.mkdirSync(dir, { recursive: true });
67
+ fs.writeFileSync(page.destPath, page.markdown);
68
+ }
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // appendManifestToStatic — appends artifact entries to the static manifest
72
+ // ---------------------------------------------------------------------------
73
+ /**
74
+ * Appends artifact manifest entries to `static/data/artifacts-manifest.json`
75
+ * inside the given documentation path.
76
+ *
77
+ * Reads the existing manifest if it exists, appends the new entries, and
78
+ * writes the combined array back. Creates parent directories as needed.
79
+ *
80
+ * @param entries - The manifest entries to append
81
+ * @param documentationPath - Root path of the documentation site
82
+ */
83
+ function appendManifestToStatic(entries, documentationPath) {
84
+ const manifestDir = path.join(documentationPath, 'static', 'data');
85
+ const manifestPath = path.join(manifestDir, 'artifacts-manifest.json');
86
+ let existing = [];
87
+ if (fs.existsSync(manifestPath)) {
88
+ try {
89
+ const raw = fs.readFileSync(manifestPath, 'utf8');
90
+ existing = JSON.parse(raw);
91
+ }
92
+ catch {
93
+ existing = [];
94
+ }
95
+ }
96
+ const combined = [...existing, ...entries];
97
+ fs.mkdirSync(manifestDir, { recursive: true });
98
+ fs.writeFileSync(manifestPath, JSON.stringify(combined, null, 2));
99
+ }
100
+ //# sourceMappingURL=file-writing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-writing.js","sourceRoot":"","sources":["../../src/reporters/file-writing.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkB9E,gDAQC;AAMD,8CAMC;AAgBD,wDAsBC;AA1ED,uCAAyB;AACzB,2CAA6B;AAS7B;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,KAAqB;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAoB;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CACpC,OAAgC,EAChC,iBAAyB;IAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;IAEvE,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAE3C,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAClD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC;IAE3C,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface DomainReporterArgs {
2
+ packageRootName: string;
3
+ contextName: string;
4
+ documentationPath: string;
5
+ domainPath: string;
6
+ domainTabName: string;
7
+ aggregateTabName: string;
8
+ templateDir: string;
9
+ repoSourceUrl?: string;
10
+ }
11
+ /**
12
+ * Generates domain documentation by composing the full pipeline:
13
+ * load artifacts/JSDoc/tests → match & enrich → render → write.
14
+ *
15
+ * @param args - Paths and naming configuration
16
+ */
17
+ export declare function generateDomainDocumentation(args: DomainReporterArgs): Promise<void>;