@nifrajs/cli 2.12.1 → 2.14.1

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 (74) hide show
  1. package/dist/capabilities-tool.d.ts +54 -1
  2. package/dist/capabilities-tool.d.ts.map +1 -1
  3. package/dist/capabilities-tool.js +146 -18
  4. package/dist/capabilities-tool.js.map +1 -1
  5. package/dist/check.d.ts +11 -11
  6. package/dist/check.d.ts.map +1 -1
  7. package/dist/check.js +235 -47
  8. package/dist/check.js.map +1 -1
  9. package/dist/cli.d.ts +11 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +96 -406
  12. package/dist/cli.js.map +1 -1
  13. package/dist/command-catalog.d.ts +244 -0
  14. package/dist/command-catalog.d.ts.map +1 -0
  15. package/dist/command-catalog.js +1014 -0
  16. package/dist/command-catalog.js.map +1 -0
  17. package/dist/contracts.d.ts +9 -0
  18. package/dist/contracts.d.ts.map +1 -1
  19. package/dist/contracts.js +22 -6
  20. package/dist/contracts.js.map +1 -1
  21. package/dist/doctor.d.ts +18 -11
  22. package/dist/doctor.d.ts.map +1 -1
  23. package/dist/doctor.js +30 -230
  24. package/dist/doctor.js.map +1 -1
  25. package/dist/load.d.ts.map +1 -1
  26. package/dist/load.js +22 -5
  27. package/dist/load.js.map +1 -1
  28. package/dist/manifest-tool.d.ts +15 -1
  29. package/dist/manifest-tool.d.ts.map +1 -1
  30. package/dist/manifest-tool.js +23 -9
  31. package/dist/manifest-tool.js.map +1 -1
  32. package/dist/mcp-http.js +1 -1
  33. package/dist/mcp.d.ts +8 -0
  34. package/dist/mcp.d.ts.map +1 -1
  35. package/dist/mcp.js +59 -349
  36. package/dist/mcp.js.map +1 -1
  37. package/dist/project-facts.d.ts +40 -0
  38. package/dist/project-facts.d.ts.map +1 -0
  39. package/dist/project-facts.js +36 -0
  40. package/dist/project-facts.js.map +1 -0
  41. package/dist/release-verification.d.ts +45 -0
  42. package/dist/release-verification.d.ts.map +1 -0
  43. package/dist/release-verification.js +303 -0
  44. package/dist/release-verification.js.map +1 -0
  45. package/dist/rules/comment-markers.d.ts +8 -0
  46. package/dist/rules/comment-markers.d.ts.map +1 -1
  47. package/dist/rules/comment-markers.js +36 -0
  48. package/dist/rules/comment-markers.js.map +1 -1
  49. package/dist/rules/index.d.ts +2 -3
  50. package/dist/rules/index.d.ts.map +1 -1
  51. package/dist/rules/index.js.map +1 -1
  52. package/dist/rules/routes.d.ts.map +1 -1
  53. package/dist/rules/routes.js +12 -14
  54. package/dist/rules/routes.js.map +1 -1
  55. package/dist/rules/security.js +14 -14
  56. package/dist/rules/security.js.map +1 -1
  57. package/docs/types.json +28 -15
  58. package/package.json +9 -9
  59. package/src/capabilities-tool.ts +229 -21
  60. package/src/check.ts +286 -64
  61. package/src/cli.ts +106 -399
  62. package/src/command-catalog.ts +1415 -0
  63. package/src/contracts.ts +28 -7
  64. package/src/doctor.ts +56 -264
  65. package/src/load.ts +25 -6
  66. package/src/manifest-tool.ts +43 -12
  67. package/src/mcp-http.ts +1 -1
  68. package/src/mcp.ts +82 -414
  69. package/src/project-facts.ts +86 -0
  70. package/src/release-verification.ts +377 -0
  71. package/src/rules/comment-markers.ts +36 -0
  72. package/src/rules/index.ts +3 -4
  73. package/src/rules/routes.ts +13 -14
  74. package/src/rules/security.ts +14 -14
@@ -0,0 +1,303 @@
1
+ /**
2
+ * The repository release verification gate.
3
+ *
4
+ * This module is intentionally independent from app loading. The root package scripts and the
5
+ * `nifra verify` command both call this runner, so the local and CI paths share one gate plan.
6
+ */
7
+ import { mkdtempSync, readFileSync, realpathSync, rmSync } from "node:fs";
8
+ import { tmpdir } from "node:os";
9
+ import { dirname, join, relative, resolve, sep } from "node:path";
10
+ const DEFAULT_GATES = [
11
+ {
12
+ id: "lint",
13
+ commands: [["run", "lint"]],
14
+ remediation: "Run `bun run lint` and fix the reported lint findings.",
15
+ },
16
+ {
17
+ id: "typecheck",
18
+ commands: [["run", "typecheck"]],
19
+ remediation: "Run `bun run typecheck` and fix the reported TypeScript errors.",
20
+ },
21
+ {
22
+ id: "tests",
23
+ commands: [["run", "test"]],
24
+ remediation: "Run `bun run test` and fix the first failing test.",
25
+ },
26
+ {
27
+ id: "docs",
28
+ commands: [["run", "check:docs"]],
29
+ remediation: "Run `bun run check:docs` and update the failing documentation example.",
30
+ },
31
+ {
32
+ id: "api-corpus",
33
+ commands: [["run", "check:api"]],
34
+ remediation: "Run `bun run gen:api` and review the generated API reference.",
35
+ },
36
+ {
37
+ id: "cards-corpus",
38
+ commands: [["run", "check:cards"]],
39
+ remediation: "Run `bun run gen:cards` and review the generated package cards.",
40
+ },
41
+ {
42
+ id: "node-outcome-corpus",
43
+ commands: [["run", "check:node-outcome"]],
44
+ remediation: "Run `bun run gen:node-outcome` and review the generated Node outcome contract.",
45
+ },
46
+ {
47
+ id: "sitemap",
48
+ commands: [["run", "check:sitemap"]],
49
+ remediation: "Run `bun run gen:sitemap` and review the generated sitemap.",
50
+ },
51
+ {
52
+ id: "public-boundary",
53
+ commands: [["run", "check:public-boundary"]],
54
+ remediation: "Run `bun run check:public-boundary` and remove the reported public-boundary violation.",
55
+ },
56
+ {
57
+ id: "size",
58
+ commands: [["run", "check:size"]],
59
+ remediation: "Run `bun run check:size` and either reduce the bundle or update the reviewed budget.",
60
+ },
61
+ ];
62
+ const RELEASE_GATES = [
63
+ {
64
+ id: "build",
65
+ commands: [["run", "build"]],
66
+ remediation: "Run `bun run build` and fix the first package build failure.",
67
+ },
68
+ ...DEFAULT_GATES.slice(0, 3),
69
+ {
70
+ id: "coverage",
71
+ commands: [
72
+ ["run", "test:coverage"],
73
+ ["run", "check:coverage"],
74
+ ],
75
+ remediation: "Run `bun run test:coverage` first, then `bun run check:coverage`, and fix the reported coverage regression.",
76
+ },
77
+ {
78
+ id: "corpus",
79
+ commands: [["run", "check:corpus"]],
80
+ remediation: "Run `bun run gen:llms`, `bun run gen:api`, and `bun run gen:cards`, then rerun the corpus gate.",
81
+ },
82
+ DEFAULT_GATES[3],
83
+ {
84
+ id: "public-boundary",
85
+ commands: [["run", "check:public-boundary"]],
86
+ remediation: "Run `bun run check:public-boundary` and remove the reported public-boundary violation.",
87
+ },
88
+ {
89
+ id: "size",
90
+ commands: [["run", "check:size"]],
91
+ remediation: "Run `bun run check:size` and either reduce the bundle or update the reviewed budget.",
92
+ },
93
+ {
94
+ id: "core-performance",
95
+ commands: [["run", "check:core-performance"]],
96
+ remediation: "Run `bun run check:core-performance` and investigate the measured performance regression.",
97
+ },
98
+ {
99
+ id: "publish",
100
+ commands: [["run", "check:publish"]],
101
+ remediation: "Run `bun run check:publish` and fix the publish-consumer metadata or type-surface failure.",
102
+ },
103
+ {
104
+ id: "consumer",
105
+ commands: [["run", "check:consumers"]],
106
+ remediation: "Run `bun run check:consumers` and fix the isolated consumer failure.",
107
+ },
108
+ {
109
+ id: "cold-start",
110
+ commands: [["run", "check:cold-start"]],
111
+ remediation: "Run `bun run check:cold-start` and fix the fresh scaffold install or build failure.",
112
+ },
113
+ {
114
+ id: "cross-runtime-deno",
115
+ commands: [
116
+ ["run", "test:deno"],
117
+ ["run", "check:deno-tarball"],
118
+ ],
119
+ remediation: "Run `bun run test:deno` and `bun run check:deno-tarball`, then fix the first Deno compatibility failure.",
120
+ },
121
+ {
122
+ id: "cross-runtime-node",
123
+ commands: [["run", "test:node"]],
124
+ remediation: "Run `bun run test:node` and fix the Node runtime adapter failure.",
125
+ },
126
+ {
127
+ id: "pipeline-parity",
128
+ commands: [["run", "check:pipeline-parity"]],
129
+ remediation: "Run `bun run check:pipeline-parity` and fix the development and production manifest drift.",
130
+ },
131
+ ];
132
+ const runBunCommand = async (spec) => {
133
+ const child = Bun.spawn([process.execPath, ...spec.args], {
134
+ cwd: spec.cwd,
135
+ env: spec.env,
136
+ stdout: "pipe",
137
+ stderr: "pipe",
138
+ });
139
+ const [exitCode, stdout, stderr] = await Promise.all([
140
+ child.exited,
141
+ new Response(child.stdout).text(),
142
+ new Response(child.stderr).text(),
143
+ ]);
144
+ return { exitCode, stdout, stderr };
145
+ };
146
+ const parsePackage = (path) => {
147
+ try {
148
+ const value = JSON.parse(readFileSync(path, "utf8"));
149
+ return value !== null && typeof value === "object" && !Array.isArray(value)
150
+ ? value
151
+ : undefined;
152
+ }
153
+ catch {
154
+ return undefined;
155
+ }
156
+ };
157
+ const workspacePatterns = (pkg) => {
158
+ const workspaces = pkg.workspaces;
159
+ if (Array.isArray(workspaces))
160
+ return workspaces.filter((item) => typeof item === "string");
161
+ if (workspaces !== null && typeof workspaces === "object") {
162
+ const packages = workspaces.packages;
163
+ if (Array.isArray(packages))
164
+ return packages.filter((item) => typeof item === "string");
165
+ }
166
+ return [];
167
+ };
168
+ const workspaceContains = async (root, patterns, target) => {
169
+ if (root === target)
170
+ return patterns.length > 0;
171
+ for (const pattern of patterns) {
172
+ const packagePattern = `${pattern.replace(/\/$/, "")}/package.json`;
173
+ for await (const match of new Bun.Glob(packagePattern).scan({ cwd: root, dot: false })) {
174
+ if (match.split(/[\\/]/).includes("node_modules"))
175
+ continue;
176
+ const packageRoot = resolve(root, dirname(match));
177
+ const targetRelative = relative(packageRoot, target);
178
+ if (targetRelative === "" ||
179
+ (!targetRelative.startsWith(`..${sep}`) && targetRelative !== ".."))
180
+ return true;
181
+ }
182
+ }
183
+ return false;
184
+ };
185
+ /** Resolve the repository root even when the command starts in a workspace package. */
186
+ export async function resolveVerificationRoot(start) {
187
+ const original = realpathSync(resolve(start));
188
+ let current = original;
189
+ for (;;) {
190
+ const pkgPath = join(current, "package.json");
191
+ const pkg = parsePackage(pkgPath);
192
+ if (pkg !== undefined && (await workspaceContains(current, workspacePatterns(pkg), original))) {
193
+ return current;
194
+ }
195
+ const parent = dirname(current);
196
+ if (parent === current)
197
+ return original;
198
+ current = parent;
199
+ }
200
+ }
201
+ const gatePlan = (mode) => mode === "release" ? RELEASE_GATES : DEFAULT_GATES;
202
+ const commandLabel = (args) => `bun ${args.join(" ")}`;
203
+ const runGate = async (root, gate, runCommand, fixtureRoot) => {
204
+ let lastExitCode;
205
+ for (const [index, args] of gate.commands.entries()) {
206
+ const fixture = mkdtempSync(join(fixtureRoot, `${gate.id}-${index}-`));
207
+ const result = await runCommand({
208
+ args,
209
+ cwd: root,
210
+ env: {
211
+ ...process.env,
212
+ TMPDIR: fixture,
213
+ NIFRA_VERIFY_GATE: gate.id,
214
+ },
215
+ });
216
+ lastExitCode = result.exitCode;
217
+ if (result.exitCode !== 0) {
218
+ return {
219
+ id: gate.id,
220
+ status: "fail",
221
+ commands: gate.commands.map(commandLabel),
222
+ exitCode: result.exitCode,
223
+ message: `${commandLabel(args)} exited with code ${result.exitCode}`,
224
+ remediation: gate.remediation,
225
+ };
226
+ }
227
+ }
228
+ return {
229
+ id: gate.id,
230
+ status: "pass",
231
+ commands: gate.commands.map(commandLabel),
232
+ ...(lastExitCode === undefined ? {} : { exitCode: lastExitCode }),
233
+ remediation: gate.remediation,
234
+ };
235
+ };
236
+ const skippedGate = (gate, failedId) => ({
237
+ id: gate.id,
238
+ status: "skipped",
239
+ commands: gate.commands.map(commandLabel),
240
+ message: `not run because the ${failedId} gate failed`,
241
+ remediation: `Fix the ${failedId} gate first, then rerun verification.`,
242
+ });
243
+ /** Collect the same gate result rendered by the CLI and used by repository scripts. */
244
+ export async function collectReleaseVerification(start, options = {}) {
245
+ const mode = options.mode ?? "default";
246
+ const root = await resolveVerificationRoot(start);
247
+ const runCommand = options.runCommand ?? runBunCommand;
248
+ const fixtureRoot = mkdtempSync(join(realpathSync(tmpdir()), "nifra-verify-"));
249
+ const gates = [];
250
+ try {
251
+ let failedId;
252
+ for (const gate of gatePlan(mode)) {
253
+ if (failedId !== undefined) {
254
+ gates.push(skippedGate(gate, failedId));
255
+ continue;
256
+ }
257
+ const result = await runGate(root, gate, runCommand, fixtureRoot);
258
+ gates.push(result);
259
+ if (result.status === "fail")
260
+ failedId = result.id;
261
+ }
262
+ }
263
+ finally {
264
+ rmSync(fixtureRoot, { recursive: true, force: true });
265
+ }
266
+ return {
267
+ ok: gates.every((gate) => gate.status === "pass"),
268
+ mode,
269
+ gates,
270
+ };
271
+ }
272
+ export function renderReleaseVerification(result) {
273
+ const lines = [`nifra verify --${result.mode}`, ""];
274
+ for (const gate of result.gates) {
275
+ const marker = gate.status === "pass" ? "✓" : gate.status === "fail" ? "✗" : "-";
276
+ lines.push(`${marker} ${gate.id}: ${gate.status}`);
277
+ if (gate.message !== undefined)
278
+ lines.push(` ${gate.message}`);
279
+ if (gate.status !== "pass")
280
+ lines.push(` fix: ${gate.remediation}`);
281
+ }
282
+ lines.push("", result.ok ? "✓ verification passed" : "✗ verification failed");
283
+ return lines.join("\n");
284
+ }
285
+ /** Run verification and render either the human or machine interface. */
286
+ export async function runReleaseVerification(cwd, options = {}) {
287
+ const result = await collectReleaseVerification(cwd, options);
288
+ if (options.json)
289
+ console.log(JSON.stringify(result, null, 2));
290
+ else
291
+ console.log(renderReleaseVerification(result));
292
+ return result.ok;
293
+ }
294
+ if (import.meta.main) {
295
+ const mode = process.argv.includes("--release") ? "release" : "default";
296
+ const ok = await runReleaseVerification(process.cwd(), {
297
+ mode,
298
+ json: process.argv.includes("--json"),
299
+ });
300
+ if (!ok)
301
+ process.exitCode = 1;
302
+ }
303
+ //# sourceMappingURL=release-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-verification.js","sourceRoot":"","sources":["../src/release-verification.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,12 @@
7
7
  * marker in an unrelated comment further up never leaks onto a finding below it.
8
8
  */
9
9
  export declare function commentBlockHasMarker(lines: readonly string[], line: number, marker: string): boolean;
10
+ /**
11
+ * The justification a reason-carrying marker (`<marker>: <reason>`) supplies, or `undefined` when the
12
+ * marker is absent or written with no reason after its colon. Searches the same trailing-comment /
13
+ * comment-block-above region as {@link commentBlockHasMarker}, so a hatch that demands a written reason
14
+ * can require this to be non-empty before it silences anything - an empty `<marker>:` never suppresses,
15
+ * which is how "reason mandatory" is enforced without a second diagnostic.
16
+ */
17
+ export declare function commentBlockMarkerReason(lines: readonly string[], line: number, marker: string): string | undefined;
10
18
  //# sourceMappingURL=comment-markers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"comment-markers.d.ts","sourceRoot":"","sources":["../../src/rules/comment-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAQT"}
1
+ {"version":3,"file":"comment-markers.d.ts","sourceRoot":"","sources":["../../src/rules/comment-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAQT;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAuBpB"}
@@ -21,4 +21,40 @@ export function commentBlockHasMarker(lines, line, marker) {
21
21
  }
22
22
  return false;
23
23
  }
24
+ /**
25
+ * The justification a reason-carrying marker (`<marker>: <reason>`) supplies, or `undefined` when the
26
+ * marker is absent or written with no reason after its colon. Searches the same trailing-comment /
27
+ * comment-block-above region as {@link commentBlockHasMarker}, so a hatch that demands a written reason
28
+ * can require this to be non-empty before it silences anything - an empty `<marker>:` never suppresses,
29
+ * which is how "reason mandatory" is enforced without a second diagnostic.
30
+ */
31
+ export function commentBlockMarkerReason(lines, line, marker) {
32
+ const reasonOn = (text) => {
33
+ const at = text.indexOf(marker);
34
+ if (at < 0)
35
+ return undefined;
36
+ const rest = text.slice(at + marker.length);
37
+ const colon = rest.indexOf(":");
38
+ if (colon < 0)
39
+ return undefined;
40
+ // A block comment's `*/` closer is not part of the reason.
41
+ const reason = rest
42
+ .slice(colon + 1)
43
+ .replace(/\*\/\s*$/, "")
44
+ .trim();
45
+ return reason.length > 0 ? reason : undefined;
46
+ };
47
+ const onLine = reasonOn(lines[line - 1] ?? "");
48
+ if (onLine !== undefined)
49
+ return onLine;
50
+ for (let i = line - 2; i >= 0; i--) {
51
+ const text = lines[i] ?? "";
52
+ if (!COMMENT_LINE.test(text))
53
+ return undefined;
54
+ const reason = reasonOn(text);
55
+ if (reason !== undefined)
56
+ return reason;
57
+ }
58
+ return undefined;
59
+ }
24
60
  //# sourceMappingURL=comment-markers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comment-markers.js","sourceRoot":"","sources":["../../src/rules/comment-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wFAAwF;AACxF,mDAAmD;AACnD,MAAM,YAAY,GAAG,kCAAkC,CAAA;AAEvD,MAAM,UAAU,qBAAqB,CACnC,KAAwB,EACxB,IAAY,EACZ,MAAc;IAEd,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACzD,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IACxC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"comment-markers.js","sourceRoot":"","sources":["../../src/rules/comment-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wFAAwF;AACxF,mDAAmD;AACnD,MAAM,YAAY,GAAG,kCAAkC,CAAA;AAEvD,MAAM,UAAU,qBAAqB,CACnC,KAAwB,EACxB,IAAY,EACZ,MAAc;IAEd,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACzD,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IACxC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAwB,EACxB,IAAY,EACZ,MAAc;IAEd,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAsB,EAAE;QACpD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QAC/B,2DAA2D;QAC3D,MAAM,MAAM,GAAG,IAAI;aAChB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;aAChB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,IAAI,EAAE,CAAA;QACT,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/C,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAA;IACzC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import type { Diagnostic } from "../diagnostics.js";
2
+ import type { ProjectFacts } from "../project-facts.js";
3
+ export type { ProjectFacts } from "../project-facts.js";
2
4
  export interface SourceFile {
3
5
  readonly file: string;
4
6
  readonly content: string;
@@ -7,9 +9,6 @@ export interface SourceIndex {
7
9
  readonly files: readonly string[];
8
10
  read(file: string): string | undefined;
9
11
  }
10
- export interface ProjectFacts {
11
- readonly [key: string]: unknown;
12
- }
13
12
  export interface RuleContext {
14
13
  readonly root: string;
15
14
  readonly sources: SourceIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;CACvD;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CACrC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,GAAG,SAAS,QAAQ,EAAE,CA6B7F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,QAAQ,EAAE,CAoFlE;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,SAAS,SAAS,EAAE,EAC9B,KAAK,GAAE,SAAS,QAAQ,EAAO,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,CAWvB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,CAMrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGvD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;CACvD;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CACrC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,GAAG,SAAS,QAAQ,EAAE,CA6B7F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,QAAQ,EAAE,CAoFlE;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,SAAS,SAAS,EAAE,EAC9B,KAAK,GAAE,SAAS,QAAQ,EAAO,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,CAWvB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,WAAW,CAMrE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/rules/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAA;AA8ExD,eAAO,MAAM,mBAAmB,EAAE,SAiCjC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAgChC,CAAA;AAED,eAAO,MAAM,UAAU,sBAA2D,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/rules/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAA;AA6ExD,eAAO,MAAM,mBAAmB,EAAE,SAiCjC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAgChC,CAAA;AAED,eAAO,MAAM,UAAU,sBAA2D,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import { diagnostic } from "../diagnostics.js";
2
2
  import { commentBlockHasMarker } from "./comment-markers.js";
3
3
  /**
4
- * Route-table lints over the statically collected route registrations (`scanStaticRouteText` in
5
- * ../check.ts fills `ctx.project.staticRoutes` during the source walk - no second scan here).
4
+ * Route-table lints over the statically collected route registrations (`ProjectFacts.routes` is built
5
+ * once before the registry runs - no rule re-walks source).
6
6
  *
7
7
  * NF-C018 exists because the typed client's proxy intercepts a fixed set of property names before
8
8
  * path resolution (`resolveSegment` + the thenable guard in @nifrajs/client): the seven HTTP verbs
@@ -29,20 +29,18 @@ const RESERVED_READOUT = "get/post/put/patch/delete/head/options (any casing), s
29
29
  const RESERVED_SEGMENT_PRAGMA = "nifra-expect reserved-segment";
30
30
  /** Parse-don't-cast over the project fact: a malformed entry is dropped, never trusted. */
31
31
  function routeFacts(ctx) {
32
- const raw = ctx.project.staticRoutes;
33
- if (!Array.isArray(raw))
34
- return [];
32
+ const raw = ctx.project.routes;
35
33
  const out = [];
36
34
  for (const item of raw) {
37
- if (typeof item !== "object" || item === null)
35
+ if (typeof item !== "object" || item === null || Array.isArray(item))
38
36
  continue;
39
- const record = item;
40
- if (typeof record.file === "string" &&
41
- typeof record.line === "number" &&
42
- typeof record.method === "string" &&
43
- typeof record.path === "string") {
44
- out.push({ file: record.file, line: record.line, method: record.method, path: record.path });
45
- }
37
+ const record = Object.fromEntries(Object.entries(item));
38
+ if (typeof record.file !== "string" ||
39
+ typeof record.line !== "number" ||
40
+ typeof record.method !== "string" ||
41
+ typeof record.path !== "string")
42
+ continue;
43
+ out.push({ file: record.file, line: record.line, method: record.method, path: record.path });
46
44
  }
47
45
  return out;
48
46
  }
@@ -80,7 +78,7 @@ export const reservedSegmentRule = {
80
78
  continue;
81
79
  let lines = linesByFile.get(route.file);
82
80
  if (lines === undefined) {
83
- lines = (ctx.sources.read(route.file) ?? "").split("\n");
81
+ lines = (ctx.project.source.read(route.file) ?? "").split("\n");
84
82
  linesByFile.set(route.file, lines);
85
83
  }
86
84
  if (commentBlockHasMarker(lines, route.line, RESERVED_SEGMENT_PRAGMA))
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/rules/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/rules/routes.ts"],"names":[],"mappings":"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"}
@@ -102,8 +102,8 @@ export const secretComparisonRule = {
102
102
  if (ts === undefined)
103
103
  return didNotRun("NF-S002", "Non-constant-time secret comparison scan");
104
104
  const findings = [];
105
- for (const file of ctx.sources.files) {
106
- const parsed = parsedFile(ts, ctx.sources, file);
105
+ for (const file of ctx.project.source.files) {
106
+ const parsed = parsedFile(ts, ctx.project.source, file);
107
107
  if (parsed === undefined)
108
108
  continue;
109
109
  const { tree, lines } = parsed;
@@ -158,8 +158,8 @@ export const piiLogRule = {
158
158
  if (ts === undefined)
159
159
  return didNotRun("NF-S003", "Sensitive-value-in-log scan");
160
160
  const findings = [];
161
- for (const file of ctx.sources.files) {
162
- const parsed = parsedFile(ts, ctx.sources, file);
161
+ for (const file of ctx.project.source.files) {
162
+ const parsed = parsedFile(ts, ctx.project.source, file);
163
163
  if (parsed === undefined)
164
164
  continue;
165
165
  const { tree, lines } = parsed;
@@ -205,8 +205,8 @@ export const failOpenGateRule = {
205
205
  if (ts === undefined)
206
206
  return didNotRun("NF-S001", "Fail-open gate scan");
207
207
  const findings = [];
208
- for (const file of ctx.sources.files) {
209
- const parsed = parsedFile(ts, ctx.sources, file);
208
+ for (const file of ctx.project.source.files) {
209
+ const parsed = parsedFile(ts, ctx.project.source, file);
210
210
  if (parsed === undefined)
211
211
  continue;
212
212
  const { tree, lines } = parsed;
@@ -271,8 +271,8 @@ export const corsOriginPredicateRule = {
271
271
  if (ts === undefined)
272
272
  return didNotRun("NF-S004", "CORS origin predicate scan");
273
273
  const findings = [];
274
- for (const file of ctx.sources.files) {
275
- const parsed = parsedFile(ts, ctx.sources, file);
274
+ for (const file of ctx.project.source.files) {
275
+ const parsed = parsedFile(ts, ctx.project.source, file);
276
276
  if (parsed === undefined)
277
277
  continue;
278
278
  const { tree, lines } = parsed;
@@ -328,8 +328,8 @@ export const externalRedirectRule = {
328
328
  if (ts === undefined)
329
329
  return didNotRun("NF-S005", "External redirect opt-out scan");
330
330
  const findings = [];
331
- for (const file of ctx.sources.files) {
332
- const parsed = parsedFile(ts, ctx.sources, file);
331
+ for (const file of ctx.project.source.files) {
332
+ const parsed = parsedFile(ts, ctx.project.source, file);
333
333
  if (parsed === undefined)
334
334
  continue;
335
335
  const { tree, lines } = parsed;
@@ -379,8 +379,8 @@ export const assuranceEscapeHatchRule = {
379
379
  if (ts === undefined)
380
380
  return didNotRun("NF-S006", "Security escape hatch scan");
381
381
  const findings = [];
382
- for (const file of ctx.sources.files) {
383
- const parsed = parsedFile(ts, ctx.sources, file);
382
+ for (const file of ctx.project.source.files) {
383
+ const parsed = parsedFile(ts, ctx.project.source, file);
384
384
  if (parsed === undefined)
385
385
  continue;
386
386
  const { tree, lines } = parsed;
@@ -420,8 +420,8 @@ export const unprefixedSecureCookieRule = {
420
420
  if (ts === undefined)
421
421
  return didNotRun("NF-S007", "Secure cookie prefix scan");
422
422
  const findings = [];
423
- for (const file of ctx.sources.files) {
424
- const parsed = parsedFile(ts, ctx.sources, file);
423
+ for (const file of ctx.project.source.files) {
424
+ const parsed = parsedFile(ts, ctx.project.source, file);
425
425
  if (parsed === undefined)
426
426
  continue;
427
427
  const { tree } = parsed;