@facet-coverage/core 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -523
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +2 -35
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +5 -2
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +496 -16
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +2 -34
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +2 -34
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/index.js +6 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/config.d.ts +15 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +88 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/core/FacetParser.d.ts +54 -2
- package/dist/core/FacetParser.d.ts.map +1 -1
- package/dist/core/FacetParser.js +151 -3
- package/dist/core/FacetParser.js.map +1 -1
- package/dist/core/IDChangeDetector.d.ts +50 -0
- package/dist/core/IDChangeDetector.d.ts.map +1 -0
- package/dist/core/IDChangeDetector.js +147 -0
- package/dist/core/IDChangeDetector.js.map +1 -0
- package/dist/core/TestScanner.d.ts +11 -0
- package/dist/core/TestScanner.d.ts.map +1 -1
- package/dist/core/TestScanner.js +76 -6
- package/dist/core/TestScanner.js.map +1 -1
- package/dist/core/Validator.d.ts +4 -0
- package/dist/core/Validator.d.ts.map +1 -1
- package/dist/core/Validator.js +22 -4
- package/dist/core/Validator.js.map +1 -1
- package/dist/types.d.ts +32 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,16 +3,49 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateCommand = generateCommand;
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const path_1 = require("path");
|
|
6
|
+
const glob_1 = require("glob");
|
|
6
7
|
const FacetParser_js_1 = require("../../core/FacetParser.js");
|
|
8
|
+
const IDChangeDetector_js_1 = require("../../core/IDChangeDetector.js");
|
|
9
|
+
const TestScanner_js_1 = require("../../core/TestScanner.js");
|
|
10
|
+
const config_js_1 = require("../utils/config.js");
|
|
7
11
|
/**
|
|
8
|
-
* Convert a facet ID to a valid TypeScript identifier
|
|
9
|
-
*
|
|
12
|
+
* Convert a facet ID to a valid TypeScript identifier.
|
|
13
|
+
*
|
|
14
|
+
* Uses these conventions:
|
|
15
|
+
* - `:` and `-` become single underscore `_`
|
|
16
|
+
* - `/` in path (before `:`) becomes single underscore `_`
|
|
17
|
+
* - `/` after `:` (sub-facet separator) becomes double underscore `__`
|
|
18
|
+
*
|
|
19
|
+
* Examples:
|
|
20
|
+
* - "business:guest-purchase-flow" -> "BUSINESS_GUEST_PURCHASE_FLOW"
|
|
21
|
+
* - "checkout/payments/pci:card-storage" -> "CHECKOUT_PAYMENTS_PCI_CARD_STORAGE"
|
|
22
|
+
* - "compliance:pci-dss/tls" -> "COMPLIANCE_PCI_DSS__TLS" (sub-facet uses __)
|
|
10
23
|
*/
|
|
11
24
|
function toConstantName(facetId) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.replace(/[^A-Z0-9_]/g, '');
|
|
25
|
+
const colonIndex = facetId.indexOf(':');
|
|
26
|
+
if (colonIndex === -1) {
|
|
27
|
+
// No colon, simple conversion
|
|
28
|
+
return facetId.toUpperCase().replace(/[/-]/g, '_').replace(/[^A-Z0-9_]/g, '');
|
|
29
|
+
}
|
|
30
|
+
// Split into path+type part and section part
|
|
31
|
+
const pathAndType = facetId.substring(0, colonIndex);
|
|
32
|
+
const section = facetId.substring(colonIndex + 1);
|
|
33
|
+
// For path+type: / and - become _
|
|
34
|
+
const pathPart = pathAndType.toUpperCase().replace(/[/-]/g, '_').replace(/[^A-Z0-9_]/g, '');
|
|
35
|
+
// For section: - becomes _, / becomes __ (sub-facet separator)
|
|
36
|
+
const sectionPart = section.toUpperCase().replace(/\//g, '__').replace(/-/g, '_').replace(/[^A-Z0-9_]/g, '');
|
|
37
|
+
return `${pathPart}_${sectionPart}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Escape a title for use in JSDoc comments.
|
|
41
|
+
* Removes backticks and other problematic characters.
|
|
42
|
+
*/
|
|
43
|
+
function escapeJsDocTitle(title) {
|
|
44
|
+
return title
|
|
45
|
+
.replace(/`/g, "'") // Replace backticks with single quotes
|
|
46
|
+
.replace(/\*/g, '') // Remove asterisks (would close JSDoc)
|
|
47
|
+
.replace(/\n/g, ' ') // Replace newlines with spaces
|
|
48
|
+
.trim();
|
|
16
49
|
}
|
|
17
50
|
/**
|
|
18
51
|
* Generate TypeScript types file from facets
|
|
@@ -26,7 +59,7 @@ function generateTypesFile(facets, featureName) {
|
|
|
26
59
|
// Generate constants for each facet ID (for autocomplete)
|
|
27
60
|
const constants = facets.map(f => {
|
|
28
61
|
const constName = toConstantName(f.id);
|
|
29
|
-
const comment = f.title ? ` /** ${f.title} */` : '';
|
|
62
|
+
const comment = f.title ? ` /** ${escapeJsDocTitle(f.title)} */` : '';
|
|
30
63
|
return `${comment}\n ${constName}: '${f.id}' as const,`;
|
|
31
64
|
}).join('\n');
|
|
32
65
|
// Generate the types file content
|
|
@@ -79,9 +112,302 @@ ${facetIds.map(id => ` '${id}',`).join('\n')}
|
|
|
79
112
|
`;
|
|
80
113
|
}
|
|
81
114
|
/**
|
|
82
|
-
* Generate
|
|
115
|
+
* Generate global types file that combines all features
|
|
83
116
|
*/
|
|
84
|
-
|
|
117
|
+
function generateGlobalTypesFile(allFacets, featureImports) {
|
|
118
|
+
const facetIds = allFacets.map(f => f.id);
|
|
119
|
+
// Generate the union type
|
|
120
|
+
const unionType = facetIds.length > 0
|
|
121
|
+
? facetIds.map(id => ` | '${id}'`).join('\n')
|
|
122
|
+
: " | never";
|
|
123
|
+
// Generate constants for each facet ID
|
|
124
|
+
const constants = allFacets.map(f => {
|
|
125
|
+
const constName = toConstantName(f.id);
|
|
126
|
+
const comment = f.title ? ` /** ${escapeJsDocTitle(f.title)} */` : '';
|
|
127
|
+
return `${comment}\n ${constName}: '${f.id}' as const,`;
|
|
128
|
+
}).join('\n');
|
|
129
|
+
// Generate re-exports for each feature
|
|
130
|
+
const reExports = Array.from(featureImports.entries())
|
|
131
|
+
.map(([feature, path]) => `export * as ${feature} from '${path}';`)
|
|
132
|
+
.join('\n');
|
|
133
|
+
return `/**
|
|
134
|
+
* Auto-generated Global Facet types
|
|
135
|
+
* Combines all features for single import point
|
|
136
|
+
*
|
|
137
|
+
* Generated by: bunx facet generate --global
|
|
138
|
+
* DO NOT EDIT THIS FILE MANUALLY
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
// Re-export all feature-specific types
|
|
142
|
+
${reExports}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* All valid facet IDs across ALL features
|
|
146
|
+
*/
|
|
147
|
+
export type FacetId =
|
|
148
|
+
${unionType};
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Combined Facet ID constants from all features
|
|
152
|
+
*/
|
|
153
|
+
export const Facets = {
|
|
154
|
+
${constants}
|
|
155
|
+
} as const;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Type-safe facet annotation helper (global version)
|
|
159
|
+
*/
|
|
160
|
+
export function facet<T extends FacetId>(...facetIds: T[]): { facets: T[]; toString: () => string } {
|
|
161
|
+
return {
|
|
162
|
+
facets: facetIds,
|
|
163
|
+
toString: () => facetIds.join(', '),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* All facet IDs across all features
|
|
169
|
+
*/
|
|
170
|
+
export const allFacetIds: FacetId[] = [
|
|
171
|
+
${facetIds.map(id => ` '${id}',`).join('\n')}
|
|
172
|
+
];
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get facet type from file path.
|
|
177
|
+
* Handles both .facet.md and .md extensions.
|
|
178
|
+
*/
|
|
179
|
+
function getFacetType(filePath, options) {
|
|
180
|
+
if (options.type) {
|
|
181
|
+
return options.type;
|
|
182
|
+
}
|
|
183
|
+
return FacetParser_js_1.FacetParser.getFilePrefix(filePath);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Find facet files in a directory (both conventions)
|
|
187
|
+
*/
|
|
188
|
+
function findFacetFilesInDir(dir) {
|
|
189
|
+
const files = [];
|
|
190
|
+
// Find *.facet.md files in the directory
|
|
191
|
+
const entries = (0, fs_1.readdirSync)(dir, { withFileTypes: true });
|
|
192
|
+
for (const entry of entries) {
|
|
193
|
+
if (entry.isFile()) {
|
|
194
|
+
if (entry.name.endsWith('.facet.md') || entry.name.endsWith('.md')) {
|
|
195
|
+
files.push((0, path_1.join)(dir, entry.name));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return files;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Recursively discover all facet files matching patterns
|
|
203
|
+
*/
|
|
204
|
+
async function discoverFacetFiles(rootDir, patterns) {
|
|
205
|
+
const allFiles = [];
|
|
206
|
+
for (const pattern of patterns) {
|
|
207
|
+
const matches = await (0, glob_1.glob)(pattern, { cwd: rootDir, absolute: true });
|
|
208
|
+
allFiles.push(...matches);
|
|
209
|
+
}
|
|
210
|
+
// Remove duplicates
|
|
211
|
+
return [...new Set(allFiles)];
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Group facet files by their feature directory
|
|
215
|
+
*/
|
|
216
|
+
function groupByFeature(files, rootDir) {
|
|
217
|
+
const groups = new Map();
|
|
218
|
+
for (const file of files) {
|
|
219
|
+
// Determine feature directory
|
|
220
|
+
let featureDir;
|
|
221
|
+
const fileDir = (0, path_1.dirname)(file);
|
|
222
|
+
if ((0, path_1.basename)(fileDir) === 'facets') {
|
|
223
|
+
// Legacy: features/checkout/facets/business.md -> features/checkout
|
|
224
|
+
featureDir = (0, path_1.dirname)(fileDir);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// New: features/checkout/business.facet.md -> features/checkout
|
|
228
|
+
featureDir = fileDir;
|
|
229
|
+
}
|
|
230
|
+
const existing = groups.get(featureDir) || [];
|
|
231
|
+
existing.push(file);
|
|
232
|
+
groups.set(featureDir, existing);
|
|
233
|
+
}
|
|
234
|
+
return groups;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Process a single feature directory and generate outputs
|
|
238
|
+
*/
|
|
239
|
+
async function processFeature(featureDir, files, rootDir, options, config) {
|
|
240
|
+
const parser = new FacetParser_js_1.FacetParser();
|
|
241
|
+
const facets = [];
|
|
242
|
+
const featureName = (0, path_1.basename)(featureDir);
|
|
243
|
+
console.log(`\n Feature: ${featureName}`);
|
|
244
|
+
// Get configured sub-facet heading levels (default: none - only list items and comment markers)
|
|
245
|
+
const subFacetHeadingLevels = config?.subFacetHeadingLevels || [];
|
|
246
|
+
for (const filePath of files) {
|
|
247
|
+
const parsed = parser.parseFile(filePath);
|
|
248
|
+
const type = getFacetType(filePath, options);
|
|
249
|
+
const fileName = (0, path_1.basename)(filePath);
|
|
250
|
+
console.log(` 📄 ${fileName}`);
|
|
251
|
+
// Track current parent facet for h3+ sub-facets
|
|
252
|
+
let currentParentFacetId = null;
|
|
253
|
+
let currentParentSection = null;
|
|
254
|
+
// Determine relative source path
|
|
255
|
+
const sourcePath = FacetParser_js_1.FacetParser.isFacetMdFile(filePath)
|
|
256
|
+
? fileName
|
|
257
|
+
: `facets/${fileName}`;
|
|
258
|
+
for (const section of parsed.sections) {
|
|
259
|
+
// Use hierarchical ID if nested, simple ID otherwise
|
|
260
|
+
const relPath = (0, path_1.relative)(rootDir, featureDir);
|
|
261
|
+
const isNested = relPath.includes('/') || relPath !== (0, path_1.basename)(featureDir);
|
|
262
|
+
// Check if this section level should be a sub-facet
|
|
263
|
+
const isSubFacetLevel = subFacetHeadingLevels.includes(section.level);
|
|
264
|
+
// Top-level sections (h2 or h1) become parent facets
|
|
265
|
+
if (section.level <= 2) {
|
|
266
|
+
const facetId = isNested
|
|
267
|
+
? FacetParser_js_1.FacetParser.generateHierarchicalFacetId(rootDir, filePath, section.slug)
|
|
268
|
+
: FacetParser_js_1.FacetParser.generateFacetId(filePath, section.slug);
|
|
269
|
+
// Add parent facet
|
|
270
|
+
facets.push({
|
|
271
|
+
id: facetId,
|
|
272
|
+
source: {
|
|
273
|
+
file: sourcePath,
|
|
274
|
+
section: section.slug,
|
|
275
|
+
},
|
|
276
|
+
type,
|
|
277
|
+
title: section.title,
|
|
278
|
+
});
|
|
279
|
+
console.log(` ✓ ${facetId}`);
|
|
280
|
+
// Track as current parent for h3+ sections
|
|
281
|
+
currentParentFacetId = facetId;
|
|
282
|
+
currentParentSection = section.slug;
|
|
283
|
+
// Process sub-facets from list items and comments if present
|
|
284
|
+
if (section.subFacets && section.subFacets.length > 0) {
|
|
285
|
+
for (const subFacet of section.subFacets) {
|
|
286
|
+
const subFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(facetId, subFacet.id);
|
|
287
|
+
facets.push({
|
|
288
|
+
id: subFacetId,
|
|
289
|
+
source: {
|
|
290
|
+
file: sourcePath,
|
|
291
|
+
section: section.slug,
|
|
292
|
+
line: subFacet.line,
|
|
293
|
+
},
|
|
294
|
+
type,
|
|
295
|
+
title: subFacet.title,
|
|
296
|
+
parentId: facetId,
|
|
297
|
+
isSubFacet: true,
|
|
298
|
+
});
|
|
299
|
+
console.log(` └─ ${subFacetId}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// h3+ sections with explicit IDs become sub-facets if configured
|
|
304
|
+
else if (isSubFacetLevel && section.explicitId && currentParentFacetId) {
|
|
305
|
+
const subFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(currentParentFacetId, section.explicitId);
|
|
306
|
+
facets.push({
|
|
307
|
+
id: subFacetId,
|
|
308
|
+
source: {
|
|
309
|
+
file: sourcePath,
|
|
310
|
+
section: currentParentSection || section.slug,
|
|
311
|
+
line: section.startLine,
|
|
312
|
+
},
|
|
313
|
+
type,
|
|
314
|
+
title: section.title,
|
|
315
|
+
parentId: currentParentFacetId,
|
|
316
|
+
isSubFacet: true,
|
|
317
|
+
});
|
|
318
|
+
console.log(` └─ ${subFacetId}`);
|
|
319
|
+
// Also process any sub-facets within this h3+ section (list items, comments)
|
|
320
|
+
if (section.subFacets && section.subFacets.length > 0) {
|
|
321
|
+
for (const subFacet of section.subFacets) {
|
|
322
|
+
const nestedSubFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(subFacetId, subFacet.id);
|
|
323
|
+
facets.push({
|
|
324
|
+
id: nestedSubFacetId,
|
|
325
|
+
source: {
|
|
326
|
+
file: sourcePath,
|
|
327
|
+
section: currentParentSection || section.slug,
|
|
328
|
+
line: subFacet.line,
|
|
329
|
+
},
|
|
330
|
+
type,
|
|
331
|
+
title: subFacet.title,
|
|
332
|
+
parentId: subFacetId,
|
|
333
|
+
isSubFacet: true,
|
|
334
|
+
});
|
|
335
|
+
console.log(` └─ ${nestedSubFacetId}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// h3+ sections without explicit IDs: attach their sub-facets to current parent
|
|
340
|
+
else if (section.level > 2 && currentParentFacetId && section.subFacets && section.subFacets.length > 0) {
|
|
341
|
+
for (const subFacet of section.subFacets) {
|
|
342
|
+
const subFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(currentParentFacetId, subFacet.id);
|
|
343
|
+
facets.push({
|
|
344
|
+
id: subFacetId,
|
|
345
|
+
source: {
|
|
346
|
+
file: sourcePath,
|
|
347
|
+
section: currentParentSection || section.slug,
|
|
348
|
+
line: subFacet.line,
|
|
349
|
+
},
|
|
350
|
+
type,
|
|
351
|
+
title: subFacet.title,
|
|
352
|
+
parentId: currentParentFacetId,
|
|
353
|
+
isSubFacet: true,
|
|
354
|
+
});
|
|
355
|
+
console.log(` └─ ${subFacetId}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Determine output directory
|
|
361
|
+
const outputDir = options.output || (0, path_1.join)(featureDir, '.facet');
|
|
362
|
+
// Build structure object
|
|
363
|
+
const structure = {
|
|
364
|
+
feature: featureName,
|
|
365
|
+
facets,
|
|
366
|
+
};
|
|
367
|
+
// Ensure output directory exists
|
|
368
|
+
(0, fs_1.mkdirSync)(outputDir, { recursive: true });
|
|
369
|
+
// Write structure file
|
|
370
|
+
const structurePath = (0, path_1.join)(outputDir, 'structure.json');
|
|
371
|
+
// Detect ID changes before writing
|
|
372
|
+
if (!options.quiet) {
|
|
373
|
+
const changeReport = IDChangeDetector_js_1.IDChangeDetector.detectChanges(structurePath, facets);
|
|
374
|
+
if (changeReport.hasChanges) {
|
|
375
|
+
console.log('\n ⚠️ Facet ID Changes Detected:');
|
|
376
|
+
const reportLines = IDChangeDetector_js_1.IDChangeDetector.formatReport(changeReport);
|
|
377
|
+
for (const line of reportLines) {
|
|
378
|
+
console.log(line);
|
|
379
|
+
}
|
|
380
|
+
// Show affected tests if we have config
|
|
381
|
+
if (config && (changeReport.renamed.length > 0 || changeReport.removed.length > 0)) {
|
|
382
|
+
const scanner = new TestScanner_js_1.TestScanner(config);
|
|
383
|
+
const affected = await IDChangeDetector_js_1.IDChangeDetector.findAffectedTests(changeReport, scanner, rootDir);
|
|
384
|
+
if (affected.size > 0) {
|
|
385
|
+
console.log('\n Tests that may need updates:');
|
|
386
|
+
for (const [oldId, tests] of affected) {
|
|
387
|
+
console.log(`\n For "${oldId}":`);
|
|
388
|
+
for (const test of tests) {
|
|
389
|
+
console.log(` - ${test.file}:${test.line} "${test.title}"`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
console.log('');
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
(0, fs_1.writeFileSync)(structurePath, JSON.stringify(structure, null, 2));
|
|
398
|
+
// Generate TypeScript types file (unless disabled)
|
|
399
|
+
if (!options.noTypes) {
|
|
400
|
+
const typesContent = generateTypesFile(facets, featureName);
|
|
401
|
+
const typesPath = (0, path_1.join)(outputDir, 'facets.ts');
|
|
402
|
+
(0, fs_1.writeFileSync)(typesPath, typesContent);
|
|
403
|
+
}
|
|
404
|
+
console.log(` ✅ Generated: ${(0, path_1.relative)(process.cwd(), outputDir)}`);
|
|
405
|
+
return { facets, outputDir };
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Generate from explicit directory (backwards compatible)
|
|
409
|
+
*/
|
|
410
|
+
async function generateFromDirectory(dir, options, config) {
|
|
85
411
|
const facetsDir = (0, path_1.resolve)(process.cwd(), dir);
|
|
86
412
|
if (!(0, fs_1.existsSync)(facetsDir)) {
|
|
87
413
|
console.error(`❌ Directory not found: ${facetsDir}`);
|
|
@@ -89,33 +415,120 @@ async function generateCommand(dir, options = {}) {
|
|
|
89
415
|
}
|
|
90
416
|
console.log(`💎 Generating structure from: ${facetsDir}`);
|
|
91
417
|
// Find all markdown files in the directory
|
|
92
|
-
const files = (
|
|
418
|
+
const files = findFacetFilesInDir(facetsDir);
|
|
93
419
|
if (files.length === 0) {
|
|
94
420
|
console.error(`❌ No markdown files found in: ${facetsDir}`);
|
|
95
421
|
process.exit(1);
|
|
96
422
|
}
|
|
97
423
|
const parser = new FacetParser_js_1.FacetParser();
|
|
98
424
|
const facets = [];
|
|
99
|
-
|
|
100
|
-
|
|
425
|
+
// Get configured sub-facet heading levels (default: none)
|
|
426
|
+
const subFacetHeadingLevels = config?.subFacetHeadingLevels || [];
|
|
427
|
+
for (const filePath of files) {
|
|
101
428
|
const parsed = parser.parseFile(filePath);
|
|
102
|
-
|
|
103
|
-
const type =
|
|
429
|
+
const file = (0, path_1.basename)(filePath);
|
|
430
|
+
const type = getFacetType(filePath, options);
|
|
104
431
|
console.log(` 📄 ${file}`);
|
|
432
|
+
// Track current parent facet for h3+ sub-facets
|
|
433
|
+
let currentParentFacetId = null;
|
|
434
|
+
let currentParentSection = null;
|
|
435
|
+
// Determine source path based on file type
|
|
436
|
+
const sourcePath = FacetParser_js_1.FacetParser.isFacetMdFile(filePath)
|
|
437
|
+
? file
|
|
438
|
+
: `facets/${file}`;
|
|
105
439
|
for (const section of parsed.sections) {
|
|
106
|
-
//
|
|
440
|
+
// Check if this section level should be a sub-facet
|
|
441
|
+
const isSubFacetLevel = subFacetHeadingLevels.includes(section.level);
|
|
442
|
+
// Top-level sections (h2 or h1) become parent facets
|
|
107
443
|
if (section.level <= 2) {
|
|
108
444
|
const facetId = FacetParser_js_1.FacetParser.generateFacetId(file, section.slug);
|
|
109
445
|
facets.push({
|
|
110
446
|
id: facetId,
|
|
111
447
|
source: {
|
|
112
|
-
file:
|
|
448
|
+
file: sourcePath,
|
|
113
449
|
section: section.slug,
|
|
114
450
|
},
|
|
115
451
|
type,
|
|
116
452
|
title: section.title,
|
|
117
453
|
});
|
|
118
454
|
console.log(` ✓ ${facetId}`);
|
|
455
|
+
// Track as current parent for h3+ sections
|
|
456
|
+
currentParentFacetId = facetId;
|
|
457
|
+
currentParentSection = section.slug;
|
|
458
|
+
// Process sub-facets from list items and comments if present
|
|
459
|
+
if (section.subFacets && section.subFacets.length > 0) {
|
|
460
|
+
for (const subFacet of section.subFacets) {
|
|
461
|
+
const subFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(facetId, subFacet.id);
|
|
462
|
+
facets.push({
|
|
463
|
+
id: subFacetId,
|
|
464
|
+
source: {
|
|
465
|
+
file: sourcePath,
|
|
466
|
+
section: section.slug,
|
|
467
|
+
line: subFacet.line,
|
|
468
|
+
},
|
|
469
|
+
type,
|
|
470
|
+
title: subFacet.title,
|
|
471
|
+
parentId: facetId,
|
|
472
|
+
isSubFacet: true,
|
|
473
|
+
});
|
|
474
|
+
console.log(` └─ ${subFacetId}`);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
// h3+ sections with explicit IDs become sub-facets if configured
|
|
479
|
+
else if (isSubFacetLevel && section.explicitId && currentParentFacetId) {
|
|
480
|
+
const subFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(currentParentFacetId, section.explicitId);
|
|
481
|
+
facets.push({
|
|
482
|
+
id: subFacetId,
|
|
483
|
+
source: {
|
|
484
|
+
file: sourcePath,
|
|
485
|
+
section: currentParentSection || section.slug,
|
|
486
|
+
line: section.startLine,
|
|
487
|
+
},
|
|
488
|
+
type,
|
|
489
|
+
title: section.title,
|
|
490
|
+
parentId: currentParentFacetId,
|
|
491
|
+
isSubFacet: true,
|
|
492
|
+
});
|
|
493
|
+
console.log(` └─ ${subFacetId}`);
|
|
494
|
+
// Also process any sub-facets within this h3+ section
|
|
495
|
+
if (section.subFacets && section.subFacets.length > 0) {
|
|
496
|
+
for (const subFacet of section.subFacets) {
|
|
497
|
+
const nestedSubFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(subFacetId, subFacet.id);
|
|
498
|
+
facets.push({
|
|
499
|
+
id: nestedSubFacetId,
|
|
500
|
+
source: {
|
|
501
|
+
file: sourcePath,
|
|
502
|
+
section: currentParentSection || section.slug,
|
|
503
|
+
line: subFacet.line,
|
|
504
|
+
},
|
|
505
|
+
type,
|
|
506
|
+
title: subFacet.title,
|
|
507
|
+
parentId: subFacetId,
|
|
508
|
+
isSubFacet: true,
|
|
509
|
+
});
|
|
510
|
+
console.log(` └─ ${nestedSubFacetId}`);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
// h3+ sections without explicit IDs: attach their sub-facets to current parent
|
|
515
|
+
else if (section.level > 2 && currentParentFacetId && section.subFacets && section.subFacets.length > 0) {
|
|
516
|
+
for (const subFacet of section.subFacets) {
|
|
517
|
+
const subFacetId = FacetParser_js_1.FacetParser.generateSubFacetId(currentParentFacetId, subFacet.id);
|
|
518
|
+
facets.push({
|
|
519
|
+
id: subFacetId,
|
|
520
|
+
source: {
|
|
521
|
+
file: sourcePath,
|
|
522
|
+
section: currentParentSection || section.slug,
|
|
523
|
+
line: subFacet.line,
|
|
524
|
+
},
|
|
525
|
+
type,
|
|
526
|
+
title: subFacet.title,
|
|
527
|
+
parentId: currentParentFacetId,
|
|
528
|
+
isSubFacet: true,
|
|
529
|
+
});
|
|
530
|
+
console.log(` └─ ${subFacetId}`);
|
|
531
|
+
}
|
|
119
532
|
}
|
|
120
533
|
}
|
|
121
534
|
}
|
|
@@ -145,4 +558,71 @@ async function generateCommand(dir, options = {}) {
|
|
|
145
558
|
console.log(` Types: ${typesPath}`);
|
|
146
559
|
}
|
|
147
560
|
}
|
|
561
|
+
/**
|
|
562
|
+
* Generate from config patterns
|
|
563
|
+
*/
|
|
564
|
+
async function generateFromConfig(config, options) {
|
|
565
|
+
const cwd = process.cwd();
|
|
566
|
+
// Get facet patterns from config
|
|
567
|
+
const patterns = Array.isArray(config.facetPattern)
|
|
568
|
+
? config.facetPattern
|
|
569
|
+
: config.facetPattern
|
|
570
|
+
? [config.facetPattern]
|
|
571
|
+
: ['features/**/*.facet.md', 'features/**/facets/*.md'];
|
|
572
|
+
console.log('💎 Discovering facet files...\n');
|
|
573
|
+
// Find all matching files
|
|
574
|
+
const files = await discoverFacetFiles(cwd, patterns);
|
|
575
|
+
if (files.length === 0) {
|
|
576
|
+
console.error('❌ No facet files found matching patterns:');
|
|
577
|
+
for (const pattern of patterns) {
|
|
578
|
+
console.error(` - ${pattern}`);
|
|
579
|
+
}
|
|
580
|
+
console.error('\nMake sure facet files exist or specify a directory explicitly:');
|
|
581
|
+
console.error(' bunx facet generate features/checkout/facets/');
|
|
582
|
+
process.exit(1);
|
|
583
|
+
}
|
|
584
|
+
console.log(`Found ${files.length} facet file(s)`);
|
|
585
|
+
// Group files by feature
|
|
586
|
+
const featureGroups = groupByFeature(files, cwd);
|
|
587
|
+
const allFacets = [];
|
|
588
|
+
const featureOutputs = new Map();
|
|
589
|
+
// Process each feature
|
|
590
|
+
for (const [featureDir, featureFiles] of featureGroups) {
|
|
591
|
+
const { facets, outputDir } = await processFeature(featureDir, featureFiles, cwd, options, config);
|
|
592
|
+
allFacets.push(...facets);
|
|
593
|
+
// Store for global types
|
|
594
|
+
const featureName = (0, path_1.basename)(featureDir);
|
|
595
|
+
const relativeOutput = (0, path_1.relative)((0, path_1.join)(cwd, '.facet'), (0, path_1.join)(outputDir, 'facets'));
|
|
596
|
+
featureOutputs.set(featureName, relativeOutput);
|
|
597
|
+
}
|
|
598
|
+
// Generate global types if requested
|
|
599
|
+
if (options.global && !options.noTypes) {
|
|
600
|
+
const globalOutputDir = (0, path_1.join)(cwd, '.facet');
|
|
601
|
+
(0, fs_1.mkdirSync)(globalOutputDir, { recursive: true });
|
|
602
|
+
const globalTypesContent = generateGlobalTypesFile(allFacets, featureOutputs);
|
|
603
|
+
const globalTypesPath = (0, path_1.join)(globalOutputDir, 'facets.ts');
|
|
604
|
+
(0, fs_1.writeFileSync)(globalTypesPath, globalTypesContent);
|
|
605
|
+
console.log(`\n✅ Generated global types: ${(0, path_1.relative)(cwd, globalTypesPath)}`);
|
|
606
|
+
}
|
|
607
|
+
// Summary
|
|
608
|
+
console.log(`\n📊 Summary:`);
|
|
609
|
+
console.log(` Features: ${featureGroups.size}`);
|
|
610
|
+
console.log(` Total Facets: ${allFacets.length}`);
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Generate structure.json and TypeScript types from facet markdown files
|
|
614
|
+
*/
|
|
615
|
+
async function generateCommand(dir, options = {}) {
|
|
616
|
+
const cwd = process.cwd();
|
|
617
|
+
// Always try to load config for options like subFacetHeadingLevels
|
|
618
|
+
const config = await (0, config_js_1.loadConfig)(options.config, cwd);
|
|
619
|
+
if (dir) {
|
|
620
|
+
// Backwards compatible: explicit directory provided, but pass config for options
|
|
621
|
+
await generateFromDirectory(dir, options, config);
|
|
622
|
+
}
|
|
623
|
+
else {
|
|
624
|
+
// New behavior: use config to find facet files
|
|
625
|
+
await generateFromConfig(config, options);
|
|
626
|
+
}
|
|
627
|
+
}
|
|
148
628
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlF"}
|