@descent-vtt/spec-guard 0.5.0 → 0.6.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 (54) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/README.md +201 -14
  3. package/dist/cli.d.ts +2 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +10 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/comments.d.ts.map +1 -1
  8. package/dist/comments.js +41 -19
  9. package/dist/comments.js.map +1 -1
  10. package/dist/engine.d.ts +117 -6
  11. package/dist/engine.d.ts.map +1 -1
  12. package/dist/engine.js +279 -150
  13. package/dist/engine.js.map +1 -1
  14. package/dist/glob.d.ts +11 -1
  15. package/dist/glob.d.ts.map +1 -1
  16. package/dist/glob.js +20 -5
  17. package/dist/glob.js.map +1 -1
  18. package/dist/graph.d.ts +124 -0
  19. package/dist/graph.d.ts.map +1 -0
  20. package/dist/graph.js +241 -0
  21. package/dist/graph.js.map +1 -0
  22. package/dist/imports.d.ts.map +1 -1
  23. package/dist/imports.js +10 -4
  24. package/dist/imports.js.map +1 -1
  25. package/dist/index.d.ts +6 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/layers.d.ts +72 -0
  30. package/dist/layers.d.ts.map +1 -0
  31. package/dist/layers.js +102 -0
  32. package/dist/layers.js.map +1 -0
  33. package/dist/parser.d.ts +36 -1
  34. package/dist/parser.d.ts.map +1 -1
  35. package/dist/parser.js +189 -4
  36. package/dist/parser.js.map +1 -1
  37. package/dist/polyglot.d.ts +11 -1
  38. package/dist/polyglot.d.ts.map +1 -1
  39. package/dist/polyglot.js +21 -17
  40. package/dist/polyglot.js.map +1 -1
  41. package/dist/reporter.d.ts.map +1 -1
  42. package/dist/reporter.js +62 -5
  43. package/dist/reporter.js.map +1 -1
  44. package/dist/runner.d.ts +25 -0
  45. package/dist/runner.d.ts.map +1 -1
  46. package/dist/runner.js +318 -93
  47. package/dist/runner.js.map +1 -1
  48. package/dist/text.d.ts +9 -1
  49. package/dist/text.d.ts.map +1 -1
  50. package/dist/text.js +29 -18
  51. package/dist/text.js.map +1 -1
  52. package/dist/types.d.ts +60 -2
  53. package/dist/types.d.ts.map +1 -1
  54. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAS5C,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAA8D,CAAC;AAErH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjG,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAID,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,UAAU,KAAK;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAiED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAgOvD;AAOD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAkGrF;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAGvE;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAIjF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAI9E;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAgC/C"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,CAS5C,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAA8D,CAAC;AAErH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjG,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAID,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1D,UAAU,KAAK;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAiED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAuOvD;AAOD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAkGrF;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAGvE;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAIjF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAI9E;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAgC/C"}
package/dist/imports.js CHANGED
@@ -308,12 +308,18 @@ export function tokenize(source) {
308
308
  }
309
309
  if (isIdentifierStart(char)) {
310
310
  const startColumn = column(index);
311
- let scan = index;
311
+ // Starts *past* the first character, which is already known to be an
312
+ // identifier start. That makes progress unconditional rather than a
313
+ // consequence of every start character also being a part character - a
314
+ // relation that holds today and that nothing enforces. This used to be an
315
+ // `if (scan === index) scan += 1` guard afterwards, which was unreachable
316
+ // and therefore untestable, and which would only have caught the problem
317
+ // after the loop had already declined to move. A zero-width word here
318
+ // does not spin, it appends a token per iteration until the process dies:
319
+ // the same failure the comment scanner is written to make impossible.
320
+ let scan = index + 1;
312
321
  while (scan < source.length && isIdentifierPart(source[scan]))
313
322
  scan += 1;
314
- /* c8 ignore next -- belt and braces: a word must consume at least one character */
315
- if (scan === index)
316
- scan += 1;
317
323
  tokens.push({ type: 'word', value: source.slice(index, scan), line, column: startColumn });
318
324
  index = scan;
319
325
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEnG,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC;IACxD,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AA0CrH;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,IAAY;IACrC,6EAA6E;IAC7E,qEAAqE;IACrE,uEAAuE;IACvE,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAQD,oEAAoE;AACpE,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,8EAA8E;IAC9E,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,MAAM,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,GAAG,SAAS,GAAG,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,CAAC,EAAU,EAAQ,EAAE;QACvC,IAAI,IAAI,CAAC,CAAC;QACV,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAsB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,GAAY,EAAE;QACjC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,sEAAsE;IACtE,MAAM,UAAU,GAAG,CAAC,KAAa,EAAiB,EAAE;QAClD,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,CAAC;QACX,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;YACrC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,CAAC;gBACX,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,KAAK,IAAI,IAAI,CAAC;YACd,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAE/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;gBAAE,KAAK,IAAI,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI;oBAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,EAAE,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAW,CAAC;gBACrC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,IAAI,IAAI,CAAC,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,KAAK,IAAI;oBAAE,MAAM;gBAC1B,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,GAAG,IAAI,CAAC;qBAC7B,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,GAAG,KAAK,CAAC;qBACnC,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBACnC,MAAM,GAAG,IAAI,CAAC;oBACd,IAAI,IAAI,CAAC,CAAC;oBACV,MAAM;gBACR,CAAC;gBACD,IAAI,IAAI,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAW,CAAC;gBAAE,IAAI,IAAI,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACrF,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACrB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAW,CAAC;gBACrC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,KAAK,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChC,IAAI,IAAI,CAAC,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;oBAClB,MAAM,GAAG,IAAI,CAAC;oBACd,IAAI,IAAI,CAAC,CAAC;oBACV,MAAM;gBACR,CAAC;gBACD,IAAI,KAAK,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC9C,kEAAkE;oBAClE,sDAAsD;oBACtD,WAAW,GAAG,IAAI,CAAC;oBACnB,MAAM;gBACR,CAAC;gBACD,IAAI,KAAK,KAAK,IAAI;oBAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBACtC,KAAK,IAAI,KAAK,CAAC;gBACf,IAAI,IAAI,CAAC,CAAC;YACZ,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,UAAU,IAAI,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACnF,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,6DAA6D;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7E,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,KAAM,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAY,GAAG,CAAC,EAAE,CAAC;YACpG,+DAA+D;YAC/D,aAAa,CAAC,GAAG,EAAE,CAAC;YACpB,UAAU,IAAI,CAAC,CAAC;YAChB,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACrB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAW,CAAC;gBACrC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,IAAI,IAAI,CAAC,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;oBAClB,MAAM,GAAG,IAAI,CAAC;oBACd,IAAI,IAAI,CAAC,CAAC;oBACV,MAAM;gBACR,CAAC;gBACD,IAAI,KAAK,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC9C,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC/B,UAAU,IAAI,CAAC,CAAC;oBAChB,IAAI,IAAI,CAAC,CAAC;oBACV,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;gBACR,CAAC;gBACD,IAAI,KAAK,KAAK,IAAI;oBAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,qEAAqE;YACrE,oEAAoE;YACpE,uEAAuE;YACvE,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,sEAAsE;YACtE,0EAA0E;YAC1E,sEAAsE;YACtE,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAW,CAAC;gBAAE,IAAI,IAAI,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3F,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG;YAAE,UAAU,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,GAAG;YAAE,UAAU,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,gFAAgF;AAEhF,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAwB,EAAE,IAAY;IACtE,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,KAAY,EAAE,MAAc,EAAQ,EAAE;QAClE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAU,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAEpC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;QAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,SAAS;QAEnD,6EAA6E;QAC7E,8CAA8C;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,EAAE,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK,KAAK,GAAG;YAAE,SAAS;QAErE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,2DAA2D;QAC3D,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG;YAAE,SAAS;QAExE,2CAA2C;QAC3C,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClC,IACE,QAAQ,EAAE,IAAI,KAAK,QAAQ;gBAC3B,OAAO,EAAE,IAAI,KAAK,OAAO;gBACzB,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,EAChD,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,QAAQ,CAAC,KAAK;oBACzB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;oBAC7C,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;YACrD,CAAC;YACD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,uCAAuC;QACvC,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS,EAAE,KAAK,CAAC,KAAK;gBACtB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,SAAS;YAAE,SAAS;QAExB,oEAAoE;QACpE,8EAA8E;QAC9E,yEAAyE;QACzE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,MAAM;YACrB,KAAK,CAAC,KAAK,KAAK,MAAM;YACtB,SAAS,EAAE,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,SAAS,EAAE,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,gBAAgB,CAAC,CAAC;QAChE,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAU,CAAC;YACtC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG;gBAAE,MAAM;YAC7D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM;gBAAE,SAAS;YAElE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,SAAS,CAAC,KAAK;oBAC1B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;oBACpC,QAAQ;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAY;IAC5D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,YAAY;YAClB,IAAI;YACJ,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,yFAAyF;SAClG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAY;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9F,CAAC;AAED,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,aAAqB;IACvE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,aAAqB;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACnG,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEtD,OAAO;QACL,IAAI,IAAI;YACN,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,YAAoB,EAAE,YAAoB;YAChD,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,EAAE;qBACT,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;qBAC9B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;qBACrD,KAAK,CACJ,CAAC,KAAc,EAAe,EAAE,CAAC,CAAC;oBAChC,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,YAAY;4BAClB,IAAI,EAAE,YAAY;4BAClB,IAAI,EAAE,CAAC;4BACP,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBACvF;qBACF;iBACF,CAAC,CACH,CAAC;gBACJ,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -23,12 +23,16 @@ export { analyzeJavaScript, analyzeSource, createImportIndex, extractReferences,
23
23
  export type { AnalysisNote, FileImports, ImportIndex, ModuleReference, NoteKind, ReferenceKind } from './imports.js';
24
24
  export { analyzePolyglot, expandUsePath, languageFor, literalValue, logicalLines, matchingClose, normalizeModule, Reader, MAX_EXPANSION, POLYGLOT_EXTENSIONS, } from './polyglot.js';
25
25
  export type { ModuleLanguage } from './polyglot.js';
26
+ export { buildGraph, candidates, cyclicComponents, edgeKey, isGraphFile, resolveReference, stronglyConnected, witness, } from './graph.js';
27
+ export type { GraphInput, GraphScope, ImportGraph, Resolution, Unresolved } from './graph.js';
28
+ export { checkLayers, layerMatcher } from './layers.js';
29
+ export type { LayerInput, LayerReport, LayerViolation } from './layers.js';
26
30
  export { lineStarts, locate, maskRanges } from './text.js';
27
- export { maskCode, parseAttributes, parseDirectives } from './parser.js';
31
+ export { maskCode, parseAttributes, parseDirectives, parseStatus, INACTIVE_STATUSES } from './parser.js';
28
32
  export type { ParseContext } from './parser.js';
29
33
  export { applyBaseline, createScopeProbe, executeAssertion, resolveDirective, runSpecGuard, DEFAULT_CONCURRENCY, DEFAULT_MAX_SNIPPETS, } from './runner.js';
30
34
  export type { ResolveContext, RunOptions, RunResult } from './runner.js';
31
35
  export { createPainter, formatBaselines, formatJson, formatReport, formatSarif, shouldUseAscii, shouldUseColor } from './reporter.js';
32
36
  export type { ReporterOptions } from './reporter.js';
33
- export type { Assertion, AssertionResult, BaselineEntry, Bounds, Directive, DirectiveError, DirectiveKind, EngineName, ImportQuery, MatchLocation, ParseResult, RatchetMode, RunReport, RunSummary, SearchOptions, SearchResult, SourceLocation, StaleBaselineEntry, } from './types.js';
37
+ export type { Assertion, AssertionResult, BaselineEntry, Bounds, Directive, DirectiveError, DirectiveKind, EngineName, ImportQuery, InactiveSpec, MatchLocation, ParseResult, RatchetMode, RunReport, RunSummary, SearchOptions, SearchResult, SourceLocation, SpecStatus, StaleBaselineEntry, } from './types.js';
34
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -17,8 +17,10 @@ export { compareDirents, createExcludeMatcher, createGlobMatcher, defaultDirecto
17
17
  export { createScope, isBinary, mergeLedgers, tallyLedger, LedgerBuilder, DEFAULT_SCOPE, DEFAULT_SKIPPED_DIRECTORIES, MAX_LEDGER_ENTRIES, SCAN_EVERYTHING, UNCERTAIN_REASONS, } from './scope.js';
18
18
  export { analyzeJavaScript, analyzeSource, createImportIndex, extractReferences, resolveModule, resolveSpecifier, tokenize, ANALYSABLE_EXTENSIONS, JS_EXTENSIONS, } from './imports.js';
19
19
  export { analyzePolyglot, expandUsePath, languageFor, literalValue, logicalLines, matchingClose, normalizeModule, Reader, MAX_EXPANSION, POLYGLOT_EXTENSIONS, } from './polyglot.js';
20
+ export { buildGraph, candidates, cyclicComponents, edgeKey, isGraphFile, resolveReference, stronglyConnected, witness, } from './graph.js';
21
+ export { checkLayers, layerMatcher } from './layers.js';
20
22
  export { lineStarts, locate, maskRanges } from './text.js';
21
- export { maskCode, parseAttributes, parseDirectives } from './parser.js';
23
+ export { maskCode, parseAttributes, parseDirectives, parseStatus, INACTIVE_STATUSES } from './parser.js';
22
24
  export { applyBaseline, createScopeProbe, executeAssertion, resolveDirective, runSpecGuard, DEFAULT_CONCURRENCY, DEFAULT_MAX_SNIPPETS, } from './runner.js';
23
25
  export { createPainter, formatBaselines, formatJson, formatReport, formatSarif, shouldUseAscii, shouldUseColor } from './reporter.js';
24
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGxG,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAWrB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,OAAO,EACP,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,eAAe,EACf,MAAM,EACN,aAAa,EACb,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGzE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGxG,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAWrB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,OAAO,EACP,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,eAAe,EACf,MAAM,EACN,aAAa,EACb,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,GACR,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGzG,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The layering rule behind `@assert-layers`.
3
+ *
4
+ * Pure, and built on almost nothing new. A layer is a pattern in the language
5
+ * `module=` and `exclude` already speak; a file belongs to a layer when its path
6
+ * matches, and a reference points into one when any name it can denote does -
7
+ * see `referenceForms`. That is why layering needs no resolver and works in
8
+ * every language spec-guard reads: it never asks which file a reference *is*,
9
+ * only which areas it could be about.
10
+ *
11
+ * Cycles are the opposite case, and live in `graph.ts` - see ADR-0011.
12
+ */
13
+ import { type ModuleReference } from './imports.js';
14
+ /**
15
+ * Every name a reference can be matched under.
16
+ *
17
+ * The specifier as written and the module it resolves to, as `module=` tries -
18
+ * and, for the two languages whose modules are files, the files that module can
19
+ * denote. Without the last, a layer that names a file could never be reached:
20
+ * `src/runner.ts` is where the file is, `./runner.js` is what imports it, and
21
+ * the first rule this project wrote with file-sized layers passed while its
22
+ * order was reversed, because no reference matched any layer at all.
23
+ *
24
+ * Names only. Nothing here asks whether a candidate exists, which is why a layer
25
+ * outside the assertion's target still works: `../infrastructure/db.js` reaches
26
+ * `src/infrastructure/db.ts` whether or not the walk ever went there.
27
+ */
28
+ export declare function referenceForms(specifier: string, importingFile: string): string[];
29
+ export interface LayerInput {
30
+ /** Root-relative path of the importing file. */
31
+ file: string;
32
+ references: readonly ModuleReference[];
33
+ }
34
+ export interface LayerViolation {
35
+ file: string;
36
+ /** The layer the file belongs to, as an index into the order. */
37
+ from: number;
38
+ /** The latest layer its reference reaches, also an index. */
39
+ to: number;
40
+ /** The first reference, in source order, that reaches a later layer. */
41
+ reference: ModuleReference;
42
+ }
43
+ export interface LayerReport {
44
+ /** Files in scope matched by each layer, by index. */
45
+ members: number[];
46
+ /** Files in scope that no layer matches, and which are therefore unconstrained. */
47
+ unassigned: string[];
48
+ /** Files matched by more than one layer, with every layer that matched. */
49
+ ambiguous: Array<{
50
+ file: string;
51
+ layers: number[];
52
+ }>;
53
+ /** At most one per file. */
54
+ violations: LayerViolation[];
55
+ }
56
+ /** A function from a path to the indices of every layer that matches it. */
57
+ export declare function layerMatcher(order: readonly string[]): (relativePath: string) => number[];
58
+ /**
59
+ * Checks each file's references against the order.
60
+ *
61
+ * A file may import from its own layer and from layers listed before it. The
62
+ * unit of violation is the file, as it is for every import assertion: one
63
+ * import statement split into two is not twice the problem.
64
+ *
65
+ * A file two layers claim is not checked for violations - which layer's rule
66
+ * applies is exactly the thing that is unknown - and is reported instead. So is
67
+ * every file no layer claims, because a shared utility and a directory someone
68
+ * forgot to assign look identical from here and only the author can say which a
69
+ * count describes.
70
+ */
71
+ export declare function checkLayers(inputs: readonly LayerInput[], order: readonly string[], includeTypes: boolean): LayerReport;
72
+ //# sourceMappingURL=layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../src/layers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGnE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAKjF;AAED,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mFAAmF;IACnF,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2EAA2E;IAC3E,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrD,4BAA4B;IAC5B,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,EAAE,CAIzF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,GAAG,WAAW,CA6CvH"}
package/dist/layers.js ADDED
@@ -0,0 +1,102 @@
1
+ /**
2
+ * The layering rule behind `@assert-layers`.
3
+ *
4
+ * Pure, and built on almost nothing new. A layer is a pattern in the language
5
+ * `module=` and `exclude` already speak; a file belongs to a layer when its path
6
+ * matches, and a reference points into one when any name it can denote does -
7
+ * see `referenceForms`. That is why layering needs no resolver and works in
8
+ * every language spec-guard reads: it never asks which file a reference *is*,
9
+ * only which areas it could be about.
10
+ *
11
+ * Cycles are the opposite case, and live in `graph.ts` - see ADR-0011.
12
+ */
13
+ import { createExcludeMatcher } from './glob.js';
14
+ import { candidates, isGraphFile } from './graph.js';
15
+ import { resolveModule } from './imports.js';
16
+ import { languageFor } from './polyglot.js';
17
+ /**
18
+ * Every name a reference can be matched under.
19
+ *
20
+ * The specifier as written and the module it resolves to, as `module=` tries -
21
+ * and, for the two languages whose modules are files, the files that module can
22
+ * denote. Without the last, a layer that names a file could never be reached:
23
+ * `src/runner.ts` is where the file is, `./runner.js` is what imports it, and
24
+ * the first rule this project wrote with file-sized layers passed while its
25
+ * order was reversed, because no reference matched any layer at all.
26
+ *
27
+ * Names only. Nothing here asks whether a candidate exists, which is why a layer
28
+ * outside the assertion's target still works: `../infrastructure/db.js` reaches
29
+ * `src/infrastructure/db.ts` whether or not the walk ever went there.
30
+ */
31
+ export function referenceForms(specifier, importingFile) {
32
+ const module = resolveModule(specifier, importingFile);
33
+ if (isGraphFile(importingFile))
34
+ return [specifier, ...candidates(module)];
35
+ if (languageFor(importingFile) === 'python')
36
+ return [specifier, module, `${module}.py`, `${module}/__init__.py`];
37
+ return [specifier, module];
38
+ }
39
+ /** A function from a path to the indices of every layer that matches it. */
40
+ export function layerMatcher(order) {
41
+ const matchers = order.map((pattern) => createExcludeMatcher([pattern]));
42
+ return (relativePath) => matchers.flatMap((matches, layer) => (matches(relativePath) ? [layer] : []));
43
+ }
44
+ /**
45
+ * Checks each file's references against the order.
46
+ *
47
+ * A file may import from its own layer and from layers listed before it. The
48
+ * unit of violation is the file, as it is for every import assertion: one
49
+ * import statement split into two is not twice the problem.
50
+ *
51
+ * A file two layers claim is not checked for violations - which layer's rule
52
+ * applies is exactly the thing that is unknown - and is reported instead. So is
53
+ * every file no layer claims, because a shared utility and a directory someone
54
+ * forgot to assign look identical from here and only the author can say which a
55
+ * count describes.
56
+ */
57
+ export function checkLayers(inputs, order, includeTypes) {
58
+ const layersOf = layerMatcher(order);
59
+ // Every file in a directory imports the same few modules, and each reference
60
+ // is matched under some twenty names, so the same name is matched against the
61
+ // same patterns thousands of times on a large tree. The answer depends on the
62
+ // name alone. Measured on 6,977 files of node_modules: see ADR-0011.
63
+ const seen = new Map();
64
+ const reachedBy = (name) => {
65
+ let layers = seen.get(name);
66
+ if (layers === undefined) {
67
+ layers = layersOf(name);
68
+ seen.set(name, layers);
69
+ }
70
+ return layers;
71
+ };
72
+ const members = order.map(() => 0);
73
+ const unassigned = [];
74
+ const ambiguous = [];
75
+ const violations = [];
76
+ for (const { file, references } of inputs) {
77
+ const own = layersOf(file);
78
+ for (const layer of own)
79
+ members[layer] = members[layer] + 1;
80
+ if (own.length === 0) {
81
+ unassigned.push(file);
82
+ continue;
83
+ }
84
+ if (own.length > 1) {
85
+ ambiguous.push({ file, layers: own });
86
+ continue;
87
+ }
88
+ const from = own[0];
89
+ for (const reference of references) {
90
+ if (reference.typeOnly && !includeTypes)
91
+ continue;
92
+ const reached = referenceForms(reference.specifier, file).flatMap(reachedBy);
93
+ const to = Math.max(from, ...reached);
94
+ if (to > from) {
95
+ violations.push({ file, from, to, reference });
96
+ break;
97
+ }
98
+ }
99
+ }
100
+ return { members, unassigned, ambiguous, violations };
101
+ }
102
+ //# sourceMappingURL=layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.js","sourceRoot":"","sources":["../src/layers.ts"],"names":[],"mappings":"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"}
package/dist/parser.d.ts CHANGED
@@ -14,7 +14,42 @@
14
14
  * error rather than silently skipped - a typo must never turn into a
15
15
  * silently-passing invariant.
16
16
  */
17
- import type { ParseResult } from './types.js';
17
+ import type { DirectiveKind, ParseResult, SpecStatus } from './types.js';
18
+ /** Every directive spec-guard understands. */
19
+ export declare const KINDS: Set<string>;
20
+ /**
21
+ * Which attributes each directive accepts.
22
+ *
23
+ * Exported so a test can assert it entry by entry. It used to be private, and
24
+ * the suite carried a second copy that had fallen five attributes behind - so
25
+ * `comments`, `allow-empty`, `baseline` and `ratchet` could have been dropped
26
+ * from any kind and nothing would have said so.
27
+ */
28
+ export declare const ALLOWED_ATTRIBUTES: Record<DirectiveKind, ReadonlySet<string>>;
29
+ /**
30
+ * Status words that withhold a document's directives from execution.
31
+ *
32
+ * The words that mean "not in force" in Nygard's ADR template and in MADR's
33
+ * between them, plus `draft`, which is the one people actually type. The list
34
+ * is closed and short on purpose: every word added to it is another way for a
35
+ * document to go dark, and a rule that stops being enforced without anyone
36
+ * deciding so is the failure this tool exists to prevent. Anything else - an
37
+ * unrecognised word, a misspelling, no status at all - stays in force. See
38
+ * ADR-0010.
39
+ */
40
+ export declare const INACTIVE_STATUSES: ReadonlySet<string>;
41
+ /**
42
+ * The lifecycle status a Markdown document declares about itself.
43
+ *
44
+ * Three spellings are recognised because three are in use, including two in
45
+ * this repository's own ADRs: YAML front-matter (MADR), a `## Status` section
46
+ * (Nygard), and a bold `**Status:**` label. Front-matter wins when present -
47
+ * it is machine-readable metadata rather than a convention read out of prose.
48
+ *
49
+ * Code is masked first, so a document that documents this syntax inside a
50
+ * fence - this project's README does - is not read as declaring a status.
51
+ */
52
+ export declare function parseStatus(source: string): SpecStatus | undefined;
18
53
  export interface ParseContext {
19
54
  /** Absolute path of the spec file. */
20
55
  file: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAA4C,WAAW,EAAkB,MAAM,YAAY,CAAC;AAyExG,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwD/C;AAMD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,CAkDlF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAGV,aAAa,EACb,WAAW,EAEX,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,8CAA8C;AAC9C,eAAO,MAAM,KAAK,aAQhB,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAuEzE,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAMhD,CAAC;AA+HH;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAWD,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwD/C;AAMD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,CAmDlF"}
package/dist/parser.js CHANGED
@@ -15,15 +15,25 @@
15
15
  * silently-passing invariant.
16
16
  */
17
17
  import { lineStarts, locate } from './text.js';
18
- const KINDS = new Set([
18
+ /** Every directive spec-guard understands. */
19
+ export const KINDS = new Set([
19
20
  'assert-absence',
20
21
  'assert-count',
21
22
  'assert-present',
22
23
  'assert-import-absence',
23
24
  'assert-import-count',
25
+ 'assert-import-cycle',
26
+ 'assert-layers',
24
27
  ]);
25
- /** Attributes each directive kind accepts. */
26
- const ALLOWED_ATTRIBUTES = {
28
+ /**
29
+ * Which attributes each directive accepts.
30
+ *
31
+ * Exported so a test can assert it entry by entry. It used to be private, and
32
+ * the suite carried a second copy that had fallen five attributes behind - so
33
+ * `comments`, `allow-empty`, `baseline` and `ratchet` could have been dropped
34
+ * from any kind and nothing would have said so.
35
+ */
36
+ export const ALLOWED_ATTRIBUTES = {
27
37
  'assert-absence': new Set([
28
38
  'target',
29
39
  'symbol',
@@ -79,7 +89,181 @@ const ALLOWED_ATTRIBUTES = {
79
89
  'allow-empty',
80
90
  'reason',
81
91
  ]),
92
+ // No baseline: a baseline lists files, and a cycle is not a file. Exempting
93
+ // the files of today's cycle would exempt a new one among the same files.
94
+ 'assert-import-cycle': new Set(['target', 'exclude', 'types', 'expected', 'max', 'allow-empty', 'reason']),
95
+ 'assert-layers': new Set([
96
+ 'target',
97
+ 'order',
98
+ 'exclude',
99
+ 'types',
100
+ 'expected',
101
+ 'max',
102
+ 'allow-empty',
103
+ 'baseline',
104
+ 'ratchet',
105
+ 'reason',
106
+ ]),
82
107
  };
108
+ /* --------------------------------------------------------------- the status */
109
+ /**
110
+ * Status words that withhold a document's directives from execution.
111
+ *
112
+ * The words that mean "not in force" in Nygard's ADR template and in MADR's
113
+ * between them, plus `draft`, which is the one people actually type. The list
114
+ * is closed and short on purpose: every word added to it is another way for a
115
+ * document to go dark, and a rule that stops being enforced without anyone
116
+ * deciding so is the failure this tool exists to prevent. Anything else - an
117
+ * unrecognised word, a misspelling, no status at all - stays in force. See
118
+ * ADR-0010.
119
+ */
120
+ export const INACTIVE_STATUSES = new Set([
121
+ 'draft',
122
+ 'proposed',
123
+ 'rejected',
124
+ 'deprecated',
125
+ 'superseded',
126
+ ]);
127
+ /** `---\n...\n---` at the very top of the file, and nowhere else. */
128
+ const FRONTMATTER_RE = /^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/;
129
+ /**
130
+ * The three ways the key is spelled: `**Status**:`, `**Status:**`, `Status:`.
131
+ *
132
+ * Written as alternatives rather than as optional emphasis on either side of
133
+ * the colon, which is what it used to be - and an optional `**` after the colon
134
+ * cannot tell the key's closing marker from the value's opening one, so
135
+ * `Status: **Draft**` reached the report as "Draft**". Here emphasis after the
136
+ * colon is only consumed when it closes emphasis that opened the key. The
137
+ * colon itself is mandatory, which keeps "Status reports are..." from being
138
+ * read as metadata. Leading whitespace in the value is left to `toStatus`,
139
+ * which trims it anyway.
140
+ */
141
+ const STATUS_LABEL_RE = /^[ \t]{0,3}(?:(\*\*|__)status(?:\1[ \t]*:|[ \t]*:\1)|status[ \t]*:)(.*)/i;
142
+ /**
143
+ * The value a YAML scalar holds: a quoted one up to its closing quote, a plain
144
+ * one up to a comment.
145
+ *
146
+ * Not a YAML parser, and it does not need to be one - it reads one line. But
147
+ * it has to read that line the way YAML does. MADR's own template quotes the
148
+ * status, and a quote left in leaves no first word to read; a trailing
149
+ * `# decided at review` left in is part of the label; and a regex anchored at
150
+ * both ends of a quoted value read `"proposed" # a comment` as no status at
151
+ * all, which keeps a withdrawn proposal in force.
152
+ */
153
+ function yamlScalar(raw) {
154
+ const text = raw.trim();
155
+ const quoted = /^(["'])(.*?)\1/.exec(text);
156
+ return quoted ? quoted[2] : text.replace(/\s#.*/, '');
157
+ }
158
+ /** An ATX heading whose entire text is "Status". */
159
+ const STATUS_HEADING_RE = /^[ \t]{0,3}#{1,6}[ \t]+status[ \t]*#*[ \t]*$/i;
160
+ /** Any ATX heading of level 2 or deeper - where a document's preamble ends. */
161
+ const SECTION_HEADING_RE = /^[ \t]{0,3}#{2,6}[ \t]/;
162
+ /**
163
+ * Turns a status line into a status, or into nothing.
164
+ *
165
+ * The value is the first run of letters, so "Accepted (0.3.0)." and
166
+ * "Superseded by ADR-0007" normalise to one word while the line as written
167
+ * survives for the report - a reader shown "superseded" learns much less than
168
+ * one shown what it was superseded by.
169
+ */
170
+ function toStatus(raw, source) {
171
+ const trimmed = raw.trim();
172
+ // The word is read through any leading emphasis, so `**Superseded** by
173
+ // ADR-0007` is superseded rather than nothing at all - which is what a rule
174
+ // that required the markers to balance made of it.
175
+ const word = /^[*_]*([a-zA-Z]+)/.exec(trimmed);
176
+ if (!word)
177
+ return undefined;
178
+ // The label loses emphasis only when it wraps the whole line. `**Draft**` is
179
+ // a status written in bold and reads better without the markers; "Superseded
180
+ // by *ADR-0007*" is a sentence with emphasis inside it, and taking one marker
181
+ // off each end would put a half-mangled line in the report.
182
+ const label = trimmed.replace(/^(\*{1,2}|_{1,2})(.*)\1$/, '$2');
183
+ const value = word[1].toLowerCase();
184
+ return { value, label, source, active: !INACTIVE_STATUSES.has(value) };
185
+ }
186
+ /**
187
+ * Lines, whichever way the file ends them.
188
+ *
189
+ * Splitting on "\n" alone leaves a carriage return on every line of a CRLF
190
+ * document, and a trailing "\r" defeats every `$` below - so a Windows-checkout
191
+ * ADR declared no status at all, silently, which is the one failure mode this
192
+ * feature must not have. Found by running the parser over this repository's own
193
+ * ADR-0003, which happened to be CRLF on disk.
194
+ */
195
+ function toLines(masked) {
196
+ return masked.split(/\r?\n/);
197
+ }
198
+ function fromFrontmatter(masked) {
199
+ const block = FRONTMATTER_RE.exec(masked);
200
+ if (!block)
201
+ return undefined;
202
+ for (const line of toLines(block[1])) {
203
+ const found = STATUS_LABEL_RE.exec(line);
204
+ // Read as YAML here and nowhere else: quotes and `#` are syntax in
205
+ // front-matter and characters in a sentence.
206
+ if (found)
207
+ return toStatus(yamlScalar(found[2]), 'frontmatter');
208
+ }
209
+ return undefined;
210
+ }
211
+ /**
212
+ * A `## Status` section, whose value is the first line of prose under it.
213
+ *
214
+ * A section with nothing but the next heading under it declares no status.
215
+ * There is no guard for that here: every ATX heading begins with `#`, and a
216
+ * value that does not begin with a letter is already no status at all. The
217
+ * guard this used to carry could not decide anything, which is a different
218
+ * thing from a guard that is merely never hit.
219
+ */
220
+ function fromHeading(lines) {
221
+ const start = lines.findIndex((line) => STATUS_HEADING_RE.test(line));
222
+ if (start === -1)
223
+ return undefined;
224
+ for (let index = start + 1; index < lines.length; index++) {
225
+ const candidate = lines[index].trim();
226
+ if (candidate.length === 0)
227
+ continue;
228
+ return toStatus(candidate, 'heading');
229
+ }
230
+ return undefined;
231
+ }
232
+ /**
233
+ * A `**Status:** accepted` line in the document's preamble.
234
+ *
235
+ * Bounded to the preamble - everything before the first `##` - because this
236
+ * form is a line of prose with a colon in it, and a tool that accepts one
237
+ * anywhere in a long document will eventually find one in a sentence.
238
+ */
239
+ function fromLabel(lines) {
240
+ for (const line of lines) {
241
+ if (SECTION_HEADING_RE.test(line))
242
+ return undefined;
243
+ const found = STATUS_LABEL_RE.exec(line);
244
+ if (found)
245
+ return toStatus(found[2], 'label');
246
+ }
247
+ return undefined;
248
+ }
249
+ /**
250
+ * The lifecycle status a Markdown document declares about itself.
251
+ *
252
+ * Three spellings are recognised because three are in use, including two in
253
+ * this repository's own ADRs: YAML front-matter (MADR), a `## Status` section
254
+ * (Nygard), and a bold `**Status:**` label. Front-matter wins when present -
255
+ * it is machine-readable metadata rather than a convention read out of prose.
256
+ *
257
+ * Code is masked first, so a document that documents this syntax inside a
258
+ * fence - this project's README does - is not read as declaring a status.
259
+ */
260
+ export function parseStatus(source) {
261
+ return statusOf(maskCode(source));
262
+ }
263
+ function statusOf(masked) {
264
+ const lines = toLines(masked);
265
+ return fromFrontmatter(masked) ?? fromHeading(lines) ?? fromLabel(lines);
266
+ }
83
267
  const DIRECTIVE_RE = /<!--\s*@([a-zA-Z][\w-]*)([\s\S]*?)-->/g;
84
268
  const ATTRIBUTE_RE = /([a-zA-Z][\w-]*)(?:\s*=\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^\s"'=<>`]+)))?/g;
85
269
  /**
@@ -202,6 +386,7 @@ export function parseDirectives(source, context) {
202
386
  }
203
387
  directives.push({ kind: kind, attributes, location, raw });
204
388
  }
205
- return { directives, errors };
389
+ const status = statusOf(masked);
390
+ return status ? { directives, errors, status } : { directives, errors };
206
391
  }
207
392
  //# sourceMappingURL=parser.js.map