@nifrajs/cli 4.0.2 → 5.0.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.
- package/README.md +3 -0
- package/dist/agent-files.d.ts +107 -0
- package/dist/agent-files.d.ts.map +1 -0
- package/dist/agent-files.js +162 -0
- package/dist/agent-files.js.map +1 -0
- package/dist/app-files.d.ts +6 -0
- package/dist/app-files.d.ts.map +1 -1
- package/dist/app-files.js +27 -2
- package/dist/app-files.js.map +1 -1
- package/dist/assure-hydration.d.ts.map +1 -1
- package/dist/assure-hydration.js +7 -2
- package/dist/assure-hydration.js.map +1 -1
- package/dist/capabilities-tool.d.ts.map +1 -1
- package/dist/capabilities-tool.js +13 -3
- package/dist/capabilities-tool.js.map +1 -1
- package/dist/check-diagnostics.d.ts +20 -2
- package/dist/check-diagnostics.d.ts.map +1 -1
- package/dist/check-diagnostics.js +54 -7
- package/dist/check-diagnostics.js.map +1 -1
- package/dist/check-scan.d.ts +75 -22
- package/dist/check-scan.d.ts.map +1 -1
- package/dist/check-scan.js +1475 -310
- package/dist/check-scan.js.map +1 -1
- package/dist/check.d.ts +2 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +192 -65
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +112 -5
- package/dist/cli.js.map +1 -1
- package/dist/client-module.d.ts +18 -0
- package/dist/client-module.d.ts.map +1 -0
- package/dist/client-module.js +49 -0
- package/dist/client-module.js.map +1 -0
- package/dist/command-catalog.d.ts +16 -5
- package/dist/command-catalog.d.ts.map +1 -1
- package/dist/command-catalog.js +133 -29
- package/dist/command-catalog.js.map +1 -1
- package/dist/component-check.d.ts +13 -0
- package/dist/component-check.d.ts.map +1 -0
- package/dist/component-check.js +59 -0
- package/dist/component-check.js.map +1 -0
- package/dist/contract-proof.d.ts +1 -1
- package/dist/contract-proof.d.ts.map +1 -1
- package/dist/contract-proof.js +2 -24
- package/dist/contract-proof.js.map +1 -1
- package/dist/contracts.d.ts +19 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +50 -3
- package/dist/contracts.js.map +1 -1
- package/dist/db-tool.d.ts.map +1 -1
- package/dist/db-tool.js +4 -3
- package/dist/db-tool.js.map +1 -1
- package/dist/dev-bun-config.d.ts +5 -1
- package/dist/dev-bun-config.d.ts.map +1 -1
- package/dist/dev-bun-config.js +44 -11
- package/dist/dev-bun-config.js.map +1 -1
- package/dist/diagnostics.d.ts +3 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/diff-tool.d.ts +9 -8
- package/dist/diff-tool.d.ts.map +1 -1
- package/dist/diff-tool.js +28 -24
- package/dist/diff-tool.js.map +1 -1
- package/dist/doctor.d.ts +13 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +23 -15
- package/dist/doctor.js.map +1 -1
- package/dist/env-file.d.ts +6 -0
- package/dist/env-file.d.ts.map +1 -1
- package/dist/env-file.js +6 -0
- package/dist/env-file.js.map +1 -1
- package/dist/fix-recipes.d.ts.map +1 -1
- package/dist/fix-recipes.js +21 -2
- package/dist/fix-recipes.js.map +1 -1
- package/dist/hand-built-manifest.d.ts +27 -0
- package/dist/hand-built-manifest.d.ts.map +1 -0
- package/dist/hand-built-manifest.js +124 -0
- package/dist/hand-built-manifest.js.map +1 -0
- package/dist/hooks-report.d.ts +23 -0
- package/dist/hooks-report.d.ts.map +1 -0
- package/dist/hooks-report.js +104 -0
- package/dist/hooks-report.js.map +1 -0
- package/dist/init-agents.d.ts +2 -2
- package/dist/init-agents.d.ts.map +1 -1
- package/dist/init-agents.js +17 -11
- package/dist/init-agents.js.map +1 -1
- package/dist/internal/nifra-project.d.ts +41 -0
- package/dist/internal/nifra-project.d.ts.map +1 -0
- package/dist/internal/nifra-project.js +183 -0
- package/dist/internal/nifra-project.js.map +1 -0
- package/dist/internal/project-specifiers.d.ts +16 -0
- package/dist/internal/project-specifiers.d.ts.map +1 -0
- package/dist/internal/project-specifiers.js +396 -0
- package/dist/internal/project-specifiers.js.map +1 -0
- package/dist/internal/script-kind.d.ts.map +1 -1
- package/dist/internal/script-kind.js +2 -1
- package/dist/internal/script-kind.js.map +1 -1
- package/dist/internal/source-facts.d.ts +2 -0
- package/dist/internal/source-facts.d.ts.map +1 -1
- package/dist/internal/source-facts.js +11 -0
- package/dist/internal/source-facts.js.map +1 -1
- package/dist/internal/typescript-import.d.ts +1 -1
- package/dist/internal/typescript-import.d.ts.map +1 -1
- package/dist/internal/typescript-import.js +5 -3
- package/dist/internal/typescript-import.js.map +1 -1
- package/dist/introspect.d.ts +6 -6
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +55 -24
- package/dist/introspect.js.map +1 -1
- package/dist/levels-tool.d.ts.map +1 -1
- package/dist/levels-tool.js +93 -15
- package/dist/levels-tool.js.map +1 -1
- package/dist/load.d.ts +31 -8
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +37 -7
- package/dist/load.js.map +1 -1
- package/dist/mcp-context.d.ts +5 -5
- package/dist/mcp-context.d.ts.map +1 -1
- package/dist/mcp-context.js +2 -2
- package/dist/mcp-context.js.map +1 -1
- package/dist/mcp-exec.d.ts +12 -4
- package/dist/mcp-exec.d.ts.map +1 -1
- package/dist/mcp-exec.js +50 -13
- package/dist/mcp-exec.js.map +1 -1
- package/dist/mcp-http.js +1 -1
- package/dist/mcp-io.d.ts +17 -0
- package/dist/mcp-io.d.ts.map +1 -1
- package/dist/mcp-io.js +40 -0
- package/dist/mcp-io.js.map +1 -1
- package/dist/mcp-isolate.d.ts.map +1 -1
- package/dist/mcp-isolate.js +3 -2
- package/dist/mcp-isolate.js.map +1 -1
- package/dist/mcp-project-child.js +1 -1
- package/dist/mcp-project-child.js.map +1 -1
- package/dist/mcp-root.d.ts.map +1 -1
- package/dist/mcp-root.js +50 -10
- package/dist/mcp-root.js.map +1 -1
- package/dist/mcp-ws.d.ts.map +1 -1
- package/dist/mcp-ws.js +3 -1
- package/dist/mcp-ws.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +8 -2
- package/dist/mcp.js.map +1 -1
- package/dist/migrate-layout.d.ts +7 -0
- package/dist/migrate-layout.d.ts.map +1 -1
- package/dist/migrate-layout.js +778 -64
- package/dist/migrate-layout.js.map +1 -1
- package/dist/output-schemas.d.ts +94 -0
- package/dist/output-schemas.d.ts.map +1 -0
- package/dist/output-schemas.js +864 -0
- package/dist/output-schemas.js.map +1 -0
- package/dist/port.d.ts.map +1 -1
- package/dist/port.js +3 -2
- package/dist/port.js.map +1 -1
- package/dist/project-facts.d.ts +15 -4
- package/dist/project-facts.d.ts.map +1 -1
- package/dist/project-facts.js +1 -0
- package/dist/project-facts.js.map +1 -1
- package/dist/recipes/5.0.0.d.ts +11 -0
- package/dist/recipes/5.0.0.d.ts.map +1 -0
- package/dist/recipes/5.0.0.js +34 -0
- package/dist/recipes/5.0.0.js.map +1 -0
- package/dist/recipes/index.d.ts +7 -0
- package/dist/recipes/index.d.ts.map +1 -1
- package/dist/recipes/index.js +2 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +12 -3
- package/dist/replay.js.map +1 -1
- package/dist/review.d.ts +3 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +38 -7
- package/dist/review.js.map +1 -1
- package/dist/rules/codes.d.ts +10 -0
- package/dist/rules/codes.d.ts.map +1 -1
- package/dist/rules/codes.js +10 -0
- package/dist/rules/codes.js.map +1 -1
- package/dist/rules/comment-markers.d.ts +16 -7
- package/dist/rules/comment-markers.d.ts.map +1 -1
- package/dist/rules/comment-markers.js +58 -19
- package/dist/rules/comment-markers.js.map +1 -1
- package/dist/rules/contract-visibility.d.ts +3 -0
- package/dist/rules/contract-visibility.d.ts.map +1 -0
- package/dist/rules/contract-visibility.js +337 -0
- package/dist/rules/contract-visibility.js.map +1 -0
- package/dist/rules/data-guard.d.ts +7 -0
- package/dist/rules/data-guard.d.ts.map +1 -1
- package/dist/rules/data-guard.js +319 -37
- package/dist/rules/data-guard.js.map +1 -1
- package/dist/rules/layout.d.ts +4 -0
- package/dist/rules/layout.d.ts.map +1 -0
- package/dist/rules/layout.js +19 -0
- package/dist/rules/layout.js.map +1 -0
- package/dist/rules/legacy.d.ts.map +1 -1
- package/dist/rules/legacy.js +158 -43
- package/dist/rules/legacy.js.map +1 -1
- package/dist/rules/pages.d.ts +24 -0
- package/dist/rules/pages.d.ts.map +1 -1
- package/dist/rules/pages.js +221 -3
- package/dist/rules/pages.js.map +1 -1
- package/dist/rules/routes.d.ts +6 -0
- package/dist/rules/routes.d.ts.map +1 -1
- package/dist/rules/routes.js +111 -16
- package/dist/rules/routes.js.map +1 -1
- package/dist/rules/secrets.js +2 -2
- package/dist/rules/secrets.js.map +1 -1
- package/dist/rules/security.d.ts +12 -1
- package/dist/rules/security.d.ts.map +1 -1
- package/dist/rules/security.js +281 -68
- package/dist/rules/security.js.map +1 -1
- package/dist/rules/zones.d.ts +13 -0
- package/dist/rules/zones.d.ts.map +1 -1
- package/dist/rules/zones.js +192 -40
- package/dist/rules/zones.js.map +1 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +6 -4
- package/dist/scaffold.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +14 -5
- package/dist/sdk.js.map +1 -1
- package/dist/stylex-migrate.d.ts.map +1 -1
- package/dist/stylex-migrate.js +163 -7
- package/dist/stylex-migrate.js.map +1 -1
- package/dist/test-tool.d.ts.map +1 -1
- package/dist/test-tool.js +12 -3
- package/dist/test-tool.js.map +1 -1
- package/dist/typecheck-coverage.d.ts +20 -0
- package/dist/typecheck-coverage.d.ts.map +1 -0
- package/dist/typecheck-coverage.js +129 -0
- package/dist/typecheck-coverage.js.map +1 -0
- package/dist/upgrade.d.ts +69 -0
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +420 -77
- package/dist/upgrade.js.map +1 -1
- package/dist/verification-plan.d.ts.map +1 -1
- package/dist/verification-plan.js +11 -0
- package/dist/verification-plan.js.map +1 -1
- package/dist/version-drift.d.ts +22 -0
- package/dist/version-drift.d.ts.map +1 -0
- package/dist/version-drift.js +42 -0
- package/dist/version-drift.js.map +1 -0
- package/dist/web-app-options.d.ts +1 -1
- package/dist/web-app-options.d.ts.map +1 -1
- package/dist/web-app-options.js +1 -1
- package/dist/web-app-options.js.map +1 -1
- package/dist/work-graph.d.ts.map +1 -1
- package/dist/work-graph.js +20 -8
- package/dist/work-graph.js.map +1 -1
- package/docs/examples.json +54 -6
- package/docs/llms-full.txt +1539 -138
- package/docs/types.json +1456 -206
- package/package.json +11 -12
- package/src/agent-files.ts +203 -0
- package/src/app-files.ts +34 -4
- package/src/assure-hydration.ts +15 -2
- package/src/capabilities-tool.ts +15 -3
- package/src/check-diagnostics.ts +73 -9
- package/src/check-scan.ts +1773 -381
- package/src/check.ts +237 -76
- package/src/cli.ts +141 -5
- package/src/client-module.ts +61 -0
- package/src/command-catalog.ts +166 -37
- package/src/component-check.ts +79 -0
- package/src/contract-proof.ts +3 -25
- package/src/contracts.ts +60 -3
- package/src/db-tool.ts +5 -2
- package/src/dev-bun-config.ts +51 -10
- package/src/diagnostics.ts +3 -0
- package/src/diff-tool.ts +33 -26
- package/src/doctor.ts +43 -21
- package/src/env-file.ts +7 -0
- package/src/fix-recipes.ts +25 -2
- package/src/hand-built-manifest.ts +144 -0
- package/src/hooks-report.ts +135 -0
- package/src/init-agents.ts +17 -11
- package/src/internal/nifra-project.ts +191 -0
- package/src/internal/project-specifiers.ts +424 -0
- package/src/internal/script-kind.ts +2 -1
- package/src/internal/source-facts.ts +25 -0
- package/src/internal/typescript-import.ts +10 -3
- package/src/introspect.ts +65 -27
- package/src/levels-tool.ts +117 -20
- package/src/load.ts +78 -14
- package/src/mcp-context.ts +7 -7
- package/src/mcp-exec.ts +60 -17
- package/src/mcp-http.ts +1 -1
- package/src/mcp-io.ts +41 -0
- package/src/mcp-isolate.ts +9 -2
- package/src/mcp-project-child.ts +1 -1
- package/src/mcp-root.ts +58 -8
- package/src/mcp-ws.ts +4 -2
- package/src/mcp.ts +8 -3
- package/src/migrate-layout.ts +885 -63
- package/src/output-schemas.ts +1084 -0
- package/src/port.ts +3 -2
- package/src/project-facts.ts +17 -3
- package/src/recipes/5.0.0.ts +35 -0
- package/src/recipes/index.ts +10 -0
- package/src/replay.ts +14 -3
- package/src/review.ts +39 -10
- package/src/rules/codes.ts +10 -0
- package/src/rules/comment-markers.ts +57 -21
- package/src/rules/contract-visibility.ts +383 -0
- package/src/rules/data-guard.ts +351 -42
- package/src/rules/layout.ts +22 -0
- package/src/rules/legacy.ts +184 -51
- package/src/rules/pages.ts +238 -3
- package/src/rules/routes.ts +124 -16
- package/src/rules/secrets.ts +2 -2
- package/src/rules/security.ts +352 -71
- package/src/rules/zones.ts +205 -38
- package/src/scaffold.ts +6 -4
- package/src/sdk.ts +14 -5
- package/src/stylex-migrate.ts +134 -7
- package/src/test-tool.ts +18 -3
- package/src/typecheck-coverage.ts +134 -0
- package/src/upgrade.ts +487 -71
- package/src/verification-plan.ts +24 -0
- package/src/version-drift.ts +67 -0
- package/src/web-app-options.ts +2 -2
- package/src/work-graph.ts +17 -12
package/dist/test-tool.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readHeadTail } from "./mcp-io.js";
|
|
1
|
+
import { OWN_PROCESS_GROUP, readHeadTail, signalProcessGroup, } from "./mcp-io.js";
|
|
2
2
|
import { mcpProjectPathError, resolveMcpProjectPath } from "./mcp-path.js";
|
|
3
3
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
4
4
|
const MAX_TIMEOUT_MS = 300_000;
|
|
@@ -34,6 +34,7 @@ function normalizeTimeout(value) {
|
|
|
34
34
|
}
|
|
35
35
|
return Math.min(Math.max(Math.trunc(value), 1_000), MAX_TIMEOUT_MS);
|
|
36
36
|
}
|
|
37
|
+
const KILL_GRACE_MS = 2_000;
|
|
37
38
|
const ANSI = new RegExp(`${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`, "g");
|
|
38
39
|
// A UTF-8 character is at most four bytes, so these hold every character the result can show.
|
|
39
40
|
const HEAD_BYTES = HEAD_CHARS * 4;
|
|
@@ -112,17 +113,24 @@ export async function collectTestResult(cwd, args = {}, opts = {}) {
|
|
|
112
113
|
env: process.env,
|
|
113
114
|
stdout: "pipe",
|
|
114
115
|
stderr: "pipe",
|
|
116
|
+
detached: OWN_PROCESS_GROUP,
|
|
115
117
|
});
|
|
116
118
|
let timedOut = false;
|
|
117
119
|
let cancelled = false;
|
|
120
|
+
let escalation;
|
|
121
|
+
// A test can ignore SIGTERM, so the group gets SIGKILL once the grace period runs out.
|
|
122
|
+
const stop = () => {
|
|
123
|
+
signalProcessGroup(proc, "SIGTERM");
|
|
124
|
+
escalation ??= setTimeout(() => signalProcessGroup(proc, "SIGKILL"), KILL_GRACE_MS);
|
|
125
|
+
};
|
|
118
126
|
const abort = () => {
|
|
119
127
|
cancelled = true;
|
|
120
|
-
|
|
128
|
+
stop();
|
|
121
129
|
};
|
|
122
130
|
opts.signal?.addEventListener("abort", abort, { once: true });
|
|
123
131
|
const timer = setTimeout(() => {
|
|
124
132
|
timedOut = true;
|
|
125
|
-
|
|
133
|
+
stop();
|
|
126
134
|
}, timeoutMs);
|
|
127
135
|
const empty = { head: "", tail: "", droppedBytes: 0 };
|
|
128
136
|
let stdoutRaw = empty;
|
|
@@ -142,6 +150,7 @@ export async function collectTestResult(cwd, args = {}, opts = {}) {
|
|
|
142
150
|
}
|
|
143
151
|
finally {
|
|
144
152
|
clearTimeout(timer);
|
|
153
|
+
clearTimeout(escalation);
|
|
145
154
|
opts.signal?.removeEventListener("abort", abort);
|
|
146
155
|
}
|
|
147
156
|
const stdout = clean(stdoutRaw);
|
package/dist/test-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-tool.js","sourceRoot":"","sources":["../src/test-tool.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"test-tool.js","sourceRoot":"","sources":["../src/test-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Split `tsc --listFiles` output into the program's files and the compiler's own output. */
|
|
2
|
+
export declare function splitListedFiles(output: string): {
|
|
3
|
+
readonly programFiles: readonly string[];
|
|
4
|
+
readonly output: string;
|
|
5
|
+
};
|
|
6
|
+
/** The zone folder a project file sits in (`backend`, `apps/web/routes`), or `undefined`. */
|
|
7
|
+
export declare function zoneFolderOf(file: string): string | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* The `exclude` patterns of `<cwd>/tsconfig.json`, inherited through relative `extends` as tsc does,
|
|
10
|
+
* rewritten relative to `cwd`. A file a tsconfig excludes is out of the program on purpose.
|
|
11
|
+
*/
|
|
12
|
+
export declare function tsconfigExcludes(cwd: string): string[];
|
|
13
|
+
/**
|
|
14
|
+
* The TypeScript files under a zone folder that `programFiles` does not contain, project-relative and
|
|
15
|
+
* in input order. Declaration files and tests are left out: a project may typecheck tests with a
|
|
16
|
+
* separate config. So is an app nested under its own tsconfig, which this program does not own, and a
|
|
17
|
+
* file the tsconfig's `exclude` names.
|
|
18
|
+
*/
|
|
19
|
+
export declare function filesOutsideProgram(cwd: string, files: readonly string[], programFiles: readonly string[]): string[];
|
|
20
|
+
//# sourceMappingURL=typecheck-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck-coverage.d.ts","sourceRoot":"","sources":["../src/typecheck-coverage.ts"],"names":[],"mappings":"AAeA,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CASA;AAgBD,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI7D;AAcD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtD;AAQD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,EAAE,CA0BV"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which zoned files the typecheck never read. `tsc --noEmit` passes for code outside its program, so
|
|
3
|
+
* a stale tsconfig `include` (a folder moved under `backend/`, say) turns the contract gate into a
|
|
4
|
+
* pass that checked nothing there. The check runs tsc with `--listFiles` and compares the program
|
|
5
|
+
* against the app's zone folders.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
8
|
+
import { dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
9
|
+
import { stripComments } from "./check-scan.js";
|
|
10
|
+
const ZONE_FOLDER = new Set(["routes", "frontend", "backend", "shared"]);
|
|
11
|
+
const TS_SOURCE = /\.(?:[cm]?ts|tsx)$/;
|
|
12
|
+
const NOT_PROGRAM_CODE = /\.d\.[cm]?ts$|\.(?:test|spec)\.[cm]?tsx?$/;
|
|
13
|
+
const TSC_DIAGNOSTIC = /\(\d+,\d+\):\s*(?:error|warning)\s+TS\d+:/;
|
|
14
|
+
/** Split `tsc --listFiles` output into the program's files and the compiler's own output. */
|
|
15
|
+
export function splitListedFiles(output) {
|
|
16
|
+
const programFiles = [];
|
|
17
|
+
const rest = [];
|
|
18
|
+
for (const line of output.split(/\r?\n/)) {
|
|
19
|
+
if (line !== "" && line === line.trim() && isAbsolute(line) && !TSC_DIAGNOSTIC.test(line))
|
|
20
|
+
programFiles.push(line);
|
|
21
|
+
else
|
|
22
|
+
rest.push(line);
|
|
23
|
+
}
|
|
24
|
+
return { programFiles, output: rest.join("\n").trim() };
|
|
25
|
+
}
|
|
26
|
+
const real = (path) => {
|
|
27
|
+
try {
|
|
28
|
+
return realpathSync.native(path);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return path;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
// tsc prints forward slashes, and on Windows the drive letter's case is not stable.
|
|
35
|
+
const canonical = (path) => {
|
|
36
|
+
const posix = path.replaceAll("\\", "/");
|
|
37
|
+
return process.platform === "win32" ? posix.toLowerCase() : posix;
|
|
38
|
+
};
|
|
39
|
+
/** The zone folder a project file sits in (`backend`, `apps/web/routes`), or `undefined`. */
|
|
40
|
+
export function zoneFolderOf(file) {
|
|
41
|
+
const parts = file.split("/");
|
|
42
|
+
const at = parts.findIndex((part, i) => i < parts.length - 1 && ZONE_FOLDER.has(part));
|
|
43
|
+
return at === -1 ? undefined : parts.slice(0, at + 1).join("/");
|
|
44
|
+
}
|
|
45
|
+
/** True when a tsconfig between the app root and `cwd` makes the app its own program. */
|
|
46
|
+
function hasOwnProgram(cwd, app) {
|
|
47
|
+
let dir = app;
|
|
48
|
+
while (dir !== "" && dir !== ".") {
|
|
49
|
+
if (existsSync(join(cwd, dir, "tsconfig.json")))
|
|
50
|
+
return true;
|
|
51
|
+
const parent = dirname(dir);
|
|
52
|
+
if (parent === dir)
|
|
53
|
+
return false;
|
|
54
|
+
dir = parent;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The `exclude` patterns of `<cwd>/tsconfig.json`, inherited through relative `extends` as tsc does,
|
|
60
|
+
* rewritten relative to `cwd`. A file a tsconfig excludes is out of the program on purpose.
|
|
61
|
+
*/
|
|
62
|
+
export function tsconfigExcludes(cwd) {
|
|
63
|
+
let path = join(cwd, "tsconfig.json");
|
|
64
|
+
for (let depth = 0; depth < 8 && existsSync(path); depth++) {
|
|
65
|
+
let config;
|
|
66
|
+
try {
|
|
67
|
+
config = JSON.parse(stripComments(readFileSync(path, "utf8")).replace(/,(\s*[}\]])/g, "$1"));
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
if (typeof config !== "object" || config === null)
|
|
73
|
+
return [];
|
|
74
|
+
const exclude = Reflect.get(config, "exclude");
|
|
75
|
+
if (Array.isArray(exclude)) {
|
|
76
|
+
const from = dirname(path);
|
|
77
|
+
return exclude
|
|
78
|
+
.filter((pattern) => typeof pattern === "string")
|
|
79
|
+
.map((pattern) => relative(cwd, resolve(from, pattern)).replaceAll("\\", "/"));
|
|
80
|
+
}
|
|
81
|
+
const base = Reflect.get(config, "extends");
|
|
82
|
+
if (typeof base !== "string" || !base.startsWith("."))
|
|
83
|
+
return [];
|
|
84
|
+
path = resolve(dirname(path), base.endsWith(".json") ? base : `${base}.json`);
|
|
85
|
+
}
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
// tsc reads a pattern that names a folder as everything below it.
|
|
89
|
+
const excludedBy = (patterns, file) => patterns.some((pattern) => new Bun.Glob(pattern).match(file) || new Bun.Glob(`${pattern}/**`).match(file));
|
|
90
|
+
/**
|
|
91
|
+
* The TypeScript files under a zone folder that `programFiles` does not contain, project-relative and
|
|
92
|
+
* in input order. Declaration files and tests are left out: a project may typecheck tests with a
|
|
93
|
+
* separate config. So is an app nested under its own tsconfig, which this program does not own, and a
|
|
94
|
+
* file the tsconfig's `exclude` names.
|
|
95
|
+
*/
|
|
96
|
+
export function filesOutsideProgram(cwd, files, programFiles) {
|
|
97
|
+
const program = new Set();
|
|
98
|
+
for (const file of programFiles) {
|
|
99
|
+
program.add(canonical(file));
|
|
100
|
+
if (!file.includes("/node_modules/"))
|
|
101
|
+
program.add(canonical(real(file)));
|
|
102
|
+
}
|
|
103
|
+
const ownProgram = new Map();
|
|
104
|
+
const excluded = tsconfigExcludes(cwd);
|
|
105
|
+
const outside = [];
|
|
106
|
+
for (const file of files) {
|
|
107
|
+
if (!TS_SOURCE.test(file) || NOT_PROGRAM_CODE.test(file))
|
|
108
|
+
continue;
|
|
109
|
+
if (excludedBy(excluded, file))
|
|
110
|
+
continue;
|
|
111
|
+
const folder = zoneFolderOf(file);
|
|
112
|
+
if (folder === undefined)
|
|
113
|
+
continue;
|
|
114
|
+
const app = dirname(folder);
|
|
115
|
+
let own = ownProgram.get(app);
|
|
116
|
+
if (own === undefined) {
|
|
117
|
+
own = hasOwnProgram(cwd, app);
|
|
118
|
+
ownProgram.set(app, own);
|
|
119
|
+
}
|
|
120
|
+
if (own)
|
|
121
|
+
continue;
|
|
122
|
+
const abs = join(cwd, file);
|
|
123
|
+
if (program.has(canonical(abs)) || program.has(canonical(real(abs))))
|
|
124
|
+
continue;
|
|
125
|
+
outside.push(file);
|
|
126
|
+
}
|
|
127
|
+
return outside;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=typecheck-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck-coverage.js","sourceRoot":"","sources":["../src/typecheck-coverage.ts"],"names":[],"mappings":"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"}
|
package/dist/upgrade.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* 1. **pin sweep** - set every matching dependency to the target version across the workspace's
|
|
7
7
|
* package.json files, preserving the caret/tilde/exact style and skipping `workspace:`/`link:` specs.
|
|
8
|
+
* `overrides`, `resolutions` and `pnpm.overrides` are swept too, since they decide what installs;
|
|
9
|
+
* a version pinned anywhere else (an MCP config, a Dockerfile, another lockfile) is listed only.
|
|
8
10
|
* 2. **dependency moves** - replace removed packages with their supported successor without
|
|
9
11
|
* reserializing package.json or leaving duplicate dependency keys.
|
|
10
12
|
* 3. **import moves** - rewrite exact import specifiers to their updated module paths.
|
|
@@ -21,6 +23,7 @@
|
|
|
21
23
|
* Deliberately NOT a codemod engine: transforms are string/specifier-level only. Structural (AST)
|
|
22
24
|
* transforms are a future addition - a recipe that needs one is the signal to add the engine, not before.
|
|
23
25
|
*/
|
|
26
|
+
import { type HookReportChange } from "./hooks-report.js";
|
|
24
27
|
import { type UpgradeRecipe } from "./recipes/index.js";
|
|
25
28
|
export interface UpgradeOptions {
|
|
26
29
|
/** Target version, e.g. "1.8.0". Required unless `list` is set. */
|
|
@@ -39,6 +42,11 @@ export interface UpgradeOptions {
|
|
|
39
42
|
readonly exact?: boolean;
|
|
40
43
|
/** The running CLI's version: the newest target it applies. Default: its newest recipe. */
|
|
41
44
|
readonly cliVersion?: string;
|
|
45
|
+
/**
|
|
46
|
+
* With `--write`, capture `nifra routes --hooks` before and after the edits and print the diff, so a
|
|
47
|
+
* change in which hooks run where is visible. Loads the backend. Default true; `--no-hooks` skips it.
|
|
48
|
+
*/
|
|
49
|
+
readonly hooks?: boolean;
|
|
42
50
|
}
|
|
43
51
|
export interface PinChange {
|
|
44
52
|
readonly file: string;
|
|
@@ -62,6 +70,18 @@ export interface DependencyMoveChange {
|
|
|
62
70
|
readonly toVersion: string;
|
|
63
71
|
readonly action: "renamed" | "removed";
|
|
64
72
|
}
|
|
73
|
+
/** A retired comment in the project, and the line it applied to before the release retired it. */
|
|
74
|
+
export interface RetiredMarkerSite {
|
|
75
|
+
readonly file: string;
|
|
76
|
+
readonly line: number;
|
|
77
|
+
readonly marker: string;
|
|
78
|
+
/** The line the comment covered; `undefined` when a blank line follows its comment block. */
|
|
79
|
+
readonly covers: {
|
|
80
|
+
readonly line: number;
|
|
81
|
+
readonly text: string;
|
|
82
|
+
} | undefined;
|
|
83
|
+
readonly instead: string;
|
|
84
|
+
}
|
|
65
85
|
export interface UpgradePlan {
|
|
66
86
|
readonly version: string;
|
|
67
87
|
readonly pins: readonly PinChange[];
|
|
@@ -69,6 +89,12 @@ export interface UpgradePlan {
|
|
|
69
89
|
readonly importMoves: readonly ImportChange[];
|
|
70
90
|
/** Pins refused because the target is BELOW the installed version (a rollback). Empty when allowed. */
|
|
71
91
|
readonly downgrades: readonly PinChange[];
|
|
92
|
+
/** Comments a release in the chain stopped honoring. Listed only, never rewritten. */
|
|
93
|
+
readonly retiredMarkers: readonly RetiredMarkerSite[];
|
|
94
|
+
/** Installed group packages linked from outside the workspace root, at another version. Never edited. */
|
|
95
|
+
readonly linkedOutside: readonly LinkedGroupInstall[];
|
|
96
|
+
/** Other versions pinned outside package.json. Never edited. */
|
|
97
|
+
readonly strayPins: readonly StrayPin[];
|
|
72
98
|
readonly notes: readonly string[];
|
|
73
99
|
}
|
|
74
100
|
/**
|
|
@@ -119,6 +145,41 @@ export declare function applyImportMoves(text: string, moves: readonly {
|
|
|
119
145
|
count: number;
|
|
120
146
|
}>;
|
|
121
147
|
};
|
|
148
|
+
/**
|
|
149
|
+
* Every fixed-group version the package.json files under `cwd` declare with a plain semver spec, each
|
|
150
|
+
* with the files that declare it. An override counts: it decides what installs. `workspace:`, `link:`
|
|
151
|
+
* and other non-semver specs are not versions.
|
|
152
|
+
*/
|
|
153
|
+
export declare function groupPinVersions(cwd: string): ReadonlyMap<string, readonly string[]>;
|
|
154
|
+
/** A fixed-group version spelled outside package.json, which the upgrade lists and never edits. */
|
|
155
|
+
export interface StrayPin {
|
|
156
|
+
readonly file: string;
|
|
157
|
+
readonly line: number;
|
|
158
|
+
/** As written: `@nifrajs/cli@3.1.0`. */
|
|
159
|
+
readonly pin: string;
|
|
160
|
+
/** A lockfile other than the workspace's own: regenerate it. Listed once, with its other stale pins
|
|
161
|
+
* counted in `more`. */
|
|
162
|
+
readonly lockfile: boolean;
|
|
163
|
+
readonly more: number;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Fixed-group versions other than `version` pinned where `nifra upgrade` does not edit: MCP configs,
|
|
167
|
+
* container files, CI workflows, and lockfiles besides the workspace's own (which install rewrites).
|
|
168
|
+
*/
|
|
169
|
+
export declare function strayPins(cwd: string, version: string): StrayPin[];
|
|
170
|
+
/** An installed fixed-group package, followed to its real location. */
|
|
171
|
+
export interface LinkedGroupInstall {
|
|
172
|
+
readonly package: string;
|
|
173
|
+
readonly path: string;
|
|
174
|
+
readonly version: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Every fixed-group package installed in `cwd/node_modules`, realpath-resolved so a linked repository
|
|
178
|
+
* reports its own version. `inside` is false for one that resolves outside the workspace root.
|
|
179
|
+
*/
|
|
180
|
+
export declare function installedGroupPackages(cwd: string): readonly (LinkedGroupInstall & {
|
|
181
|
+
readonly inside: boolean;
|
|
182
|
+
})[];
|
|
122
183
|
/**
|
|
123
184
|
* The lowest fixed-group version any package.json under `cwd` declares with a plain semver spec, or
|
|
124
185
|
* null when none does. Recipes newer than it still have edits to make somewhere in the workspace.
|
|
@@ -137,6 +198,14 @@ export interface ChainedRecipe extends UpgradeRecipe {
|
|
|
137
198
|
export declare function chainRecipes(target: string, installed: string | null): ChainedRecipe;
|
|
138
199
|
/** Compute the plan (and, when `write`, apply it) for a target recipe against `cwd`. */
|
|
139
200
|
export declare function computeUpgrade(cwd: string, recipe: UpgradeRecipe, write: boolean, allowDowngrade?: boolean, exact?: boolean): UpgradePlan;
|
|
201
|
+
/** The hook report around `--write`: the diff and where the pre-upgrade report was saved, or why not. */
|
|
202
|
+
export type UpgradeHookScope = {
|
|
203
|
+
readonly saved: string;
|
|
204
|
+
readonly changes: readonly HookReportChange[];
|
|
205
|
+
} | {
|
|
206
|
+
readonly error: string;
|
|
207
|
+
readonly saved?: string;
|
|
208
|
+
};
|
|
140
209
|
/** The targets this CLI applies: each release recipe up to its own version, and that version. */
|
|
141
210
|
export declare function upgradeTargets(cliVersion: string): string[];
|
|
142
211
|
/** CLI entry. Returns false (→ non-zero exit) on an unknown version, no project, or a failed verify. */
|
package/dist/upgrade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../src/upgrade.ts"],"names":[],"mappings":"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"}
|