@facet-coverage/core 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AASA,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqfD;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AASA,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA8tBD;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -9,15 +9,43 @@ const IDChangeDetector_js_1 = require("../../core/IDChangeDetector.js");
9
9
  const TestScanner_js_1 = require("../../core/TestScanner.js");
10
10
  const config_js_1 = require("../utils/config.js");
11
11
  /**
12
- * Convert a facet ID to a valid TypeScript identifier
13
- * e.g., "business:guest-purchase-flow" -> "BUSINESS_GUEST_PURCHASE_FLOW"
14
- * e.g., "checkout/payments/pci:card-storage" -> "CHECKOUT_PAYMENTS_PCI_CARD_STORAGE"
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 __)
15
23
  */
16
24
  function toConstantName(facetId) {
17
- return facetId
18
- .toUpperCase()
19
- .replace(/[/:-]/g, '_')
20
- .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();
21
49
  }
22
50
  /**
23
51
  * Generate TypeScript types file from facets
@@ -31,7 +59,7 @@ function generateTypesFile(facets, featureName) {
31
59
  // Generate constants for each facet ID (for autocomplete)
32
60
  const constants = facets.map(f => {
33
61
  const constName = toConstantName(f.id);
34
- const comment = f.title ? ` /** ${f.title} */` : '';
62
+ const comment = f.title ? ` /** ${escapeJsDocTitle(f.title)} */` : '';
35
63
  return `${comment}\n ${constName}: '${f.id}' as const,`;
36
64
  }).join('\n');
37
65
  // Generate the types file content
@@ -95,7 +123,7 @@ function generateGlobalTypesFile(allFacets, featureImports) {
95
123
  // Generate constants for each facet ID
96
124
  const constants = allFacets.map(f => {
97
125
  const constName = toConstantName(f.id);
98
- const comment = f.title ? ` /** ${f.title} */` : '';
126
+ const comment = f.title ? ` /** ${escapeJsDocTitle(f.title)} */` : '';
99
127
  return `${comment}\n ${constName}: '${f.id}' as const,`;
100
128
  }).join('\n');
101
129
  // Generate re-exports for each feature
@@ -213,24 +241,32 @@ async function processFeature(featureDir, files, rootDir, options, config) {
213
241
  const facets = [];
214
242
  const featureName = (0, path_1.basename)(featureDir);
215
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 || [];
216
246
  for (const filePath of files) {
217
247
  const parsed = parser.parseFile(filePath);
218
248
  const type = getFacetType(filePath, options);
219
249
  const fileName = (0, path_1.basename)(filePath);
220
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}`;
221
258
  for (const section of parsed.sections) {
222
- // Only include top-level sections (h2 or the first h1 if no h2s)
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
223
265
  if (section.level <= 2) {
224
- // Use hierarchical ID if nested, simple ID otherwise
225
- const relPath = (0, path_1.relative)(rootDir, featureDir);
226
- const isNested = relPath.includes('/') || relPath !== (0, path_1.basename)(featureDir);
227
266
  const facetId = isNested
228
267
  ? FacetParser_js_1.FacetParser.generateHierarchicalFacetId(rootDir, filePath, section.slug)
229
268
  : FacetParser_js_1.FacetParser.generateFacetId(filePath, section.slug);
230
- // Determine relative source path
231
- const sourcePath = FacetParser_js_1.FacetParser.isFacetMdFile(filePath)
232
- ? fileName
233
- : `facets/${fileName}`;
269
+ // Add parent facet
234
270
  facets.push({
235
271
  id: facetId,
236
272
  source: {
@@ -241,6 +277,83 @@ async function processFeature(featureDir, files, rootDir, options, config) {
241
277
  title: section.title,
242
278
  });
243
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
+ }
244
357
  }
245
358
  }
246
359
  }
@@ -294,7 +407,7 @@ async function processFeature(featureDir, files, rootDir, options, config) {
294
407
  /**
295
408
  * Generate from explicit directory (backwards compatible)
296
409
  */
297
- async function generateFromDirectory(dir, options) {
410
+ async function generateFromDirectory(dir, options, config) {
298
411
  const facetsDir = (0, path_1.resolve)(process.cwd(), dir);
299
412
  if (!(0, fs_1.existsSync)(facetsDir)) {
300
413
  console.error(`❌ Directory not found: ${facetsDir}`);
@@ -309,18 +422,26 @@ async function generateFromDirectory(dir, options) {
309
422
  }
310
423
  const parser = new FacetParser_js_1.FacetParser();
311
424
  const facets = [];
425
+ // Get configured sub-facet heading levels (default: none)
426
+ const subFacetHeadingLevels = config?.subFacetHeadingLevels || [];
312
427
  for (const filePath of files) {
313
428
  const parsed = parser.parseFile(filePath);
314
429
  const file = (0, path_1.basename)(filePath);
315
430
  const type = getFacetType(filePath, options);
316
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}`;
317
439
  for (const section of parsed.sections) {
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
318
443
  if (section.level <= 2) {
319
444
  const facetId = FacetParser_js_1.FacetParser.generateFacetId(file, section.slug);
320
- // Determine source path based on file type
321
- const sourcePath = FacetParser_js_1.FacetParser.isFacetMdFile(filePath)
322
- ? file
323
- : `facets/${file}`;
324
445
  facets.push({
325
446
  id: facetId,
326
447
  source: {
@@ -331,6 +452,83 @@ async function generateFromDirectory(dir, options) {
331
452
  title: section.title,
332
453
  });
333
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
+ }
334
532
  }
335
533
  }
336
534
  }
@@ -416,13 +614,14 @@ async function generateFromConfig(config, options) {
416
614
  */
417
615
  async function generateCommand(dir, options = {}) {
418
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);
419
619
  if (dir) {
420
- // Backwards compatible: explicit directory provided
421
- await generateFromDirectory(dir, options);
620
+ // Backwards compatible: explicit directory provided, but pass config for options
621
+ await generateFromDirectory(dir, options, config);
422
622
  }
423
623
  else {
424
624
  // New behavior: use config to find facet files
425
- const config = await (0, config_js_1.loadConfig)(options.config, cwd);
426
625
  await generateFromConfig(config, options);
427
626
  }
428
627
  }
@@ -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,4 +1,4 @@
1
- import type { MarkdownSection, ParsedMarkdown } from '../types.js';
1
+ import type { MarkdownSection, ParsedMarkdown, SubFacetMarker } from '../types.js';
2
2
  /**
3
3
  * Parses markdown files and extracts sections
4
4
  */
@@ -7,6 +7,18 @@ export declare class FacetParser {
7
7
  * Convert a title to a URL-friendly slug
8
8
  */
9
9
  static slugify(title: string): string;
10
+ /**
11
+ * Parse sub-facet markers from content lines.
12
+ * Supports three patterns:
13
+ * 1. List item IDs: `1. **Item** {#sub-id} - description` or `- Item {#sub-id}`
14
+ * 2. Comment markers: `<!-- @facet:sub-id -->`
15
+ * 3. Empty link anchors: `[](#sub-id)` - renders invisibly in markdown
16
+ *
17
+ * @param lines - Array of content lines
18
+ * @param startLineNumber - The 1-indexed line number of the first line in the array
19
+ * @returns Array of SubFacetMarker objects
20
+ */
21
+ static parseSubFacets(lines: string[], startLineNumber: number): SubFacetMarker[];
10
22
  /**
11
23
  * Parse a markdown file and extract all sections
12
24
  */
@@ -52,5 +64,28 @@ export declare class FacetParser {
52
64
  * @returns ID like "checkout/payments/pci:section-slug" or "business:section-slug"
53
65
  */
54
66
  static generateHierarchicalFacetId(rootDir: string, facetFile: string, sectionSlug: string): string;
67
+ /**
68
+ * Generate a sub-facet ID from a parent facet ID and sub-facet marker ID.
69
+ * Creates hierarchical ID like "type:parent/child"
70
+ *
71
+ * @param parentFacetId - The parent facet ID (e.g., "compliance:pci-dss")
72
+ * @param subFacetId - The local sub-facet ID from marker (e.g., "tls")
73
+ * @returns Combined ID like "compliance:pci-dss/tls"
74
+ */
75
+ static generateSubFacetId(parentFacetId: string, subFacetId: string): string;
76
+ /**
77
+ * Check if a facet ID is a sub-facet (contains "/" after the ":")
78
+ *
79
+ * @param facetId - The facet ID to check
80
+ * @returns true if this is a sub-facet ID
81
+ */
82
+ static isSubFacetId(facetId: string): boolean;
83
+ /**
84
+ * Extract parent facet ID from a sub-facet ID
85
+ *
86
+ * @param subFacetId - The sub-facet ID (e.g., "compliance:pci-dss/tls")
87
+ * @returns The parent ID (e.g., "compliance:pci-dss") or null if not a sub-facet
88
+ */
89
+ static getParentFacetId(subFacetId: string): string | null;
55
90
  }
56
91
  //# sourceMappingURL=FacetParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FacetParser.d.ts","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnE;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUrC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAS3C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,cAAc;IAoDpE;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9E;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAS7D;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAK3C;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAKrE;;;;;;;;OAQG;IACH,MAAM,CAAC,2BAA2B,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM;CAoBV"}
1
+ {"version":3,"file":"FacetParser.d.ts","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnF;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUrC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,cAAc,EAAE;IA+DjF;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAS3C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,cAAc;IAyDpE;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9E;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAS7D;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAK3C;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ9C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAKrE;;;;;;;;OAQG;IACH,MAAM,CAAC,2BAA2B,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM;IAqBT;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAI5E;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAM7C;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAS3D"}
@@ -19,6 +19,70 @@ class FacetParser {
19
19
  .replace(/-+/g, '-') // Replace multiple hyphens with single
20
20
  .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens
21
21
  }
22
+ /**
23
+ * Parse sub-facet markers from content lines.
24
+ * Supports three patterns:
25
+ * 1. List item IDs: `1. **Item** {#sub-id} - description` or `- Item {#sub-id}`
26
+ * 2. Comment markers: `<!-- @facet:sub-id -->`
27
+ * 3. Empty link anchors: `[](#sub-id)` - renders invisibly in markdown
28
+ *
29
+ * @param lines - Array of content lines
30
+ * @param startLineNumber - The 1-indexed line number of the first line in the array
31
+ * @returns Array of SubFacetMarker objects
32
+ */
33
+ static parseSubFacets(lines, startLineNumber) {
34
+ const subFacets = [];
35
+ // Pattern for list item with {#id}: matches "1. **text** {#id} - rest", "- text {#id}", "* text {#id}"
36
+ // The {#id} can appear anywhere in the list item, followed by optional content
37
+ // Captures: list marker, text before {#id}, the ID, and optional rest
38
+ const listItemPattern = /^(\s*(?:[-*]|\d+\.)\s+)(.+?)\s*\{#([a-z0-9-]+)\}(.*)$/;
39
+ // Pattern for comment markers: <!-- @facet:id --> or <!-- @facet: id -->
40
+ const commentPattern = /<!--\s*@facet:\s*([a-z0-9-]+)\s*-->/g;
41
+ // Pattern for empty link anchors: [](#id) or []( #id ) with optional whitespace
42
+ const emptyLinkPattern = /\[\]\(\s*#([a-z0-9-]+)\s*\)/g;
43
+ for (let i = 0; i < lines.length; i++) {
44
+ const line = lines[i];
45
+ const lineNumber = startLineNumber + i;
46
+ // Check for list item with {#id}
47
+ const listMatch = line.match(listItemPattern);
48
+ if (listMatch) {
49
+ // Extract title: the text before {#id}
50
+ let title = listMatch[2].trim();
51
+ // Remove markdown bold: **text** -> text
52
+ title = title.replace(/\*\*([^*]+)\*\*/g, '$1');
53
+ // Clean up any trailing punctuation
54
+ title = title.replace(/[:\s-]+$/, '').trim();
55
+ subFacets.push({
56
+ id: listMatch[3],
57
+ title: title,
58
+ line: lineNumber,
59
+ type: 'list-item',
60
+ });
61
+ continue;
62
+ }
63
+ // Check for comment markers (can have multiple per line)
64
+ let commentMatch;
65
+ while ((commentMatch = commentPattern.exec(line)) !== null) {
66
+ subFacets.push({
67
+ id: commentMatch[1],
68
+ line: lineNumber,
69
+ type: 'comment',
70
+ });
71
+ }
72
+ commentPattern.lastIndex = 0;
73
+ // Check for empty link anchors (can have multiple per line)
74
+ let linkMatch;
75
+ while ((linkMatch = emptyLinkPattern.exec(line)) !== null) {
76
+ subFacets.push({
77
+ id: linkMatch[1],
78
+ line: lineNumber,
79
+ type: 'link',
80
+ });
81
+ }
82
+ emptyLinkPattern.lastIndex = 0;
83
+ }
84
+ return subFacets;
85
+ }
22
86
  /**
23
87
  * Parse a markdown file and extract all sections
24
88
  */
@@ -60,6 +124,9 @@ class FacetParser {
60
124
  // Extract content between headings
61
125
  const contentLines = lines.slice(startLine, endLine - 1);
62
126
  const sectionContent = contentLines.join('\n').trim();
127
+ // Parse sub-facets from section content
128
+ // Content starts at line after heading (startLine is the heading itself)
129
+ const subFacets = FacetParser.parseSubFacets(contentLines, startLine + 1);
63
130
  sections.push({
64
131
  title: heading.title,
65
132
  slug: heading.explicitId || FacetParser.slugify(heading.title),
@@ -68,6 +135,7 @@ class FacetParser {
68
135
  endLine,
69
136
  content: sectionContent,
70
137
  explicitId: heading.explicitId,
138
+ subFacets: subFacets.length > 0 ? subFacets : undefined,
71
139
  });
72
140
  }
73
141
  return {
@@ -151,6 +219,44 @@ class FacetParser {
151
219
  }
152
220
  return `${prefix}:${sectionSlug}`;
153
221
  }
222
+ /**
223
+ * Generate a sub-facet ID from a parent facet ID and sub-facet marker ID.
224
+ * Creates hierarchical ID like "type:parent/child"
225
+ *
226
+ * @param parentFacetId - The parent facet ID (e.g., "compliance:pci-dss")
227
+ * @param subFacetId - The local sub-facet ID from marker (e.g., "tls")
228
+ * @returns Combined ID like "compliance:pci-dss/tls"
229
+ */
230
+ static generateSubFacetId(parentFacetId, subFacetId) {
231
+ return `${parentFacetId}/${subFacetId}`;
232
+ }
233
+ /**
234
+ * Check if a facet ID is a sub-facet (contains "/" after the ":")
235
+ *
236
+ * @param facetId - The facet ID to check
237
+ * @returns true if this is a sub-facet ID
238
+ */
239
+ static isSubFacetId(facetId) {
240
+ const colonIndex = facetId.indexOf(':');
241
+ if (colonIndex === -1)
242
+ return false;
243
+ return facetId.indexOf('/', colonIndex) !== -1;
244
+ }
245
+ /**
246
+ * Extract parent facet ID from a sub-facet ID
247
+ *
248
+ * @param subFacetId - The sub-facet ID (e.g., "compliance:pci-dss/tls")
249
+ * @returns The parent ID (e.g., "compliance:pci-dss") or null if not a sub-facet
250
+ */
251
+ static getParentFacetId(subFacetId) {
252
+ const colonIndex = subFacetId.indexOf(':');
253
+ if (colonIndex === -1)
254
+ return null;
255
+ const slashIndex = subFacetId.indexOf('/', colonIndex);
256
+ if (slashIndex === -1)
257
+ return null;
258
+ return subFacetId.substring(0, slashIndex);
259
+ }
154
260
  }
155
261
  exports.FacetParser = FacetParser;
156
262
  //# sourceMappingURL=FacetParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FacetParser.js","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FacetParser.js","sourceRoot":"","sources":["../../src/core/FacetParser.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,13 @@ export declare class TestScanner {
7
7
  constructor(config?: Partial<FacetConfig>);
8
8
  /**
9
9
  * Convert a Facets constant name to a facet ID.
10
- * Handles hierarchical IDs like:
10
+ * Handles hierarchical IDs and sub-facets:
11
11
  * - FEATURES_CORE_PRODUCT_STRUCTURE_READING -> features/core/product:structure-reading
12
12
  * - FEATURES_CLI_DX_CLI_ERGONOMICS -> features/cli/dx:cli-ergonomics
13
13
  * - PRODUCT_STRUCTURE_READING -> product:structure-reading (legacy)
14
+ * - COMPLIANCE_PCI_DSS__TLS -> compliance:pci-dss/tls (sub-facet with __)
15
+ *
16
+ * Convention: Double underscore (__) in the constant name indicates a sub-facet separator (/)
14
17
  */
15
18
  private convertConstantToFacetId;
16
19
  /**