@typed-sql/compiler 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 +91 -0
- package/README.md +36 -38
- package/dist/packages/compiler/src/compatibility.d.ts +66 -0
- package/dist/packages/compiler/src/compatibility.d.ts.map +1 -0
- package/dist/packages/compiler/src/compatibility.js +786 -0
- package/dist/packages/compiler/src/compatibility.js.map +1 -0
- package/dist/packages/compiler/src/compiler.d.ts +16 -1
- package/dist/packages/compiler/src/compiler.d.ts.map +1 -1
- package/dist/packages/compiler/src/compiler.js +67 -4
- package/dist/packages/compiler/src/compiler.js.map +1 -1
- package/dist/packages/compiler/src/index.d.ts +13 -3
- package/dist/packages/compiler/src/index.d.ts.map +1 -1
- package/dist/packages/compiler/src/index.js +6 -1
- package/dist/packages/compiler/src/index.js.map +1 -1
- package/dist/packages/compiler/src/manifest.d.ts +505 -0
- package/dist/packages/compiler/src/manifest.d.ts.map +1 -0
- package/dist/packages/compiler/src/manifest.js +628 -0
- package/dist/packages/compiler/src/manifest.js.map +1 -0
- package/dist/packages/compiler/src/plans.d.ts +88 -0
- package/dist/packages/compiler/src/plans.d.ts.map +1 -0
- package/dist/packages/compiler/src/plans.js +459 -0
- package/dist/packages/compiler/src/plans.js.map +1 -0
- package/dist/packages/compiler/src/project.d.ts +8 -0
- package/dist/packages/compiler/src/project.d.ts.map +1 -0
- package/dist/packages/compiler/src/project.js +62 -0
- package/dist/packages/compiler/src/project.js.map +1 -0
- package/dist/packages/compiler/src/scanner.d.ts +6 -0
- package/dist/packages/compiler/src/scanner.d.ts.map +1 -1
- package/dist/packages/compiler/src/scanner.js +46 -0
- package/dist/packages/compiler/src/scanner.js.map +1 -1
- package/dist/packages/compiler/src/verification.d.ts +106 -0
- package/dist/packages/compiler/src/verification.d.ts.map +1 -0
- package/dist/packages/compiler/src/verification.js +516 -0
- package/dist/packages/compiler/src/verification.js.map +1 -0
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,96 @@
|
|
|
1
1
|
# @typed-sql/compiler
|
|
2
2
|
|
|
3
|
+
## 2.0.0-rc.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9c72dab: Use live MySQL catalog origins to preserve enum result evidence, and compare parameter metadata in
|
|
8
|
+
the safe input direction so compiler-enforced literal subsets do not become false mismatches.
|
|
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
|
+
- 3050209: Add the dialect contract v4 semantic query evidence foundation. PostgreSQL and MySQL now report operation, dependencies, cardinality, volatility, locking, connection affinity, and required capabilities; compiler results add deterministic query and structural-variant fingerprints and conservatively merged source-mapped semantics. Schema snapshots can record function volatility, and the AST package exposes a neutral statement walker for grammar implementations.
|
|
23
|
+
- b4f1b6e: Add deterministic migration compatibility analysis across before/after schema snapshots and query
|
|
24
|
+
manifests. Reports classify both rolling-deployment directions, retain exact source and dependency
|
|
25
|
+
evidence, fail closed for unknown semantics, redact defaults and paths, and support configurable CI
|
|
26
|
+
severity through `typed-sql compat`.
|
|
27
|
+
- b2ec119: Add opt-in, grammar-neutral query-plan governance with PostgreSQL and MySQL structured EXPLAIN
|
|
28
|
+
adapters, transient application-owned samples, redacted fingerprint-keyed artifacts, absolute and
|
|
29
|
+
comparable regression budgets, explicit uncertainty, CLI capture and review, documentation, and
|
|
30
|
+
performance coverage.
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies [29afc3d]
|
|
35
|
+
- Updated dependencies [3f063f6]
|
|
36
|
+
- Updated dependencies [6a7ae58]
|
|
37
|
+
- Updated dependencies [b06fd0a]
|
|
38
|
+
- Updated dependencies [3050209]
|
|
39
|
+
- Updated dependencies [1b054b6]
|
|
40
|
+
- Updated dependencies [b4f1b6e]
|
|
41
|
+
- Updated dependencies [87189c3]
|
|
42
|
+
- Updated dependencies [e654fae]
|
|
43
|
+
- Updated dependencies [b2ec119]
|
|
44
|
+
- @typed-sql/core@2.0.0-rc.0
|
|
45
|
+
- @typed-sql/schema@2.0.0-rc.0
|
|
46
|
+
|
|
47
|
+
## 1.0.0
|
|
48
|
+
|
|
49
|
+
### Major Changes
|
|
50
|
+
|
|
51
|
+
- 7ca256b: Release the first public typed-sql beta: exact TypeScript 7 row inference from static PostgreSQL and
|
|
52
|
+
MySQL, versioned schema introspection, application-owned drivers, config-driven grammar plugins,
|
|
53
|
+
CLI verification, editor language-server integration, versioned diagnostics, bounded parsing, and
|
|
54
|
+
real-database plus packed-tarball verification.
|
|
55
|
+
|
|
56
|
+
### Patch Changes
|
|
57
|
+
|
|
58
|
+
- 1563a7a: Declare and enforce the 1.0 package stability boundary. Core SQL, compiler, schema, config, AST,
|
|
59
|
+
PostgreSQL, MySQL, and CLI packages form the stable train; the TypeScript preview bridge and
|
|
60
|
+
language server remain explicitly experimental. Freeze public entrypoints and query type contracts,
|
|
61
|
+
and remove internal compiler/type helpers from stable package-root exports before 1.0.
|
|
62
|
+
- 16e2475: Prove npm trusted publishing and provenance after the initial registry bootstrap.
|
|
63
|
+
- bd26d6e: Replace potentially expensive parser regular expressions with bounded scanners, tighten editor
|
|
64
|
+
completion matching, and prevent releases while high-severity CodeQL alerts remain open.
|
|
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
|
+
- 3e2c75c: Infer ordered query parameter tuples and let TypeScript reject interpolation values that do not
|
|
69
|
+
match their SQL context. Dialect contract version 2 adds explicit parameter analysis; unresolved
|
|
70
|
+
positions remain `unknown`. Add typed nullable predicate composition through `sql.fragment()`,
|
|
71
|
+
`sql.and()`, `sql.or()`, `sql.where()`, and `sql.append()` while preserving row and parameter tuples.
|
|
72
|
+
Direct append fragments are grammar-analyzed cumulatively against their static base, so TypeScript
|
|
73
|
+
rejects fragment interpolation values that disagree with the referenced database columns.
|
|
74
|
+
Add `sql.empty` and SQL-template-native conditional structural fragments. The compiler analyzes
|
|
75
|
+
complete branch variants, preserves literal boolean-dependent result rows, and type-checks nested
|
|
76
|
+
fragment parameters without adding a query-builder DSL. Bound independent structural expansion at
|
|
77
|
+
64 variants by default, correlate repeated conditions, merge diagnostics and fragment expectations
|
|
78
|
+
across variants, and fail closed on incompatible contexts. Share indexed catalog and conservative
|
|
79
|
+
parameter-resolution primitives across grammars, harden cooked-template scanning, and add runtime,
|
|
80
|
+
resolver, scanner, and structural performance gates.
|
|
81
|
+
- Updated dependencies [eb16de7]
|
|
82
|
+
- Updated dependencies [b6389e4]
|
|
83
|
+
- Updated dependencies [eb16de7]
|
|
84
|
+
- Updated dependencies [b6389e4]
|
|
85
|
+
- Updated dependencies [eb16de7]
|
|
86
|
+
- Updated dependencies [1563a7a]
|
|
87
|
+
- Updated dependencies [9dd6bc4]
|
|
88
|
+
- Updated dependencies [7ca256b]
|
|
89
|
+
- Updated dependencies [16e2475]
|
|
90
|
+
- Updated dependencies [69c7d87]
|
|
91
|
+
- Updated dependencies [3e2c75c]
|
|
92
|
+
- @typed-sql/core@1.0.0
|
|
93
|
+
|
|
3
94
|
## 1.0.0-rc.0
|
|
4
95
|
|
|
5
96
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
# @typed-sql/compiler
|
|
2
2
|
|
|
3
|
-
The
|
|
4
|
-
It finds static SQL templates, asks the configured
|
|
5
|
-
an in-memory TypeScript
|
|
3
|
+
The stable, grammar-neutral TypeScript source compiler behind
|
|
4
|
+
[typed-sql](https://github.com/Lojhan/typed-sql). It finds static SQL templates, asks the configured
|
|
5
|
+
grammar for row and parameter shapes, creates an in-memory TypeScript overlay, preserves source
|
|
6
|
+
mappings, emits deterministic query manifests, and compares them with grammar-owned native database
|
|
7
|
+
evidence for CI and production correlation. It also compares before/after snapshots and manifests to
|
|
8
|
+
find query-level migration breaks in both rolling-deployment directions, and captures fingerprint-keyed
|
|
9
|
+
structured plans for explicit regression review.
|
|
6
10
|
|
|
7
11
|
```sh
|
|
8
|
-
pnpm add @typed-sql/compiler
|
|
12
|
+
pnpm add @typed-sql/compiler
|
|
9
13
|
```
|
|
10
14
|
|
|
11
15
|
```ts
|
|
12
|
-
import {
|
|
16
|
+
import { compileSource } from "@typed-sql/compiler";
|
|
13
17
|
import { postgres } from "@typed-sql/postgres";
|
|
14
18
|
|
|
15
19
|
const result = compileSource({
|
|
@@ -19,38 +23,32 @@ const result = compileSource({
|
|
|
19
23
|
});
|
|
20
24
|
```
|
|
21
25
|
|
|
22
|
-
`compileSource` does not branch on
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
trusted fragment as `TSQ004`. This produces one focused source diagnostic instead of a downstream
|
|
50
|
-
SQL parse error. Ordinary value templates remain parameters; the compiler never interprets their
|
|
51
|
-
runtime strings as SQL structure.
|
|
52
|
-
|
|
53
|
-
Application projects normally use this through `typed-sql check` or the language server. It is
|
|
54
|
-
public for grammar, editor, and build-tool integrations.
|
|
26
|
+
`compileSource` consumes only `DialectPlugin`; it does not branch on a database, grammar package,
|
|
27
|
+
or driver. Compiled queries expose path-independent SHA-256 fingerprints, variant fingerprints,
|
|
28
|
+
variant descriptions, and source-mapped semantics merged conservatively across conditional
|
|
29
|
+
structure. `buildQueryManifest` turns the same evidence into canonical, secret-free JSON without
|
|
30
|
+
generating an application API. Its public options include the structural-variant bound used for
|
|
31
|
+
conditional fragments. Application projects normally use the compiler through `typed-sql check`
|
|
32
|
+
or the language server.
|
|
33
|
+
|
|
34
|
+
Live verification APIs collect transient SQL only after sources still match the manifest, schedule
|
|
35
|
+
grammar-owned adapters with bounded concurrency, compare native field evidence, and emit canonical
|
|
36
|
+
proofs that contain no SQL, values, URLs, absolute paths, or driver errors.
|
|
37
|
+
|
|
38
|
+
Plan-governance APIs schedule grammar-owned inspectors, normalize redacted plan evidence, and apply
|
|
39
|
+
absolute or environment-comparable relative budgets. Version, schema, settings, statistics, and sample
|
|
40
|
+
changes remain explicit uncertainty instead of being treated as a pass.
|
|
41
|
+
|
|
42
|
+
Migration compatibility APIs consume deterministic artifacts only. They classify source, runtime,
|
|
43
|
+
deployment-order, compatible, and unknown outcomes; link affected variants to source and dependency
|
|
44
|
+
ranges; and emit canonical reports without SQL, default expressions, credentials, or absolute paths.
|
|
45
|
+
|
|
46
|
+
Read [Architecture](https://github.com/Lojhan/typed-sql/blob/main/docs/concepts/architecture.md),
|
|
47
|
+
[Compose conditional SQL](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/composition.md),
|
|
48
|
+
[Query manifests](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/query-manifests.md), and
|
|
49
|
+
[Live verification](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/live-verification.md),
|
|
50
|
+
[Query plan governance](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/query-plan-governance.md),
|
|
51
|
+
[Migration compatibility](https://github.com/Lojhan/typed-sql/blob/main/docs/guides/migration-compatibility.md), and
|
|
52
|
+
[Inference and safety](https://github.com/Lojhan/typed-sql/blob/main/docs/concepts/type-safety.md).
|
|
55
53
|
|
|
56
54
|
MIT © typed-sql contributors
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { SchemaSnapshot, SourceRange } from "@typed-sql/core";
|
|
2
|
+
import type { QueryManifest, QueryManifestLocation } from "./manifest.js";
|
|
3
|
+
export declare const SCHEMA_COMPATIBILITY_FORMAT_VERSION: 1;
|
|
4
|
+
export declare const SCHEMA_COMPATIBILITY_ANALYZER_VERSION: "typed-sql-v1";
|
|
5
|
+
export type DeploymentDirection = "before-app-after-database" | "after-app-before-database";
|
|
6
|
+
export type CompatibilityClassification = "compatible" | "deployment-order-sensitive" | "source-breaking" | "runtime-breaking" | "unknown";
|
|
7
|
+
export type CompatibilitySeverity = "info" | "warning" | "error";
|
|
8
|
+
export type SchemaCompatibilityChangeKind = "relation-added" | "relation-removed" | "column-added" | "column-removed" | "column-database-type" | "column-typescript-type" | "column-nullability" | "column-array" | "column-default" | "enum-added" | "enum-removed" | "enum-values" | "domain-added" | "domain-removed" | "domain-database-type" | "domain-typescript-type" | "domain-nullability" | "function-added" | "function-removed" | "function-return-type" | "function-nullability" | "function-set-returning" | "function-volatility" | "dialect-version" | "server-version" | "query-contract";
|
|
9
|
+
export interface SchemaCompatibilityTarget {
|
|
10
|
+
readonly kind: "schema" | "relation" | "column" | "enum" | "domain" | "function" | "query";
|
|
11
|
+
readonly key: string;
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly schema?: string;
|
|
14
|
+
readonly parent?: string;
|
|
15
|
+
}
|
|
16
|
+
export type CompatibilityEvidenceValue = string | boolean | null | readonly string[];
|
|
17
|
+
export type CompatibilityEvidence = Readonly<Record<string, CompatibilityEvidenceValue>>;
|
|
18
|
+
export interface SchemaCompatibilityChange {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly kind: SchemaCompatibilityChangeKind;
|
|
21
|
+
readonly target: SchemaCompatibilityTarget;
|
|
22
|
+
readonly before?: CompatibilityEvidence;
|
|
23
|
+
readonly after?: CompatibilityEvidence;
|
|
24
|
+
}
|
|
25
|
+
export interface CompatibilityQueryReference {
|
|
26
|
+
readonly queryId: string;
|
|
27
|
+
readonly variantFingerprint: string;
|
|
28
|
+
readonly source: QueryManifestLocation;
|
|
29
|
+
readonly dependencyRange?: SourceRange;
|
|
30
|
+
}
|
|
31
|
+
export interface SchemaCompatibilityAssessment {
|
|
32
|
+
readonly direction: DeploymentDirection;
|
|
33
|
+
readonly changeId?: string;
|
|
34
|
+
readonly classification: CompatibilityClassification;
|
|
35
|
+
readonly severity: CompatibilitySeverity;
|
|
36
|
+
readonly reason: string;
|
|
37
|
+
readonly queries: readonly CompatibilityQueryReference[];
|
|
38
|
+
}
|
|
39
|
+
export interface SchemaCompatibilityReport {
|
|
40
|
+
readonly formatVersion: typeof SCHEMA_COMPATIBILITY_FORMAT_VERSION;
|
|
41
|
+
readonly analyzerVersion: typeof SCHEMA_COMPATIBILITY_ANALYZER_VERSION;
|
|
42
|
+
readonly dialect: string;
|
|
43
|
+
readonly before: {
|
|
44
|
+
readonly schemaHash: string;
|
|
45
|
+
readonly manifestHash: string;
|
|
46
|
+
readonly version?: string;
|
|
47
|
+
};
|
|
48
|
+
readonly after: {
|
|
49
|
+
readonly schemaHash: string;
|
|
50
|
+
readonly manifestHash: string;
|
|
51
|
+
readonly version?: string;
|
|
52
|
+
};
|
|
53
|
+
readonly changes: readonly SchemaCompatibilityChange[];
|
|
54
|
+
readonly assessments: readonly SchemaCompatibilityAssessment[];
|
|
55
|
+
readonly summary: Readonly<Record<CompatibilitySeverity, number>>;
|
|
56
|
+
}
|
|
57
|
+
export interface AnalyzeSchemaCompatibilityOptions {
|
|
58
|
+
readonly before: SchemaSnapshot;
|
|
59
|
+
readonly after: SchemaSnapshot;
|
|
60
|
+
readonly beforeManifest: QueryManifest;
|
|
61
|
+
readonly afterManifest: QueryManifest;
|
|
62
|
+
}
|
|
63
|
+
export declare function analyzeSchemaCompatibility(options: AnalyzeSchemaCompatibilityOptions): SchemaCompatibilityReport;
|
|
64
|
+
export declare function serializeSchemaCompatibilityReport(report: SchemaCompatibilityReport): string;
|
|
65
|
+
export declare function parseSchemaCompatibilityReport(value: unknown): SchemaCompatibilityReport;
|
|
66
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../../src/compatibility.ts"],"names":[],"mappings":"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"}
|