@typed-sql/cli 1.0.0-rc.0 → 2.0.0-rc.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # @typed-sql/cli
2
2
 
3
+ ## 2.0.0-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [9c72dab]
8
+ - @typed-sql/compiler@2.0.0-rc.1
9
+
10
+ ## 2.0.0-rc.0
11
+
12
+ ### Major Changes
13
+
14
+ - 3f063f6: Add deterministic, secret-free query manifests with bounded structural variants, inferred result
15
+ and parameter descriptions, semantic evidence, runtime-correlatable fingerprints, unresolved
16
+ entries, compatible parsing, canonical serialization, incremental per-file reuse, tsconfig project
17
+ discovery, and a dedicated CLI command.
18
+ - 6a7ae58: Add opt-in live query verification through grammar-owned PostgreSQL PREPARE and MySQL
19
+ COM_STMT_PREPARE adapters, bounded neutral comparison, deterministic secret-free proof artifacts,
20
+ offline cache validation, explicit unsupported classifications, CLI workflows, real database E2E,
21
+ and performance budgets.
22
+ - b4f1b6e: Add deterministic migration compatibility analysis across before/after schema snapshots and query
23
+ manifests. Reports classify both rolling-deployment directions, retain exact source and dependency
24
+ evidence, fail closed for unknown semantics, redact defaults and paths, and support configurable CI
25
+ severity through `typed-sql compat`.
26
+ - b2ec119: Add opt-in, grammar-neutral query-plan governance with PostgreSQL and MySQL structured EXPLAIN
27
+ adapters, transient application-owned samples, redacted fingerprint-keyed artifacts, absolute and
28
+ comparable regression budgets, explicit uncertainty, CLI capture and review, documentation, and
29
+ performance coverage.
30
+
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies [29afc3d]
34
+ - Updated dependencies [3f063f6]
35
+ - Updated dependencies [6a7ae58]
36
+ - Updated dependencies [b06fd0a]
37
+ - Updated dependencies [3050209]
38
+ - Updated dependencies [1b054b6]
39
+ - Updated dependencies [b4f1b6e]
40
+ - Updated dependencies [87189c3]
41
+ - Updated dependencies [e654fae]
42
+ - Updated dependencies [b2ec119]
43
+ - @typed-sql/core@2.0.0-rc.0
44
+ - @typed-sql/compiler@2.0.0-rc.0
45
+ - @typed-sql/schema@2.0.0-rc.0
46
+ - @typed-sql/config@2.0.0-rc.0
47
+
48
+ ## 1.0.0
49
+
50
+ ### Major Changes
51
+
52
+ - 7ca256b: Release the first public typed-sql beta: exact TypeScript 7 row inference from static PostgreSQL and
53
+ MySQL, versioned schema introspection, application-owned drivers, config-driven grammar plugins,
54
+ CLI verification, editor language-server integration, versioned diagnostics, bounded parsing, and
55
+ real-database plus packed-tarball verification.
56
+
57
+ ### Patch Changes
58
+
59
+ - 1563a7a: Declare and enforce the 1.0 package stability boundary. Core SQL, compiler, schema, config, AST,
60
+ PostgreSQL, MySQL, and CLI packages form the stable train; the TypeScript preview bridge and
61
+ language server remain explicitly experimental. Freeze public entrypoints and query type contracts,
62
+ and remove internal compiler/type helpers from stable package-root exports before 1.0.
63
+ - 16e2475: Prove npm trusted publishing and provenance after the initial registry bootstrap.
64
+ - 90bae18: Show help and version information without requiring a project configuration, and reject unknown commands before config discovery.
65
+ - 69c7d87: Report `TSQ004` for bare nested templates used as conditional SQL structure and offer an alias-aware
66
+ language-server quick fix that prefixes the template with `sql.fragment`. Ordinary and nested
67
+ values remain parameterized across the edit.
68
+ - Updated dependencies [eb16de7]
69
+ - Updated dependencies [b6389e4]
70
+ - Updated dependencies [eb16de7]
71
+ - Updated dependencies [b6389e4]
72
+ - Updated dependencies [eb16de7]
73
+ - Updated dependencies [1563a7a]
74
+ - Updated dependencies [9dd6bc4]
75
+ - Updated dependencies [7ca256b]
76
+ - Updated dependencies [16e2475]
77
+ - Updated dependencies [bd26d6e]
78
+ - Updated dependencies [69c7d87]
79
+ - Updated dependencies [3e2c75c]
80
+ - @typed-sql/core@1.0.0
81
+ - @typed-sql/schema@1.0.0
82
+ - @typed-sql/config@1.0.0
83
+ - @typed-sql/compiler@1.0.0
84
+
3
85
  ## 1.0.0-rc.0
4
86
 
5
87
  ### Patch Changes
package/README.md CHANGED
@@ -1,37 +1,41 @@
1
1
  # @typed-sql/cli
2
2
 
3
- The config-driven command line interface for [typed-sql](https://github.com/Lojhan/typed-sql).
4
- It generates deterministic database snapshots, verifies inferred queries through TypeScript 7, and
5
- detects live schema drift.
3
+ The stable, config-driven command line interface for
4
+ [typed-sql](https://github.com/Lojhan/typed-sql). It generates deterministic database snapshots,
5
+ checks inferred queries through TypeScript, detects schema drift, emits deterministic query manifests,
6
+ verifies compiler evidence through optional native database metadata, captures redacted structured
7
+ query plans, reviews explicit plan budgets, and analyzes migrations against compiled query contracts.
6
8
 
7
9
  ```sh
8
- pnpm add -D @typed-sql/cli@next typescript@7.0.2
10
+ pnpm add -D @typed-sql/cli typescript@7.0.2
9
11
  ```
10
12
 
11
- Install one dialect and its application-owned driver, then create `typed-sql.config.ts` as shown in
12
- the [root guide](https://github.com/Lojhan/typed-sql#configure-the-database-contract).
13
+ Install a grammar and its application-owned driver, then create `typed-sql.config.ts`.
13
14
 
14
15
  ```sh
15
- pnpm exec typed-sql --help
16
- pnpm exec typed-sql --version
17
- ```
18
-
19
- ```sh
20
- # Introspect the configured database and write schema metadata.
21
16
  pnpm exec typed-sql generate
22
-
23
- # Compile SQL inference into an isolated overlay and ask TypeScript 7 to check it.
24
17
  pnpm exec typed-sql check --file src/query.ts --project tsconfig.json
25
-
26
- # Compare the committed snapshot with the current live catalog and type policy.
27
18
  pnpm exec typed-sql drift
19
+ pnpm exec typed-sql manifest
20
+ pnpm exec typed-sql verify --live
21
+ pnpm exec typed-sql verify
22
+ pnpm exec typed-sql explain --compare artifacts/plans.json
23
+ pnpm exec typed-sql compat --before before.schema.json --after after.schema.json --before-manifest before.queries.json --after-manifest after.queries.json
28
24
  ```
29
25
 
30
- Use `--config path/to/typed-sql.config.ts` when discovery is not appropriate. `generate` also accepts
31
- `--out`; `check` accepts `--file` and `--project`.
32
-
33
- The CLI contains no PostgreSQL, MySQL, `pg`, or `mysql2` dependency. It loads the installed dialect
34
- and schema provider through the project config. Diagnostics use the versioned
35
- [`TSQ` registry](https://github.com/Lojhan/typed-sql/tree/main/packages/core#diagnostics).
26
+ Use `--config path/to/typed-sql.config.ts` to bypass config discovery. Run
27
+ `pnpm exec typed-sql --help` for command options.
28
+
29
+ The CLI contains no PostgreSQL, MySQL, `pg`, or `mysql2` dependency. It loads the installed grammar
30
+ and schema provider through the application config. Read
31
+ [Configuration](https://github.com/Lojhan/typed-sql/blob/main/docs/getting-started/configuration.md) and
32
+ [Schema snapshots](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/schema-snapshots.md), and
33
+ [Query manifests](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/query-manifests.md).
34
+ [Live verification](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/live-verification.md) documents
35
+ native safety, cached proofs, and CI behavior.
36
+ [Query plan governance](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/query-plan-governance.md)
37
+ documents structured evidence, transient parameter samples, budgets, and optimizer uncertainty.
38
+ [Migration compatibility](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/migration-compatibility.md)
39
+ documents deterministic reports, rolling deployments, and migration-runner integration.
36
40
 
37
41
  MIT © typed-sql contributors
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { readFile } from "node:fs/promises";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { dirname, join, parse, resolve } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { checkFile } from "@typed-sql/compiler";
5
+ import { analyzeSchemaCompatibility, assertQueryVerificationProofCurrent, buildQueryManifest, captureQueryPlans, checkFile, collectQueryVerificationCandidates, listProjectSourceFiles, parseQueryManifest, parseQueryPlanArtifact, parseQueryVerificationProof, reviewQueryPlans, serializeQueryManifest, serializeQueryPlanArtifact, serializeQueryPlanReviewReport, serializeQueryVerificationProof, serializeSchemaCompatibilityReport, verifyQueryManifest, } from "@typed-sql/compiler";
6
6
  import { fromConfig, loadConfig } from "@typed-sql/config";
7
- import { checkSchemaDrift, generateSchemaPackage, loadGeneratedSchemaSnapshot } from "@typed-sql/schema";
8
- const commands = new Set(["check", "generate", "drift"]);
7
+ import { checkSchemaDrift, generateSchemaPackage, loadGeneratedSchemaSnapshot, parseSchemaSnapshot, } from "@typed-sql/schema";
8
+ const commands = new Set(["check", "compat", "explain", "generate", "drift", "manifest", "verify"]);
9
9
  async function packageVersion() {
10
10
  let directory = dirname(fileURLToPath(import.meta.url));
11
11
  const root = parse(directory).root;
@@ -31,8 +31,12 @@ Usage:
31
31
 
32
32
  Commands:
33
33
  check Infer SQL result types and verify them with TypeScript 7
34
+ compat Analyze rolling-deployment compatibility from two snapshots and manifests
35
+ explain Capture and review structured database query plans
34
36
  generate Introspect or load a schema snapshot and generate the typed contract
35
37
  drift Compare the generated contract with the live database catalog
38
+ manifest Emit a deterministic manifest for every project query
39
+ verify Verify a manifest from cached proof or native live metadata
36
40
 
37
41
  Global options:
38
42
  -h, --help Show this help
@@ -40,8 +44,13 @@ Global options:
40
44
 
41
45
  Examples:
42
46
  typed-sql check --config typed-sql.config.ts --file src/query.ts --project tsconfig.json
47
+ typed-sql compat --before schema.before.json --after schema.after.json --before-manifest old.json --after-manifest new.json
48
+ typed-sql explain --manifest .typed-sql/queries.json --out .typed-sql/plans.json
49
+ typed-sql explain --compare .typed-sql/plans.json
43
50
  typed-sql generate --config typed-sql.config.ts --out generated/db
44
51
  typed-sql drift --config typed-sql.config.ts
52
+ typed-sql manifest --config typed-sql.config.ts --project tsconfig.json --out .typed-sql/queries.json
53
+ typed-sql verify --config typed-sql.config.ts --live --manifest .typed-sql/queries.json
45
54
  `;
46
55
  }
47
56
  function parseArguments(args) {
@@ -51,6 +60,10 @@ function parseArguments(args) {
51
60
  const argument = args[index];
52
61
  if (!argument.startsWith("--"))
53
62
  throw new Error(`Unexpected argument ${argument}`);
63
+ if (argument === "--live") {
64
+ options.live = "true";
65
+ continue;
66
+ }
54
67
  const equals = argument.indexOf("=");
55
68
  if (equals !== -1)
56
69
  options[argument.slice(2, equals)] = argument.slice(equals + 1);
@@ -73,6 +86,59 @@ function required(options, name) {
73
86
  async function readSnapshot(path, validate) {
74
87
  return validate(JSON.parse(await readFile(path, "utf8")));
75
88
  }
89
+ async function readPreviousManifest(path) {
90
+ try {
91
+ return parseQueryManifest(JSON.parse(await readFile(path, "utf8")));
92
+ }
93
+ catch (error) {
94
+ if (error instanceof Error && "code" in error && error.code === "ENOENT")
95
+ return undefined;
96
+ throw error;
97
+ }
98
+ }
99
+ async function projectSources(directory, configured, projectOption) {
100
+ const projects = projectOption === undefined
101
+ ? (configured ?? ["tsconfig.json"]).map((project) => fromConfig(directory, project))
102
+ : [resolve(projectOption)];
103
+ if (projects.length === 0)
104
+ throw new Error("typed-sql requires at least one TypeScript project");
105
+ const sourceFiles = [
106
+ ...new Set((await Promise.all(projects.map((project) => listProjectSourceFiles({ project, cwd: directory })))).flat()),
107
+ ].sort();
108
+ const sources = await Promise.all(sourceFiles.map(async (file) => ({ file, source: await readFile(file, "utf8") })));
109
+ return { projects, sources };
110
+ }
111
+ function reportVerification(entries) {
112
+ for (const entry of entries) {
113
+ if (entry.status === "verified")
114
+ continue;
115
+ process.stderr.write(`${entry.source.file}:${entry.source.range.line}:${entry.source.range.column} - ${entry.code ?? "TSQ502"}: ${entry.status}\n`);
116
+ for (const mismatch of entry.mismatches ?? []) {
117
+ const position = mismatch.index === undefined ? mismatch.target : `${mismatch.target} ${mismatch.index}`;
118
+ process.stderr.write(` ${position} ${mismatch.kind}: compiler=${mismatch.expected}, database=${mismatch.actual}\n`);
119
+ }
120
+ }
121
+ }
122
+ function reportCompatibility(assessments) {
123
+ for (const assessment of assessments) {
124
+ const locations = assessment.queries.length === 0
125
+ ? "schema-wide"
126
+ : assessment.queries
127
+ .map((query) => `${query.source.file}:${query.source.range.line}:${query.source.range.column}`)
128
+ .join(", ");
129
+ process.stderr.write(`${assessment.severity} ${assessment.direction} ${assessment.classification} (${locations}): ${assessment.reason}\n`);
130
+ }
131
+ }
132
+ function reportPlans(entries) {
133
+ for (const entry of entries) {
134
+ if (entry.status === "pass" || entry.status === "unbudgeted")
135
+ continue;
136
+ process.stderr.write(`${entry.source.file}:${entry.source.range.line}:${entry.source.range.column} - plan ${entry.status}${entry.reasons.length === 0 ? "" : ` (${entry.reasons.join(", ")})`}\n`);
137
+ for (const violation of entry.violations) {
138
+ process.stderr.write(` ${violation.kind}: expected ${violation.expected}, actual ${violation.actual}\n`);
139
+ }
140
+ }
141
+ }
76
142
  async function main() {
77
143
  const args = process.argv.slice(2);
78
144
  const version = await packageVersion();
@@ -93,6 +159,36 @@ async function main() {
93
159
  const dialect = config.dialect;
94
160
  const policy = config.typePolicy ?? dialect.defaultTypePolicy;
95
161
  const schemaFile = fromConfig(loaded.directory, parsed.options.schema ?? config.schema.file);
162
+ if (parsed.command === "compat") {
163
+ const beforeFile = fromConfig(loaded.directory, required(parsed.options, "before"));
164
+ const afterFile = fromConfig(loaded.directory, required(parsed.options, "after"));
165
+ const beforeManifestFile = fromConfig(loaded.directory, required(parsed.options, "before-manifest"));
166
+ const afterManifestFile = fromConfig(loaded.directory, required(parsed.options, "after-manifest"));
167
+ const outFile = fromConfig(loaded.directory, parsed.options.out ?? config.compatibility?.reportFile ?? ".typed-sql/compatibility.json");
168
+ const failOn = parsed.options["fail-on"] ?? config.compatibility?.failOn ?? "error";
169
+ if (!(failOn === "none" || failOn === "warning" || failOn === "error")) {
170
+ throw new Error("--fail-on must be none, warning, or error");
171
+ }
172
+ const [before, after, beforeManifest, afterManifest] = await Promise.all([
173
+ readSnapshot(beforeFile, parseSchemaSnapshot),
174
+ readSnapshot(afterFile, parseSchemaSnapshot),
175
+ readFile(beforeManifestFile, "utf8").then((source) => parseQueryManifest(JSON.parse(source))),
176
+ readFile(afterManifestFile, "utf8").then((source) => parseQueryManifest(JSON.parse(source))),
177
+ ]);
178
+ if (before.dialect !== dialect.id || after.dialect !== dialect.id) {
179
+ throw new TypeError(`Compatibility snapshots must use configured dialect ${dialect.id}`);
180
+ }
181
+ const report = analyzeSchemaCompatibility({ before, after, beforeManifest, afterManifest });
182
+ await mkdir(dirname(outFile), { recursive: true });
183
+ await writeFile(outFile, serializeSchemaCompatibilityReport(report), "utf8");
184
+ reportCompatibility(report.assessments);
185
+ process.stdout.write(`Compatibility: ${report.summary.error} errors, ${report.summary.warning} warnings, ${report.summary.info} informational assessments at ${outFile}\n`);
186
+ if ((failOn === "error" && report.summary.error > 0) ||
187
+ (failOn === "warning" && (report.summary.error > 0 || report.summary.warning > 0))) {
188
+ process.exitCode = 1;
189
+ }
190
+ return;
191
+ }
96
192
  if (parsed.command === "check") {
97
193
  const file = resolve(required(parsed.options, "file"));
98
194
  const result = await checkFile({
@@ -129,6 +225,152 @@ async function main() {
129
225
  process.stdout.write(`Generated schema ${metadata.schemaHash}\n`);
130
226
  return;
131
227
  }
228
+ if (parsed.command === "manifest") {
229
+ const schema = await readSnapshot(schemaFile, (value) => dialect.validateSnapshot(value));
230
+ const { projects, sources } = await projectSources(loaded.directory, config.projects, parsed.options.project);
231
+ const outFile = fromConfig(loaded.directory, parsed.options.out ?? config.manifest?.outFile ?? ".typed-sql/queries.json");
232
+ const previous = await readPreviousManifest(outFile);
233
+ const result = buildQueryManifest({
234
+ rootDir: loaded.directory,
235
+ sources,
236
+ projects,
237
+ dialect,
238
+ schema,
239
+ typePolicy: policy,
240
+ compilerVersion: version,
241
+ ...(previous === undefined ? {} : { previous }),
242
+ ...(config.compiler?.maxStructuralVariants === undefined
243
+ ? {}
244
+ : { maxStructuralVariants: config.compiler.maxStructuralVariants }),
245
+ });
246
+ await mkdir(dirname(outFile), { recursive: true });
247
+ await writeFile(outFile, serializeQueryManifest(result.manifest), "utf8");
248
+ process.stdout.write(`Generated ${result.manifest.queries.length} queries (${result.stats.unresolvedQueries} unresolved, ${result.stats.reusedFiles} files reused) at ${outFile}\n`);
249
+ if (result.stats.unresolvedQueries > 0)
250
+ process.exitCode = 2;
251
+ return;
252
+ }
253
+ if (parsed.command === "verify") {
254
+ if (parsed.options.live !== undefined && parsed.options.live !== "true") {
255
+ throw new Error("--live does not accept a value");
256
+ }
257
+ const manifestFile = fromConfig(loaded.directory, parsed.options.manifest ?? config.manifest?.outFile ?? ".typed-sql/queries.json");
258
+ const proofFile = fromConfig(loaded.directory, parsed.options.proof ?? config.verification?.proofFile ?? ".typed-sql/verification.json");
259
+ const manifest = parseQueryManifest(JSON.parse(await readFile(manifestFile, "utf8")));
260
+ if (parsed.options.live === "true") {
261
+ const verifier = config.verification?.live;
262
+ if (verifier === undefined)
263
+ throw new Error("typed-sql verify --live requires verification.live in typed-sql.config.ts");
264
+ const schema = await readSnapshot(schemaFile, (value) => dialect.validateSnapshot(value));
265
+ const { projects, sources } = await projectSources(loaded.directory, config.projects, parsed.options.project);
266
+ const candidates = collectQueryVerificationCandidates({
267
+ manifest,
268
+ rootDir: loaded.directory,
269
+ sources,
270
+ projects,
271
+ dialect,
272
+ schema,
273
+ typePolicy: policy,
274
+ ...(config.compiler?.maxStructuralVariants === undefined
275
+ ? {}
276
+ : { maxStructuralVariants: config.compiler.maxStructuralVariants }),
277
+ });
278
+ try {
279
+ const result = await verifyQueryManifest({
280
+ manifest,
281
+ candidates,
282
+ verifier,
283
+ ...(config.verification?.concurrency === undefined ? {} : { concurrency: config.verification.concurrency }),
284
+ });
285
+ await mkdir(dirname(proofFile), { recursive: true });
286
+ await writeFile(proofFile, serializeQueryVerificationProof(result.proof), "utf8");
287
+ reportVerification(result.proof.entries);
288
+ process.stdout.write(`Verified ${result.verified} variants (${result.mismatched} mismatched, ${result.skipped} skipped, ${result.failed} failed) at ${proofFile}\n`);
289
+ if (result.mismatched > 0 || result.failed > 0)
290
+ process.exitCode = 1;
291
+ else if (result.skipped > 0)
292
+ process.exitCode = 2;
293
+ }
294
+ finally {
295
+ await verifier.close();
296
+ }
297
+ }
298
+ else {
299
+ const proof = parseQueryVerificationProof(JSON.parse(await readFile(proofFile, "utf8")));
300
+ assertQueryVerificationProofCurrent(manifest, proof, config.verification?.live);
301
+ reportVerification(proof.entries);
302
+ const mismatched = proof.entries.filter((entry) => entry.status === "mismatch").length;
303
+ const skipped = proof.entries.filter((entry) => entry.status === "skipped").length;
304
+ const failed = proof.entries.filter((entry) => entry.status === "error").length;
305
+ process.stdout.write(`Cached verification is current (${proof.entries.length} entries)\n`);
306
+ if (mismatched > 0 || failed > 0)
307
+ process.exitCode = 1;
308
+ else if (skipped > 0)
309
+ process.exitCode = 2;
310
+ }
311
+ return;
312
+ }
313
+ if (parsed.command === "explain") {
314
+ const inspector = config.plans?.live;
315
+ if (inspector === undefined) {
316
+ throw new Error("typed-sql explain requires plans.live in typed-sql.config.ts");
317
+ }
318
+ const failOn = parsed.options["fail-on"] ?? config.plans?.failOn ?? "violation";
319
+ if (!(failOn === "none" || failOn === "violation" || failOn === "uncertainty")) {
320
+ throw new Error("--fail-on must be none, violation, or uncertainty");
321
+ }
322
+ const manifestFile = fromConfig(loaded.directory, parsed.options.manifest ?? config.manifest?.outFile ?? ".typed-sql/queries.json");
323
+ const artifactFile = fromConfig(loaded.directory, parsed.options.out ?? config.plans?.artifactFile ?? ".typed-sql/plans.json");
324
+ const reportFile = fromConfig(loaded.directory, parsed.options.report ?? config.plans?.reportFile ?? ".typed-sql/plan-review.json");
325
+ const compareOption = parsed.options.compare ?? config.plans?.baselineFile;
326
+ const baseline = compareOption === undefined
327
+ ? undefined
328
+ : parseQueryPlanArtifact(JSON.parse(await readFile(fromConfig(loaded.directory, compareOption), "utf8")));
329
+ const manifest = parseQueryManifest(JSON.parse(await readFile(manifestFile, "utf8")));
330
+ const schema = await readSnapshot(schemaFile, (value) => dialect.validateSnapshot(value));
331
+ const { projects, sources } = await projectSources(loaded.directory, config.projects, parsed.options.project);
332
+ const candidates = collectQueryVerificationCandidates({
333
+ manifest,
334
+ rootDir: loaded.directory,
335
+ sources,
336
+ projects,
337
+ dialect,
338
+ schema,
339
+ typePolicy: policy,
340
+ ...(config.compiler?.maxStructuralVariants === undefined
341
+ ? {}
342
+ : { maxStructuralVariants: config.compiler.maxStructuralVariants }),
343
+ });
344
+ try {
345
+ const result = await captureQueryPlans({
346
+ manifest,
347
+ candidates,
348
+ inspector,
349
+ ...(config.plans?.sampleValues === undefined ? {} : { sampleValues: config.plans.sampleValues }),
350
+ ...(config.plans?.concurrency === undefined ? {} : { concurrency: config.plans.concurrency }),
351
+ });
352
+ const report = reviewQueryPlans({
353
+ current: result.artifact,
354
+ ...(baseline === undefined ? {} : { baseline }),
355
+ ...(config.plans?.budgets === undefined ? {} : { budgets: config.plans.budgets }),
356
+ });
357
+ await Promise.all([
358
+ mkdir(dirname(artifactFile), { recursive: true }).then(() => writeFile(artifactFile, serializeQueryPlanArtifact(result.artifact), "utf8")),
359
+ mkdir(dirname(reportFile), { recursive: true }).then(() => writeFile(reportFile, serializeQueryPlanReviewReport(report), "utf8")),
360
+ ]);
361
+ reportPlans(report.entries);
362
+ process.stdout.write(`Captured ${result.captured} plans (${result.skipped} skipped, ${result.failed} failed); review: ${report.summary.violation} violations, ${report.summary.incomparable} incomparable, ${report.summary.unavailable} unavailable at ${reportFile}\n`);
363
+ const uncertainty = report.summary.incomparable + report.summary.unavailable;
364
+ if (failOn === "violation" && report.summary.violation > 0)
365
+ process.exitCode = 1;
366
+ else if (failOn === "uncertainty" && (report.summary.violation > 0 || uncertainty > 0))
367
+ process.exitCode = 1;
368
+ }
369
+ finally {
370
+ await inspector.close();
371
+ }
372
+ return;
373
+ }
132
374
  if (parsed.command === "drift") {
133
375
  if (config.schema.provider === undefined)
134
376
  throw new Error("typed-sql drift requires schema.provider in typed-sql.config.ts");
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@typed-sql/cli",
3
- "version": "1.0.0-rc.0",
4
- "description": "Config-driven typed-sql generation, checking, and schema drift CLI.",
3
+ "version": "2.0.0-rc.1",
4
+ "description": "Config-driven typed-sql generation, checking, verification, and migration compatibility CLI.",
5
5
  "license": "MIT",
6
6
  "author": "Lojhan",
7
7
  "repository": {
@@ -35,10 +35,10 @@
35
35
  "typed-sql": "./dist/packages/cli/src/cli.js"
36
36
  },
37
37
  "dependencies": {
38
- "@typed-sql/compiler": "1.0.0-rc.0",
39
- "@typed-sql/config": "1.0.0-rc.0",
40
- "@typed-sql/core": "1.0.0-rc.0",
41
- "@typed-sql/schema": "1.0.0-rc.0"
38
+ "@typed-sql/compiler": "2.0.0-rc.1",
39
+ "@typed-sql/config": "2.0.0-rc.1",
40
+ "@typed-sql/schema": "2.0.0-rc.1",
41
+ "@typed-sql/core": "2.0.0-rc.1"
42
42
  },
43
43
  "scripts": {
44
44
  "test": "poku test --reporter=compact --enforce",