@facet-coverage/core 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +296 -48
  2. package/dist/cli/commands/analyze.d.ts.map +1 -1
  3. package/dist/cli/commands/analyze.js +2 -35
  4. package/dist/cli/commands/analyze.js.map +1 -1
  5. package/dist/cli/commands/generate.d.ts +6 -2
  6. package/dist/cli/commands/generate.d.ts.map +1 -1
  7. package/dist/cli/commands/generate.js +371 -9
  8. package/dist/cli/commands/generate.js.map +1 -1
  9. package/dist/cli/commands/validate.d.ts.map +1 -1
  10. package/dist/cli/commands/validate.js +2 -34
  11. package/dist/cli/commands/validate.js.map +1 -1
  12. package/dist/cli/commands/watch.d.ts.map +1 -1
  13. package/dist/cli/commands/watch.js +2 -34
  14. package/dist/cli/commands/watch.js.map +1 -1
  15. package/dist/cli/index.js +9 -5
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/utils/config.d.ts +15 -0
  18. package/dist/cli/utils/config.d.ts.map +1 -0
  19. package/dist/cli/utils/config.js +88 -0
  20. package/dist/cli/utils/config.js.map +1 -0
  21. package/dist/core/FacetParser.d.ts +18 -1
  22. package/dist/core/FacetParser.d.ts.map +1 -1
  23. package/dist/core/FacetParser.js +45 -3
  24. package/dist/core/FacetParser.js.map +1 -1
  25. package/dist/core/IDChangeDetector.d.ts +50 -0
  26. package/dist/core/IDChangeDetector.d.ts.map +1 -0
  27. package/dist/core/IDChangeDetector.js +147 -0
  28. package/dist/core/IDChangeDetector.js.map +1 -0
  29. package/dist/core/TestScanner.d.ts +10 -1
  30. package/dist/core/TestScanner.d.ts.map +1 -1
  31. package/dist/core/TestScanner.js +124 -6
  32. package/dist/core/TestScanner.js.map +1 -1
  33. package/dist/types.d.ts +7 -1
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/types.js +2 -0
  36. package/dist/types.js.map +1 -1
  37. package/package.json +1 -1
@@ -13,6 +13,51 @@ class TestScanner {
13
13
  constructor(config = {}) {
14
14
  this.config = { ...types_js_1.defaultConfig, ...config };
15
15
  }
16
+ /**
17
+ * Convert a Facets constant name to a facet ID.
18
+ * Handles hierarchical IDs like:
19
+ * - FEATURES_CORE_PRODUCT_STRUCTURE_READING -> features/core/product:structure-reading
20
+ * - FEATURES_CLI_DX_CLI_ERGONOMICS -> features/cli/dx:cli-ergonomics
21
+ * - PRODUCT_STRUCTURE_READING -> product:structure-reading (legacy)
22
+ */
23
+ convertConstantToFacetId(constName) {
24
+ // Get facet types from config
25
+ const knownTypes = this.config.facetTypes || [];
26
+ // Split by underscore and lowercase
27
+ const parts = constName.toLowerCase().split('_');
28
+ // Check if it starts with 'features' (hierarchical ID)
29
+ if (parts[0] === 'features' && parts.length > 2) {
30
+ // Find where the type is in the parts
31
+ let typeIndex = -1;
32
+ for (let i = 1; i < parts.length; i++) {
33
+ if (knownTypes.includes(parts[i])) {
34
+ typeIndex = i;
35
+ break;
36
+ }
37
+ }
38
+ if (typeIndex > 1) {
39
+ // Build hierarchical ID: features/path/type:section
40
+ const pathParts = parts.slice(0, typeIndex); // includes 'features' and path
41
+ const type = parts[typeIndex];
42
+ const sectionParts = parts.slice(typeIndex + 1);
43
+ const path = pathParts.join('/');
44
+ const section = sectionParts.join('-');
45
+ return `${path}/${type}:${section}`;
46
+ }
47
+ }
48
+ // Legacy format: PRODUCT_STRUCTURE_READING -> product:structure-reading
49
+ // Find the type at the beginning
50
+ for (const type of knownTypes) {
51
+ if (parts[0] === type) {
52
+ const section = parts.slice(1).join('-');
53
+ return `${type}:${section}`;
54
+ }
55
+ }
56
+ // Fallback: treat first part as type, rest as section
57
+ const type = parts[0];
58
+ const section = parts.slice(1).join('-');
59
+ return `${type}:${section}`;
60
+ }
16
61
  /**
17
62
  * Find all test files matching configured patterns
18
63
  */
@@ -47,7 +92,8 @@ class TestScanner {
47
92
  }
48
93
  /**
49
94
  * Scan test content for facet annotations
50
- * Supports both Playwright-style annotations and comment-based annotations:
95
+ * Supports multiple annotation styles:
96
+ * - Function call: facet('id1', 'id2') or facet(Facets.ID) inside test body
51
97
  * - Playwright: test('name', { annotation: facet('id1', 'id2') }, ...)
52
98
  * - Comment: // @facet id1, id2 \n test('name', ...)
53
99
  */
@@ -61,16 +107,25 @@ class TestScanner {
61
107
  const testSimplePattern = /(?:test|it)\s*\(\s*(['"`])(.+?)\1\s*,/g;
62
108
  const describePattern = /describe\s*\(\s*(['"`])(.+?)\1/g;
63
109
  // Pattern for Playwright-style facet annotations
64
- const facetPattern = /annotation\s*:\s*facet\s*\(\s*([^)]+)\s*\)/g;
110
+ const facetAnnotationPattern = /annotation\s*:\s*facet\s*\(\s*([^)]+)\s*\)/g;
111
+ // Pattern for facet() function calls inside test body
112
+ // Matches: facet('id'), facet("id"), facet(Facets.ID), facet(Facets.ID, Facets.ID2)
113
+ const facetCallPattern = /^\s*facet\s*\(\s*([^)]+)\s*\)\s*;?\s*$/;
114
+ // Pattern to extract string literals
65
115
  const facetIdsPattern = /(['"`])([^'"`]+)\1/g;
116
+ // Pattern to extract Facets.CONSTANT references
117
+ const facetsConstPattern = /Facets\.([A-Z_][A-Z0-9_]*)/g;
66
118
  // Pattern for comment-based facet annotations: // @facet id1, id2
67
119
  const commentFacetPattern = /^\s*\/\/\s*@facet\s+(.+)$/;
68
- // Track brace depth for describe blocks
120
+ // Track brace depth for describe blocks and tests
69
121
  let braceDepth = 0;
70
122
  const describeDepths = [];
71
123
  // Track pending comment-based facet IDs
72
124
  let pendingFacetIds = [];
73
125
  let pendingFacetLine = -1;
126
+ // Track current test context for function-call style facets
127
+ let currentTest = null;
128
+ let currentTestFacetIds = [];
74
129
  for (let i = 0; i < lines.length; i++) {
75
130
  const line = lines[i];
76
131
  const lineNumber = i + 1;
@@ -93,12 +148,47 @@ class TestScanner {
93
148
  // Count braces for scope tracking
94
149
  const openBraces = (line.match(/\{/g) || []).length;
95
150
  const closeBraces = (line.match(/\}/g) || []).length;
151
+ // Check for facet() function call inside current test
152
+ if (currentTest && braceDepth > currentTest.startBrace) {
153
+ const facetCallMatch = facetCallPattern.exec(line);
154
+ if (facetCallMatch) {
155
+ const facetArgs = facetCallMatch[1];
156
+ // Extract string literal facet IDs
157
+ let idMatch;
158
+ while ((idMatch = facetIdsPattern.exec(facetArgs)) !== null) {
159
+ currentTestFacetIds.push(idMatch[2]);
160
+ }
161
+ facetIdsPattern.lastIndex = 0;
162
+ // Extract Facets.CONSTANT references - convert to facet ID format
163
+ while ((idMatch = facetsConstPattern.exec(facetArgs)) !== null) {
164
+ const constName = idMatch[1];
165
+ const facetId = this.convertConstantToFacetId(constName);
166
+ currentTestFacetIds.push(facetId);
167
+ }
168
+ facetsConstPattern.lastIndex = 0;
169
+ }
170
+ }
96
171
  braceDepth += openBraces - closeBraces;
97
172
  // Pop describe blocks when we exit their scope
98
173
  while (describeDepths.length > 0 && braceDepth <= describeDepths[describeDepths.length - 1]) {
99
174
  describeStack.pop();
100
175
  describeDepths.pop();
101
176
  }
177
+ // Check if we're exiting the current test
178
+ if (currentTest && braceDepth <= currentTest.startBrace) {
179
+ // Save the test with collected facet IDs
180
+ if (currentTestFacetIds.length > 0) {
181
+ testLinks.push({
182
+ file: (0, path_1.relative)(cwd, filePath),
183
+ title: currentTest.title,
184
+ fullTitle: currentTest.fullTitle,
185
+ facetIds: [...new Set(currentTestFacetIds)], // Deduplicate
186
+ line: currentTest.line,
187
+ });
188
+ }
189
+ currentTest = null;
190
+ currentTestFacetIds = [];
191
+ }
102
192
  // Look for test definitions
103
193
  // First try with annotation block pattern
104
194
  let testMatch = testPattern.exec(line);
@@ -120,8 +210,8 @@ class TestScanner {
120
210
  else {
121
211
  // Look for Playwright-style facet annotation in the next few lines
122
212
  const annotationBlock = lines.slice(i, Math.min(i + 10, lines.length)).join('\n');
123
- const facetMatch = facetPattern.exec(annotationBlock);
124
- facetPattern.lastIndex = 0;
213
+ const facetMatch = facetAnnotationPattern.exec(annotationBlock);
214
+ facetAnnotationPattern.lastIndex = 0;
125
215
  if (facetMatch) {
126
216
  const facetArgs = facetMatch[1];
127
217
  let idMatch;
@@ -129,10 +219,18 @@ class TestScanner {
129
219
  facetIds.push(idMatch[2]);
130
220
  }
131
221
  facetIdsPattern.lastIndex = 0;
222
+ // Also check for Facets.CONSTANT in annotation
223
+ while ((idMatch = facetsConstPattern.exec(facetArgs)) !== null) {
224
+ const constName = idMatch[1];
225
+ const facetId = this.convertConstantToFacetId(constName);
226
+ facetIds.push(facetId);
227
+ }
228
+ facetsConstPattern.lastIndex = 0;
132
229
  }
133
230
  }
231
+ const fullTitle = [...describeStack, testTitle].join(' > ');
134
232
  if (facetIds.length > 0) {
135
- const fullTitle = [...describeStack, testTitle].join(' > ');
233
+ // Has immediate facet IDs (comment or Playwright annotation)
136
234
  testLinks.push({
137
235
  file: (0, path_1.relative)(cwd, filePath),
138
236
  title: testTitle,
@@ -141,6 +239,16 @@ class TestScanner {
141
239
  line: lineNumber,
142
240
  });
143
241
  }
242
+ else {
243
+ // Start tracking for function-call style facets inside the test body
244
+ currentTest = {
245
+ title: testTitle,
246
+ fullTitle,
247
+ line: lineNumber,
248
+ startBrace: braceDepth - openBraces, // The brace level before this line's braces
249
+ };
250
+ currentTestFacetIds = [];
251
+ }
144
252
  }
145
253
  // Clear pending facet IDs if we've moved too far past them
146
254
  if (pendingFacetIds.length > 0 && lineNumber - pendingFacetLine > 3) {
@@ -148,6 +256,16 @@ class TestScanner {
148
256
  pendingFacetLine = -1;
149
257
  }
150
258
  }
259
+ // Handle case where file ends while still in a test
260
+ if (currentTest && currentTestFacetIds.length > 0) {
261
+ testLinks.push({
262
+ file: (0, path_1.relative)(cwd, filePath),
263
+ title: currentTest.title,
264
+ fullTitle: currentTest.fullTitle,
265
+ facetIds: [...new Set(currentTestFacetIds)],
266
+ line: currentTest.line,
267
+ });
268
+ }
151
269
  return testLinks;
152
270
  }
153
271
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TestScanner.js","sourceRoot":"","sources":["../../src/core/TestScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestScanner.js","sourceRoot":"","sources":["../../src/core/TestScanner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -148,6 +148,10 @@ export interface FacetConfig {
148
148
  testDir: string;
149
149
  /** Test file patterns */
150
150
  testPatterns?: string[];
151
+ /** Glob pattern(s) for finding facet markdown files */
152
+ facetPattern?: string | string[];
153
+ /** Known facet types used in this project (for resolving Facets.CONSTANT references) */
154
+ facetTypes?: string[];
151
155
  /** Validation options */
152
156
  validation: {
153
157
  /** Verify facet source files exist */
@@ -182,7 +186,7 @@ export declare const defaultConfig: FacetConfig;
182
186
  export interface MarkdownSection {
183
187
  /** Section title */
184
188
  title: string;
185
- /** Slug (URL-friendly version of title) */
189
+ /** Slug (URL-friendly version of title, or explicit anchor if provided) */
186
190
  slug: string;
187
191
  /** Heading level (1-6) */
188
192
  level: number;
@@ -192,6 +196,8 @@ export interface MarkdownSection {
192
196
  endLine: number;
193
197
  /** Section content */
194
198
  content: string;
199
+ /** Explicit anchor ID if provided via {#anchor} syntax */
200
+ explicitId?: string;
195
201
  }
196
202
  /**
197
203
  * Parsed markdown file
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -11,6 +11,8 @@ exports.defaultConfig = {
11
11
  structureFiles: ['features/**/.facet/structure.json'],
12
12
  testDir: './features/**/tests',
13
13
  testPatterns: ['**/*.spec.ts', '**/*.test.ts'],
14
+ facetPattern: ['features/**/*.facet.md', 'features/**/facets/*.md'],
15
+ facetTypes: ['product', 'dx', 'technical', 'compliance', 'business', 'ux'],
14
16
  validation: {
15
17
  requireSourceExists: true,
16
18
  requireSectionExists: true,
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAuLH;;GAEG;AACU,QAAA,aAAa,GAAgB;IACxC,cAAc,EAAE,CAAC,mCAAmC,CAAC;IACrD,OAAO,EAAE,qBAAqB;IAC9B,YAAY,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAC9C,UAAU,EAAE;QACV,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,IAAI;QAC1B,qBAAqB,EAAE,KAAK;KAC7B;IACD,MAAM,EAAE;QACN,GAAG,EAAE,iBAAiB;QACtB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;KACtC;IACD,UAAU,EAAE;QACV,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;KACX;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2LH;;GAEG;AACU,QAAA,aAAa,GAAgB;IACxC,cAAc,EAAE,CAAC,mCAAmC,CAAC;IACrD,OAAO,EAAE,qBAAqB;IAC9B,YAAY,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAC9C,YAAY,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;IACnE,UAAU,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC;IAC1E,UAAU,EAAE;QACV,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,IAAI;QAC1B,qBAAqB,EAAE,KAAK;KAC7B;IACD,MAAM,EAAE;QACN,GAAG,EAAE,iBAAiB;QACtB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;KACtC;IACD,UAAU,EAAE;QACV,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;KACX;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@facet-coverage/core",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Test every facet of your features - natural specifications with rigorous coverage tracking",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",