@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,161 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Domain Reporter Orchestrator
4
+ //
5
+ // Composed pipeline: load → transform → render → write.
6
+ // Replaces the monolithic ReporterDomainGenerator class with independently
7
+ // testable functions from data-loading, data-transformation, rendering,
8
+ // and file-writing layers.
9
+ // ---------------------------------------------------------------------------
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.generateDomainDocumentation = generateDomainDocumentation;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const get_file_1 = require("../scripts/get-file");
48
+ const markdown_1 = require("../scripts/markdown");
49
+ const data_loading_1 = require("./data-loading");
50
+ const data_transformation_1 = require("./data-transformation");
51
+ const rendering_1 = require("./rendering");
52
+ const file_writing_1 = require("./file-writing");
53
+ const data_transformation_2 = require("./data-transformation");
54
+ /**
55
+ * Generates domain documentation by composing the full pipeline:
56
+ * load artifacts/JSDoc/tests → match & enrich → render → write.
57
+ *
58
+ * @param args - Paths and naming configuration
59
+ */
60
+ async function generateDomainDocumentation(args) {
61
+ const cwd = process.cwd();
62
+ const packageRootName = args.packageRootName || 'domainX';
63
+ const contextName = args.contextName || 'default';
64
+ const documentationPath = args.documentationPath || './documentation';
65
+ const domainPath = args.domainPath || './domain/src';
66
+ const domainTabName = args.domainTabName || 'domain';
67
+ const aggregateTabName = args.aggregateTabName || 'aggregate';
68
+ console.log('[reporter-domain] Generating Domain Report...');
69
+ // Resolve data paths
70
+ const dataDir = `${documentationPath}/.data-generated/${packageRootName}`;
71
+ const artifactsDataPath = path.resolve(cwd, `${dataDir}/artifacts.json`);
72
+ const jsdocReportDataPath = path.resolve(cwd, `${dataDir}/jsdoc-report.txt`);
73
+ const testResultsDataPath = path.resolve(cwd, `${dataDir}/test-results.json`);
74
+ // ---- 1. Load raw data ----
75
+ const artifacts = await (0, data_loading_1.loadArtifacts)(artifactsDataPath);
76
+ const jsdocData = await (0, data_loading_1.loadJsdocReport)(jsdocReportDataPath);
77
+ const allTestResults = await (0, data_loading_1.loadTestResults)(testResultsDataPath);
78
+ // ---- 2. Match JSDoc to artifacts ----
79
+ const jsdocByPath = (0, data_transformation_1.matchJsdocToArtifacts)(jsdocData, artifacts);
80
+ // ---- 3. Enrich each artifact ----
81
+ const enrichedArtifacts = [];
82
+ for (const artifact of artifacts) {
83
+ const jsdocElems = jsdocByPath.get(artifact.jsondocMustMatchPath) || [];
84
+ const enriched = await (0, data_transformation_1.enrichArtifact)(artifact, jsdocElems, allTestResults, cwd, domainPath, contextName);
85
+ enrichedArtifacts.push(enriched);
86
+ }
87
+ // ---- 4. Render and write artifact pages ----
88
+ const targetDomainPath = `${documentationPath}/docs/${domainTabName}`;
89
+ const targetAggregatePath = `${documentationPath}/docs/${aggregateTabName}`;
90
+ const pages = [];
91
+ for (const enriched of enrichedArtifacts) {
92
+ // Render with skipAttachments=true so we can defer attachments
93
+ // replacement until after minification (preserving natural markdown formatting)
94
+ let markdown = (0, rendering_1.renderArtifactPage)(enriched, { skipAttachments: true, repoSourceUrl: args.repoSourceUrl });
95
+ // Beautify normalizes whitespace (trim spaces inside tags, normalize
96
+ // attribute spacing), then minify removes whitespace between tags
97
+ markdown = (0, markdown_1.beautifyMarkdown)(markdown);
98
+ markdown = (0, markdown_1.minifyMarkdown)(markdown);
99
+ // Replace attachments marker BEFORE stripJsxComments so the marker
100
+ // is still present for replacement. This is done after minification
101
+ // so attachment markdown keeps its natural formatting.
102
+ if (enriched.hasAttachments && enriched.attachmentsMd) {
103
+ const attachmentsHtml = `\n\n<div style={{ backgroundColor: '#EEE', margin: '32px 0', padding: '16px' }}>\n\n` +
104
+ `${enriched.attachmentsMd}\n\n </div>\n\n`;
105
+ markdown = markdown.replace('{/* attachments-md */}', attachmentsHtml);
106
+ }
107
+ else {
108
+ markdown = markdown.replace('{/* attachments-md */}', '');
109
+ }
110
+ // Strip remaining JSX comment markers (e.g., leftover { /* method-definition */ },
111
+ // { /* test-panel */ } placeholders from recursive template composition)
112
+ markdown = (0, markdown_1.stripJsxComments)(markdown);
113
+ // Build dest paths — aggregates also go to the aggregates tab
114
+ const destPaths = [
115
+ path.resolve(cwd, targetDomainPath, `${enriched.idMarkdown}.md`),
116
+ ];
117
+ if (enriched.type === 'aggregate') {
118
+ destPaths.push(path.resolve(cwd, targetAggregatePath, `${enriched.idMarkdown}.md`));
119
+ }
120
+ pages.push({ markdown, destPaths });
121
+ }
122
+ (0, file_writing_1.writeArtifactPages)(pages);
123
+ // ---- 5. Generate artifact manifest for searchable table ----
124
+ const manifestEntries = (0, data_transformation_2.buildManifestEntries)(enrichedArtifacts, contextName);
125
+ (0, file_writing_1.appendManifestToStatic)(manifestEntries, documentationPath);
126
+ // ---- 6. Write category index.mdx pages ----
127
+ const domainIndexMdx = `---
128
+ title: Domain Artifacts
129
+ ---
130
+ import ArtifactTable from '@site/src/components/ArtifactTable';
131
+
132
+ <ArtifactTable category="domain-artifacts" />
133
+ `;
134
+ const aggregateIndexMdx = `---
135
+ title: Aggregates
136
+ ---
137
+ import ArtifactTable from '@site/src/components/ArtifactTable';
138
+
139
+ <ArtifactTable category="aggregates" />
140
+ `;
141
+ fs.mkdirSync(path.resolve(cwd, targetDomainPath), { recursive: true });
142
+ fs.writeFileSync(path.resolve(cwd, targetDomainPath, 'index.mdx'), domainIndexMdx);
143
+ fs.mkdirSync(path.resolve(cwd, targetAggregatePath), { recursive: true });
144
+ fs.writeFileSync(path.resolve(cwd, targetAggregatePath, 'index.mdx'), aggregateIndexMdx);
145
+ // ---- 7. Generate intro page ----
146
+ await generateIntro(cwd, domainPath, documentationPath);
147
+ console.log('[reporter-domain] Domain Report Generated!');
148
+ }
149
+ // ---------------------------------------------------------------------------
150
+ // generateIntro — writes the context-intro page directly (no aggregate cards)
151
+ // ---------------------------------------------------------------------------
152
+ async function generateIntro(cwd, domainPath, documentationPath) {
153
+ // Read context-intro.md
154
+ const introPath = path.resolve(cwd, domainPath, 'context-intro.md');
155
+ const contextIntroMd = await (0, get_file_1.getFile)(introPath);
156
+ const destPath = path.resolve(cwd, documentationPath, 'docs', 'intro.md');
157
+ const dir = path.dirname(destPath);
158
+ fs.mkdirSync(dir, { recursive: true });
159
+ fs.writeFileSync(destPath, contextIntroMd);
160
+ }
161
+ //# sourceMappingURL=generate-domain-documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-domain-documentation.js","sourceRoot":"","sources":["../../src/reporters/generate-domain-documentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface UseCasesReporterArgs {
2
+ packageRootName: string;
3
+ title: string;
4
+ documentationPath: string;
5
+ useCasesPath: string;
6
+ useCasesTabName: string;
7
+ templateDir: string;
8
+ cwd: string;
9
+ repoSourceUrl?: string;
10
+ }
11
+ /**
12
+ * Generates use-cases documentation by composing the full pipeline:
13
+ * load test results → discover folders → load definitions & attachments
14
+ * → enrich → render → write.
15
+ *
16
+ * @param args - Paths and naming configuration
17
+ */
18
+ export declare function generateUseCasesDocumentation(args: UseCasesReporterArgs): Promise<void>;
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Use-Cases Reporter Orchestrator
4
+ //
5
+ // Composed pipeline: load → transform → render → write.
6
+ // Replaces the monolithic ReporterUseCasesGenerator class with independently
7
+ // testable functions from data-loading, data-transformation, rendering,
8
+ // and file-writing layers.
9
+ // ---------------------------------------------------------------------------
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.generateUseCasesDocumentation = generateUseCasesDocumentation;
45
+ const path = __importStar(require("path"));
46
+ const markdown_1 = require("../scripts/markdown");
47
+ const data_loading_1 = require("./data-loading");
48
+ const data_transformation_1 = require("./data-transformation");
49
+ const rendering_1 = require("./rendering");
50
+ const file_writing_1 = require("./file-writing");
51
+ /**
52
+ * Generates use-cases documentation by composing the full pipeline:
53
+ * load test results → discover folders → load definitions & attachments
54
+ * → enrich → render → write.
55
+ *
56
+ * @param args - Paths and naming configuration
57
+ */
58
+ async function generateUseCasesDocumentation(args) {
59
+ const cwd = args.cwd || process.cwd();
60
+ const packageRootName = args.packageRootName || 'featuresX';
61
+ const title = args.title || 'Default Use Cases';
62
+ const documentationPath = args.documentationPath || './documentation';
63
+ const useCasesPath = args.useCasesPath || './use-cases';
64
+ const useCasesTabName = args.useCasesTabName || 'domain';
65
+ console.log('[reporter-use-case] Generating Use Case Report...');
66
+ // Resolve data paths
67
+ const testResultsDataPath = path.resolve(cwd, `${documentationPath}/.data-generated/${packageRootName}/test-results.json`);
68
+ const targetDocusaurusPath = path.resolve(cwd, `${documentationPath}/docs/${useCasesTabName}`);
69
+ // ---- 1. Load test results ----
70
+ const allTestResults = await (0, data_loading_1.loadTestResults)(testResultsDataPath);
71
+ // ---- 2. Discover use-case folders ----
72
+ const resolvedUseCasesPath = path.resolve(cwd, useCasesPath);
73
+ const folders = await (0, data_loading_1.loadUseCaseFolders)(resolvedUseCasesPath);
74
+ // ---- 3. Process each folder: load → enrich → render ----
75
+ const pages = [];
76
+ for (let index = 0; index < folders.length; index++) {
77
+ const folderName = folders[index];
78
+ const useCaseDirPath = path.resolve(resolvedUseCasesPath, folderName);
79
+ const useCaseRelativePath = path.relative(cwd, path.resolve(resolvedUseCasesPath, folderName));
80
+ // Load definition and attachments (legacy yaml + .md frontmatter merged)
81
+ const { definition: definitionData, attachmentsMd } = await (0, data_loading_1.loadUseCaseMetadataAndContent)(useCaseDirPath);
82
+ // Build raw use-case
83
+ const raw = {
84
+ title: definitionData.title || 'Error: Definition has not title',
85
+ description: definitionData.description ||
86
+ 'Error: Definition has not description',
87
+ type: definitionData.type || 'Error: Definition has not type',
88
+ modelStatus: definitionData.modelStatus || 'UNDEFINED',
89
+ tags: definitionData.tags || [],
90
+ attachmentsMd: attachmentsMd || '',
91
+ path: useCaseRelativePath,
92
+ };
93
+ // Enrich with test results and IDs
94
+ const enriched = (0, data_transformation_1.enrichUseCase)(raw, allTestResults, index, title);
95
+ // Render with deferred attachments (skipAttachments=true so attachments
96
+ // replacement happens after minification, preserving natural markdown formatting)
97
+ let markdown = (0, rendering_1.renderUseCasePage)(enriched, { skipAttachments: true, repoSourceUrl: args.repoSourceUrl });
98
+ // Beautify normalizes whitespace, then minify removes whitespace between tags
99
+ markdown = (0, markdown_1.beautifyMarkdown)(markdown);
100
+ markdown = (0, markdown_1.minifyMarkdown)(markdown);
101
+ // Replace attachments marker BEFORE stripJsxComments so the marker
102
+ // is still present for replacement. Done after minification so
103
+ // attachment markdown keeps its natural formatting.
104
+ if (enriched.attachmentsMd) {
105
+ const attachmentsHtml = `\n\n<div style={{ backgroundColor: '#EEE', margin: '32px 0', padding: '16px' }}>\n\n` +
106
+ `${enriched.attachmentsMd}\n\n </div>\n\n`;
107
+ markdown = markdown.replace('{/* attachments-md */}', attachmentsHtml);
108
+ }
109
+ else {
110
+ markdown = markdown.replace('{/* attachments-md */}', '');
111
+ }
112
+ // Strip remaining JSX comment markers (e.g., leftover { /* method-definition */ },
113
+ // { /* test-panel */ } placeholders from recursive template composition)
114
+ markdown = (0, markdown_1.stripJsxComments)(markdown);
115
+ // Build destination path
116
+ const destPath = path.resolve(targetDocusaurusPath, `${enriched.idMarkdown}.md`);
117
+ pages.push({ markdown, destPath });
118
+ }
119
+ // ---- 4. Write output ----
120
+ (0, file_writing_1.writeUseCasePages)(pages);
121
+ console.log('[reporter-use-case] Use Cases Report Generated!');
122
+ }
123
+ //# sourceMappingURL=generate-use-cases-documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-use-cases-documentation.js","sourceRoot":"","sources":["../../src/reporters/generate-use-cases-documentation.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,kCAAkC;AAClC,EAAE;AACF,wDAAwD;AACxD,6EAA6E;AAC7E,wEAAwE;AACxE,2BAA2B;AAC3B,8EAA8E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4B9E,sEA6FC;AAvHD,2CAA6B;AAC7B,kDAAyF;AACzF,iDAAoG;AACpG,+DAAsD;AACtD,2CAAgD;AAChD,iDAAmD;AAcnD;;;;;;GAMG;AACI,KAAK,UAAU,6BAA6B,CACjD,IAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC;IAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,aAAa,CAAC;IACxD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC;IAEzD,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAEjE,qBAAqB;IACrB,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CACtC,GAAG,EACH,GAAG,iBAAiB,oBAAoB,eAAe,oBAAoB,CAC5E,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CACvC,GAAG,EACH,GAAG,iBAAiB,SAAS,eAAe,EAAE,CAC/C,CAAC;IAEF,iCAAiC;IACjC,MAAM,cAAc,GAAG,MAAM,IAAA,8BAAe,EAAC,mBAAmB,CAAC,CAAC;IAElE,yCAAyC;IACzC,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,oBAAoB,CAAC,CAAC;IAE/D,2DAA2D;IAC3D,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QACtE,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC,CAAC;QAE/F,yEAAyE;QACzE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,4CAA6B,EAAC,cAAc,CAAC,CAAC;QAE1G,qBAAqB;QACrB,MAAM,GAAG,GAAe;YACtB,KAAK,EACF,cAAc,CAAC,KAAgB,IAAI,iCAAiC;YACvE,WAAW,EACR,cAAc,CAAC,WAAsB;gBACtC,uCAAuC;YACzC,IAAI,EAAG,cAAc,CAAC,IAAe,IAAI,gCAAgC;YACzE,WAAW,EAAG,cAAc,CAAC,WAAsB,IAAI,WAAW;YAClE,IAAI,EAAG,cAAc,CAAC,IAAiB,IAAI,EAAE;YAC7C,aAAa,EAAE,aAAa,IAAI,EAAE;YAClC,IAAI,EAAE,mBAAmB;SAC1B,CAAC;QAEF,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAA,mCAAa,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAElE,wEAAwE;QACxE,kFAAkF;QAClF,IAAI,QAAQ,GAAG,IAAA,6BAAiB,EAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAEzG,8EAA8E;QAC9E,QAAQ,GAAG,IAAA,2BAAgB,EAAC,QAAQ,CAAC,CAAC;QACtC,QAAQ,GAAG,IAAA,yBAAc,EAAC,QAAQ,CAAC,CAAC;QAEpC,mEAAmE;QACnE,+DAA+D;QAC/D,oDAAoD;QACpD,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,eAAe,GACnB,sFAAsF;gBACtF,GAAG,QAAQ,CAAC,aAAa,iBAAiB,CAAC;YAC7C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,mFAAmF;QACnF,yEAAyE;QACzE,QAAQ,GAAG,IAAA,2BAAgB,EAAC,QAAQ,CAAC,CAAC;QAEtC,yBAAyB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,oBAAoB,EACpB,GAAG,QAAQ,CAAC,UAAU,KAAK,CAC5B,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,4BAA4B;IAC5B,IAAA,gCAAiB,EAAC,KAAK,CAAC,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { EnrichedArtifact, EnrichedUseCase, MethodDefinition, Property, TestFile, TestResult } from './types';
2
+ /**
3
+ * Renders a single code example as a styled HTML div.
4
+ *
5
+ * @param example - The example code string
6
+ * @returns HTML div string with inline styling
7
+ */
8
+ export declare function renderExample(example: string): string;
9
+ /**
10
+ * Renders a single test result as a collapsible detail element.
11
+ *
12
+ * Each test gets a colored status label (green=passed, red=failed,
13
+ * yellow=pending, blue=todo) and a messages section inside a styled div.
14
+ *
15
+ * @param test - The test result to render (may include annotation from JSDoc)
16
+ * @param testFilePath - The file path containing the test
17
+ * @param messages - Optional messages to display (@deprecated, prefer test.annotation)
18
+ * @returns HTML string for the test panel (includes trailing // test-panel marker)
19
+ */
20
+ export declare function renderTestPanel(test: TestResult, testFilePath: string, messages?: string[], repoSourceUrl?: string): string;
21
+ /**
22
+ * Renders all test results across all test files as concatenated test panels.
23
+ *
24
+ * @param testFiles - Array of test files with their results
25
+ * @returns Concatenated HTML string of all test panels
26
+ */
27
+ export declare function renderTestPanels(testFiles: TestFile[], repoSourceUrl?: string): string;
28
+ /**
29
+ * Renders the complete methods section with count header and collapsible
30
+ * method definitions. Returns empty string when there are no methods.
31
+ *
32
+ * @param methods - Array of method definitions
33
+ * @returns HTML string for the entire methods section, or '' if empty
34
+ */
35
+ export declare function renderMethodsSection(methods: MethodDefinition[]): string;
36
+ /**
37
+ * Renders the complete tests section with count header and collapsible test panels.
38
+ * Returns empty string when there are no tests.
39
+ *
40
+ * @param testFiles - Array of test files with their results
41
+ * @returns HTML string for the entire tests section, or '' if no tests
42
+ */
43
+ export declare function renderTestsSection(testFiles: TestFile[], repoSourceUrl?: string): string;
44
+ /**
45
+ * Renders the complete properties section with count header and
46
+ * collapsible table. Returns empty string when there are no properties.
47
+ *
48
+ * @param properties - Array of property definitions
49
+ * @returns HTML string for the entire properties section, or '' if empty
50
+ */
51
+ export declare function renderPropertiesSection(properties: Property[]): string;
52
+ /**
53
+ * Renders a markdown table of artifact properties (name, type, description).
54
+ *
55
+ * The type column renders as a link using the same logic as the monolith's
56
+ * linkToType: strips `<...>` suffix that follows a dot (e.g., `java.util.List<String>`
57
+ * → `java.util.List`), then converts the type name using names().fileName.
58
+ *
59
+ * @param properties - Array of property definitions
60
+ * @returns HTML table string
61
+ */
62
+ export declare function renderPropertiesTable(properties: Property[]): string;
63
+ /**
64
+ * Renders a single method definition with name, description,
65
+ * parameters table, and examples.
66
+ *
67
+ * @param method - The method definition to render
68
+ * @returns HTML string for the method definition (includes trailing
69
+ * // method-definition marker for composition)
70
+ */
71
+ export declare function renderMethodDefinition(method: MethodDefinition): string;
72
+ /**
73
+ * Renders multiple method definitions by composing renderMethodDefinition
74
+ * calls. Uses the trailing `{ /* method-definition * / }` marker for
75
+ * recursive composition (matches the monolith template pattern).
76
+ *
77
+ * @param methods - Array of method definitions
78
+ * @returns Concatenated HTML string of all method definitions
79
+ */
80
+ export declare function renderMethodDefinitions(methods: MethodDefinition[]): string;
81
+ /** Options for {@link renderArtifactPage}. */
82
+ export interface RenderArtifactPageOptions {
83
+ /**
84
+ * When `true`, the `{/* attachments-md * /}` marker is left in place
85
+ * so the caller can replace it after minification (matching the original
86
+ * monolith behavior where attachments keep their natural formatting).
87
+ */
88
+ skipAttachments?: boolean;
89
+ /** Base URL for linking test file paths to the source repository. */
90
+ repoSourceUrl?: string;
91
+ }
92
+ /**
93
+ * Renders the full artifact documentation page.
94
+ *
95
+ * Composes all sections: header (title, type+tags, description), attachments,
96
+ * properties table, method definitions, and test panels.
97
+ *
98
+ * @param artifact - The fully enriched artifact to render
99
+ * @param options - Optional rendering flags
100
+ * @returns Complete HTML page string for the artifact
101
+ */
102
+ export declare function renderArtifactPage(artifact: EnrichedArtifact, options?: RenderArtifactPageOptions): string;
103
+ /**
104
+ * Renders a full use-case documentation page.
105
+ *
106
+ * Composes: header (title, type+modelStatus+tags, description),
107
+ * attachments section, and test panels.
108
+ *
109
+ * @param useCase - The fully enriched use-case to render
110
+ * @param options - Optional rendering flags
111
+ * @returns Complete HTML page string for the use-case
112
+ */
113
+ export declare function renderUseCasePage(useCase: EnrichedUseCase, options?: {
114
+ skipAttachments?: boolean;
115
+ repoSourceUrl?: string;
116
+ }): string;