@xenos1996/usa 2.25.3 → 2.26.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 (50) hide show
  1. package/USA.md +3 -0
  2. package/dist/cli-audit.d.ts.map +1 -1
  3. package/dist/cli-audit.js +6 -0
  4. package/dist/cli-audit.js.map +1 -1
  5. package/dist/cli-docs.d.ts +18 -0
  6. package/dist/cli-docs.d.ts.map +1 -0
  7. package/dist/cli-docs.js +416 -0
  8. package/dist/cli-docs.js.map +1 -0
  9. package/dist/cli-help.d.ts.map +1 -1
  10. package/dist/cli-help.js +18 -0
  11. package/dist/cli-help.js.map +1 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +4 -0
  14. package/dist/cli.js.map +1 -1
  15. package/dist/config.d.ts +1 -1
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +15 -1
  18. package/dist/config.js.map +1 -1
  19. package/dist/engine/audit.d.ts +8 -0
  20. package/dist/engine/audit.d.ts.map +1 -1
  21. package/dist/engine/audit.js +63 -0
  22. package/dist/engine/audit.js.map +1 -1
  23. package/dist/engine/docs-audit.d.ts +125 -0
  24. package/dist/engine/docs-audit.d.ts.map +1 -0
  25. package/dist/engine/docs-audit.js +405 -0
  26. package/dist/engine/docs-audit.js.map +1 -0
  27. package/dist/engine/docs-impact.d.ts +62 -0
  28. package/dist/engine/docs-impact.d.ts.map +1 -0
  29. package/dist/engine/docs-impact.js +165 -0
  30. package/dist/engine/docs-impact.js.map +1 -0
  31. package/dist/engine/docs-invariants.d.ts +66 -0
  32. package/dist/engine/docs-invariants.d.ts.map +1 -0
  33. package/dist/engine/docs-invariants.js +667 -0
  34. package/dist/engine/docs-invariants.js.map +1 -0
  35. package/dist/engine/docs-taxonomy.d.ts +72 -0
  36. package/dist/engine/docs-taxonomy.d.ts.map +1 -0
  37. package/dist/engine/docs-taxonomy.js +294 -0
  38. package/dist/engine/docs-taxonomy.js.map +1 -0
  39. package/dist/engine/gate.d.ts +5 -1
  40. package/dist/engine/gate.d.ts.map +1 -1
  41. package/dist/engine/gate.js +14 -3
  42. package/dist/engine/gate.js.map +1 -1
  43. package/dist/types.d.ts +8 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/util/project.d.ts +4 -0
  46. package/dist/util/project.d.ts.map +1 -1
  47. package/dist/util/project.js +9 -1
  48. package/dist/util/project.js.map +1 -1
  49. package/package.json +1 -1
  50. package/rules/docs-taxonomy.yaml +3362 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-impact.js","sourceRoot":"","sources":["../../src/engine/docs-impact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { Facts, Finding, Location, Severity } from '../types.js';
2
+ import type { Project } from '../util/project.js';
3
+ /** Source scan excludes: prose, tests, examples, generated output. */
4
+ export declare const CODE_EXCLUDES: string[];
5
+ export interface InvariantResult {
6
+ id: string;
7
+ title: string;
8
+ status: 'PASS' | 'FAIL' | 'NOT_APPLICABLE';
9
+ /** Human-readable detail (the report's "Actual:" line). */
10
+ detail: string;
11
+ /** What the contract expects (the "Expected:" line). */
12
+ expected: string;
13
+ /** Where the violation was observed (capped). */
14
+ locations: Location[];
15
+ /** Number of violations beyond the capped location list. */
16
+ extra: number;
17
+ /** Cross-category hint (the "Cross-category:" line). */
18
+ crossCategory?: string;
19
+ }
20
+ /**
21
+ * §6 invariant: every env var read by source code must appear somewhere in
22
+ * the documentation corpus. Conservative by construction — the corpus is
23
+ * every prose file in the repo, so "documented" is the generous reading.
24
+ */
25
+ export declare function checkEnvVarCoverage(project: Project): InvariantResult;
26
+ /**
27
+ * §5 invariant: every defined HTTP route (method + path) must be mentioned
28
+ * in the API documentation corpus. Route extraction is deliberately
29
+ * framework-broad and heuristic; false positives are acceptable, false
30
+ * negatives are not (AC-11).
31
+ */
32
+ export declare function checkRouteCoverage(project: Project): InvariantResult;
33
+ /**
34
+ * §4 invariant: public top-level definitions carry docstrings. Python: the
35
+ * first non-empty line after a module-level `def` must open a docstring.
36
+ * TS/JS: the first non-empty line above `export function` / `export class`
37
+ * must close a JSDoc block. Heuristic and conservative; private (underscore)
38
+ * members are exempt by convention.
39
+ */
40
+ export declare function checkDocstringCoverage(project: Project, facts: Facts): InvariantResult;
41
+ /**
42
+ * §10 invariant: every relative markdown link resolves to an existing file.
43
+ * Root-relative (`/x`), external, mailto, and pure-anchor links are skipped —
44
+ * they cannot be resolved from the repo alone.
45
+ */
46
+ export declare function checkBrokenLinks(project: Project): InvariantResult;
47
+ /**
48
+ * §14 invariant: a file that declares itself generated must have a
49
+ * discoverable regeneration path — its stem must be referenced by a
50
+ * package.json script, a CI workflow, or the Makefile. Otherwise nobody can
51
+ * tell whether it is fresh (AC-5: generated drift).
52
+ */
53
+ export declare function checkGeneratedProvenance(project: Project): InvariantResult;
54
+ /**
55
+ * §1 invariant: the changelog must agree with the released version. A tag
56
+ * the changelog has never mentioned means release notes and version history
57
+ * diverged — the exact drift class the contract exists to catch.
58
+ */
59
+ export declare function checkChangelogConsistency(project: Project, gitTags: string[]): InvariantResult;
60
+ /**
61
+ * Convert an invariant result into the engine's Finding shape. The SAME
62
+ * function feeds `usa docs audit` and the main audit's DOCU injection, so
63
+ * the gate is identical in both paths (AC-8).
64
+ */
65
+ export declare function invariantToFinding(r: InvariantResult, severity: Severity, dampened: boolean): Finding;
66
+ //# sourceMappingURL=docs-invariants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-invariants.d.ts","sourceRoot":"","sources":["../../src/engine/docs-invariants.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKlD,sEAAsE;AACtE,eAAO,MAAM,aAAa,UA8BzB,CAAC;AAgCF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;IAC3C,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4ED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CA2CrE;AA+CD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CA0DpE;AAgCD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,eAAe,CAmCtF;AAsDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAoClE;AAyDD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAuC1E;AAwBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,eAAe,CA8C9F;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,eAAe,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAuBT"}