@typed-sql/schema 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/packages/schema/src/generator.d.ts +29 -1
  3. package/dist/packages/schema/src/generator.d.ts.map +1 -1
  4. package/dist/packages/schema/src/generator.js +104 -19
  5. package/dist/packages/schema/src/generator.js.map +1 -1
  6. package/dist/packages/schema/src/index.d.ts +6 -5
  7. package/dist/packages/schema/src/index.d.ts.map +1 -1
  8. package/dist/packages/schema/src/index.js +4 -3
  9. package/dist/packages/schema/src/index.js.map +1 -1
  10. package/dist/packages/schema/src/loader.d.ts +4 -4
  11. package/dist/packages/schema/src/loader.d.ts.map +1 -1
  12. package/dist/packages/schema/src/loader.js +26 -148
  13. package/dist/packages/schema/src/loader.js.map +1 -1
  14. package/dist/packages/schema/src/model.d.ts +13 -44
  15. package/dist/packages/schema/src/model.d.ts.map +1 -1
  16. package/dist/packages/schema/src/model.js +2 -1
  17. package/dist/packages/schema/src/model.js.map +1 -1
  18. package/dist/packages/schema/src/v1/codec.d.ts +3 -0
  19. package/dist/packages/schema/src/v1/codec.d.ts.map +1 -0
  20. package/dist/packages/schema/src/v1/codec.js +151 -0
  21. package/dist/packages/schema/src/v1/codec.js.map +1 -0
  22. package/dist/packages/schema/src/v1/model.d.ts +44 -0
  23. package/dist/packages/schema/src/v1/model.d.ts.map +1 -0
  24. package/dist/packages/schema/src/v1/model.js +2 -0
  25. package/dist/packages/schema/src/v1/model.js.map +1 -0
  26. package/dist/packages/schema/src/v1/upgrade.d.ts +5 -0
  27. package/dist/packages/schema/src/v1/upgrade.d.ts.map +1 -0
  28. package/dist/packages/schema/src/v1/upgrade.js +141 -0
  29. package/dist/packages/schema/src/v1/upgrade.js.map +1 -0
  30. package/dist/packages/schema/src/v2/codec.d.ts +8 -0
  31. package/dist/packages/schema/src/v2/codec.d.ts.map +1 -0
  32. package/dist/packages/schema/src/v2/codec.js +659 -0
  33. package/dist/packages/schema/src/v2/codec.js.map +1 -0
  34. package/dist/packages/schema/src/v2/model.d.ts +231 -0
  35. package/dist/packages/schema/src/v2/model.d.ts.map +1 -0
  36. package/dist/packages/schema/src/v2/model.js +2 -0
  37. package/dist/packages/schema/src/v2/model.js.map +1 -0
  38. package/package.json +4 -2
@@ -1,59 +1,28 @@
1
+ import type { SchemaSnapshotV1 } from "./v1/model.js";
2
+ import type { SchemaSnapshotV2 } from "./v2/model.js";
1
3
  export type SqlDialect = string;
2
- export declare const SCHEMA_FORMAT_VERSION: 1;
3
- export interface SchemaSnapshot {
4
- readonly formatVersion: typeof SCHEMA_FORMAT_VERSION;
5
- readonly dialect: SqlDialect;
6
- readonly dialectVersion?: string;
7
- readonly version?: string;
8
- readonly tables: Readonly<Record<string, TableSnapshot>>;
9
- readonly enums?: Readonly<Record<string, readonly string[]>>;
10
- readonly domains?: Readonly<Record<string, DomainSnapshot>>;
11
- readonly functions?: Readonly<Record<string, FunctionSnapshot>>;
12
- }
4
+ export type SchemaSnapshot = SchemaSnapshotV1 | SchemaSnapshotV2;
13
5
  export interface GeneratedSchemaMetadata {
14
6
  readonly generatorVersion: string;
15
7
  readonly schemaHash: string;
16
8
  readonly typePolicyHash: string;
9
+ readonly schemaFormat?: 1 | 2;
17
10
  }
18
- export interface GeneratedSchemaSnapshot extends SchemaSnapshot {
11
+ export type GeneratedSchemaSnapshot = SchemaSnapshot & {
19
12
  readonly metadata: GeneratedSchemaMetadata;
20
- }
21
- export interface TableSnapshot {
22
- readonly schema?: string;
23
- readonly name: string;
24
- readonly columns: Readonly<Record<string, ColumnSnapshot>>;
25
- }
26
- export interface ColumnSnapshot {
27
- readonly name: string;
28
- readonly databaseType: string;
29
- readonly tsType: string;
30
- readonly nullable: boolean;
31
- readonly array?: boolean;
32
- readonly defaultExpression?: string;
33
- }
34
- export interface DomainSnapshot {
35
- readonly name: string;
36
- readonly databaseType: string;
37
- readonly tsType: string;
38
- readonly nullable: boolean;
39
- }
40
- export interface FunctionSnapshot {
41
- readonly name: string;
42
- readonly schema?: string;
43
- readonly argumentTypes: readonly string[];
44
- readonly databaseReturnType?: string;
45
- readonly returnType: string;
46
- readonly nullable: boolean;
47
- readonly setReturning?: boolean;
48
- readonly volatility?: "immutable" | "stable" | "volatile";
49
- }
13
+ };
50
14
  export type TypePolicy = Readonly<Record<string, unknown>>;
51
15
  export interface SchemaInput {
52
16
  readonly url?: string;
53
17
  readonly snapshot?: string;
54
18
  readonly migrations?: string;
55
19
  }
56
- export interface SchemaProvider {
57
- introspect(input: SchemaInput): Promise<SchemaSnapshot>;
20
+ export interface SchemaProvider<Snapshot extends SchemaSnapshot = SchemaSnapshot> {
21
+ introspect(input: SchemaInput): Promise<Snapshot>;
58
22
  }
23
+ export type { DialectServerEvidence } from "@typed-sql/core";
24
+ export type { ColumnSnapshot, DomainSnapshot, FunctionSnapshot, SchemaSnapshotV1, TableSnapshot, } from "./v1/model.js";
25
+ export { LEGACY_SCHEMA_FORMAT_VERSION } from "./v1/model.js";
26
+ export type { CheckConstraintSnapshot, CollectionTypeSnapshot, ColumnClassification, ColumnDefault, ColumnSnapshotV2, CompositeTypeFieldSnapshot, CompositeTypeSnapshot, ConstraintDeferrability, ConstraintSnapshot, DialectExtensionArray, DialectExtensionObject, DialectExtensionSnapshot, DialectExtensionValue, DomainTypeSnapshot, Eligibility, EnumTypeSnapshot, ExclusionConstraintElementSnapshot, ExclusionConstraintSnapshot, ForeignKeyAction, ForeignKeyConstraintSnapshot, GeneratedColumnKind, IdentityColumnKind, IndexColumnSnapshot, IndexSnapshot, NamespaceSnapshot, NullabilitySource, OpaqueTypeSnapshot, PrimaryKeyConstraintSnapshot, RangeTypeSnapshot, RelationSnapshot, RoutineArgumentMode, RoutineArgumentSnapshot, RoutineResultSnapshot, RoutineSnapshot, ScalarTypeSnapshot, SchemaSnapshotV2, SchemaSnapshotV2Envelope, TypeSnapshot, UniqueConstraintSnapshot, } from "./v2/model.js";
27
+ export { SCHEMA_FORMAT_VERSION } from "./v2/model.js";
59
28
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc;IAC9E,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnD;AAED,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,YAAY,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,kCAAkC,EAClC,2BAA2B,EAC3B,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,2 +1,3 @@
1
- export const SCHEMA_FORMAT_VERSION = 1;
1
+ export { LEGACY_SCHEMA_FORMAT_VERSION } from "./v1/model.js";
2
+ export { SCHEMA_FORMAT_VERSION } from "./v2/model.js";
2
3
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/model.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/model.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AA0C7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SchemaSnapshotV1 } from "./model.js";
2
+ export declare function parseSchemaSnapshotV1(value: unknown): SchemaSnapshotV1;
3
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../../src/v1/codec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoD,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AA4GpH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAkCtE"}
@@ -0,0 +1,151 @@
1
+ import { parseDialectServerEvidence } from "@typed-sql/core";
2
+ import { LEGACY_SCHEMA_FORMAT_VERSION } from "./model.js";
3
+ function record(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ function parseColumn(value, path) {
7
+ if (!record(value))
8
+ throw new TypeError(`${path} must be an object`);
9
+ if (typeof value.name !== "string")
10
+ throw new TypeError(`${path}.name must be a string`);
11
+ if (typeof value.databaseType !== "string")
12
+ throw new TypeError(`${path}.databaseType must be a string`);
13
+ if (typeof value.tsType !== "string")
14
+ throw new TypeError(`${path}.tsType must be a string`);
15
+ if (typeof value.nullable !== "boolean")
16
+ throw new TypeError(`${path}.nullable must be a boolean`);
17
+ if (value.array !== undefined && typeof value.array !== "boolean")
18
+ throw new TypeError(`${path}.array must be a boolean`);
19
+ if (value.defaultExpression !== undefined && typeof value.defaultExpression !== "string") {
20
+ throw new TypeError(`${path}.defaultExpression must be a string`);
21
+ }
22
+ return {
23
+ name: value.name,
24
+ databaseType: value.databaseType,
25
+ tsType: value.tsType,
26
+ nullable: value.nullable,
27
+ ...(value.array === undefined ? {} : { array: value.array }),
28
+ ...(value.defaultExpression === undefined ? {} : { defaultExpression: value.defaultExpression }),
29
+ };
30
+ }
31
+ function parseTable(value, path) {
32
+ if (!record(value))
33
+ throw new TypeError(`${path} must be an object`);
34
+ if (typeof value.name !== "string")
35
+ throw new TypeError(`${path}.name must be a string`);
36
+ if (value.schema !== undefined && typeof value.schema !== "string")
37
+ throw new TypeError(`${path}.schema must be a string`);
38
+ if (!record(value.columns))
39
+ throw new TypeError(`${path}.columns must be an object`);
40
+ const columns = {};
41
+ for (const [name, column] of Object.entries(value.columns))
42
+ columns[name] = parseColumn(column, `${path}.columns.${name}`);
43
+ return { name: value.name, columns, ...(value.schema === undefined ? {} : { schema: value.schema }) };
44
+ }
45
+ function parseDomain(value, path) {
46
+ if (!record(value))
47
+ throw new TypeError(`${path} must be an object`);
48
+ if (typeof value.name !== "string")
49
+ throw new TypeError(`${path}.name must be a string`);
50
+ if (typeof value.databaseType !== "string")
51
+ throw new TypeError(`${path}.databaseType must be a string`);
52
+ if (typeof value.tsType !== "string")
53
+ throw new TypeError(`${path}.tsType must be a string`);
54
+ if (typeof value.nullable !== "boolean")
55
+ throw new TypeError(`${path}.nullable must be a boolean`);
56
+ return { name: value.name, databaseType: value.databaseType, tsType: value.tsType, nullable: value.nullable };
57
+ }
58
+ function parseFunction(value, path) {
59
+ if (!record(value))
60
+ throw new TypeError(`${path} must be an object`);
61
+ if (typeof value.name !== "string")
62
+ throw new TypeError(`${path}.name must be a string`);
63
+ if (!Array.isArray(value.argumentTypes) || value.argumentTypes.some((item) => typeof item !== "string")) {
64
+ throw new TypeError(`${path}.argumentTypes must be a string array`);
65
+ }
66
+ if (typeof value.returnType !== "string")
67
+ throw new TypeError(`${path}.returnType must be a string`);
68
+ if (typeof value.nullable !== "boolean")
69
+ throw new TypeError(`${path}.nullable must be a boolean`);
70
+ if (value.schema !== undefined && typeof value.schema !== "string")
71
+ throw new TypeError(`${path}.schema must be a string`);
72
+ if (value.databaseReturnType !== undefined && typeof value.databaseReturnType !== "string") {
73
+ throw new TypeError(`${path}.databaseReturnType must be a string`);
74
+ }
75
+ if (value.setReturning !== undefined && typeof value.setReturning !== "boolean") {
76
+ throw new TypeError(`${path}.setReturning must be a boolean`);
77
+ }
78
+ if (value.volatility !== undefined &&
79
+ value.volatility !== "immutable" &&
80
+ value.volatility !== "stable" &&
81
+ value.volatility !== "volatile") {
82
+ throw new TypeError(`${path}.volatility must be immutable, stable, or volatile`);
83
+ }
84
+ return {
85
+ name: value.name,
86
+ argumentTypes: value.argumentTypes,
87
+ returnType: value.returnType,
88
+ nullable: value.nullable,
89
+ ...(value.schema === undefined ? {} : { schema: value.schema }),
90
+ ...(value.databaseReturnType === undefined ? {} : { databaseReturnType: value.databaseReturnType }),
91
+ ...(value.setReturning === undefined ? {} : { setReturning: value.setReturning }),
92
+ ...(value.volatility === undefined ? {} : { volatility: value.volatility }),
93
+ };
94
+ }
95
+ function parseStringArrays(value, path) {
96
+ if (!record(value))
97
+ throw new TypeError(`${path} must be an object`);
98
+ const result = {};
99
+ for (const [name, labels] of Object.entries(value)) {
100
+ if (!Array.isArray(labels) || labels.some((label) => typeof label !== "string")) {
101
+ throw new TypeError(`${path}.${name} must be a string array`);
102
+ }
103
+ result[name] = labels;
104
+ }
105
+ return result;
106
+ }
107
+ function parseObjectMap(value, path, parser) {
108
+ if (!record(value))
109
+ throw new TypeError(`${path} must be an object`);
110
+ const result = {};
111
+ for (const [name, item] of Object.entries(value))
112
+ result[name] = parser(item, `${path}.${name}`);
113
+ return result;
114
+ }
115
+ export function parseSchemaSnapshotV1(value) {
116
+ if (!record(value))
117
+ throw new TypeError("Schema snapshot must be an object");
118
+ if (typeof value.dialect !== "string" || value.dialect.length === 0) {
119
+ throw new TypeError("schema.dialect must be a non-empty string");
120
+ }
121
+ if (value.dialectVersion !== undefined &&
122
+ (typeof value.dialectVersion !== "string" || value.dialectVersion.length === 0)) {
123
+ throw new TypeError("schema.dialectVersion must be a non-empty string");
124
+ }
125
+ if (!record(value.tables))
126
+ throw new TypeError("schema.tables must be an object");
127
+ if (value.formatVersion !== undefined && value.formatVersion !== LEGACY_SCHEMA_FORMAT_VERSION) {
128
+ throw new TypeError(`schema.formatVersion must be ${LEGACY_SCHEMA_FORMAT_VERSION}`);
129
+ }
130
+ const tables = {};
131
+ for (const [name, table] of Object.entries(value.tables))
132
+ tables[name] = parseTable(table, `schema.tables.${name}`);
133
+ const snapshot = {
134
+ formatVersion: LEGACY_SCHEMA_FORMAT_VERSION,
135
+ dialect: value.dialect,
136
+ ...(value.dialectVersion === undefined ? {} : { dialectVersion: value.dialectVersion }),
137
+ tables,
138
+ ...(typeof value.version === "string" ? { version: value.version } : {}),
139
+ ...(value.server === undefined ? {} : { server: parseDialectServerEvidence(value.server) }),
140
+ ...(value.enums === undefined ? {} : { enums: parseStringArrays(value.enums, "schema.enums") }),
141
+ ...(value.domains === undefined ? {} : { domains: parseObjectMap(value.domains, "schema.domains", parseDomain) }),
142
+ ...(value.functions === undefined
143
+ ? {}
144
+ : { functions: parseObjectMap(value.functions, "schema.functions", parseFunction) }),
145
+ };
146
+ if (snapshot.server !== undefined && snapshot.version !== undefined && snapshot.server.version !== snapshot.version) {
147
+ throw new TypeError("schema.version must match schema.server.version during the format v1 compatibility bridge");
148
+ }
149
+ return snapshot;
150
+ }
151
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../../../../src/v1/codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { DialectServerEvidence } from "@typed-sql/core";
2
+ export declare const LEGACY_SCHEMA_FORMAT_VERSION: 1;
3
+ export interface SchemaSnapshotV1 {
4
+ readonly formatVersion: typeof LEGACY_SCHEMA_FORMAT_VERSION;
5
+ readonly dialect: string;
6
+ readonly dialectVersion?: string;
7
+ readonly version?: string;
8
+ /** Additive bridge introduced before the v2 envelope became writable. */
9
+ readonly server?: DialectServerEvidence;
10
+ readonly tables: Readonly<Record<string, TableSnapshot>>;
11
+ readonly enums?: Readonly<Record<string, readonly string[]>>;
12
+ readonly domains?: Readonly<Record<string, DomainSnapshot>>;
13
+ readonly functions?: Readonly<Record<string, FunctionSnapshot>>;
14
+ }
15
+ export interface TableSnapshot {
16
+ readonly schema?: string;
17
+ readonly name: string;
18
+ readonly columns: Readonly<Record<string, ColumnSnapshot>>;
19
+ }
20
+ export interface ColumnSnapshot {
21
+ readonly name: string;
22
+ readonly databaseType: string;
23
+ readonly tsType: string;
24
+ readonly nullable: boolean;
25
+ readonly array?: boolean;
26
+ readonly defaultExpression?: string;
27
+ }
28
+ export interface DomainSnapshot {
29
+ readonly name: string;
30
+ readonly databaseType: string;
31
+ readonly tsType: string;
32
+ readonly nullable: boolean;
33
+ }
34
+ export interface FunctionSnapshot {
35
+ readonly name: string;
36
+ readonly schema?: string;
37
+ readonly argumentTypes: readonly string[];
38
+ readonly databaseReturnType?: string;
39
+ readonly returnType: string;
40
+ readonly nullable: boolean;
41
+ readonly setReturning?: boolean;
42
+ readonly volatility?: "immutable" | "stable" | "volatile";
43
+ }
44
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/v1/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAO,MAAM,4BAA4B,EAAG,CAAU,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,4BAA4B,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;CAC3D"}
@@ -0,0 +1,2 @@
1
+ export const LEGACY_SCHEMA_FORMAT_VERSION = 1;
2
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../src/v1/model.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SchemaSnapshotV2 } from "../v2/model.js";
2
+ import type { SchemaSnapshotV1 } from "./model.js";
3
+ /** Conservatively projects v1 evidence into v2. Missing v1 facts remain unknown. */
4
+ export declare function upgradeSchemaSnapshotV1(snapshot: SchemaSnapshotV1): SchemaSnapshotV2;
5
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../../../src/v1/upgrade.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqC,gBAAgB,EAAgB,MAAM,gBAAgB,CAAC;AAExG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAWnD,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAiIpF"}
@@ -0,0 +1,141 @@
1
+ import { createHash } from "node:crypto";
2
+ import { defineDialectServerEvidence } from "@typed-sql/core";
3
+ import { SCHEMA_FORMAT_VERSION } from "../v2/model.js";
4
+ function digest(value) {
5
+ return `sha256:${createHash("sha256").update(value).digest("hex")}`;
6
+ }
7
+ function splitQualified(key) {
8
+ const dot = key.lastIndexOf(".");
9
+ return dot === -1 ? { name: key } : { schema: key.slice(0, dot), name: key.slice(dot + 1) };
10
+ }
11
+ /** Conservatively projects v1 evidence into v2. Missing v1 facts remain unknown. */
12
+ export function upgradeSchemaSnapshotV1(snapshot) {
13
+ const server = snapshot.server ??
14
+ defineDialectServerEvidence({
15
+ product: snapshot.dialect,
16
+ version: snapshot.version ?? "unknown",
17
+ versionKey: snapshot.version ?? "unknown",
18
+ features: [],
19
+ settings: {},
20
+ });
21
+ const namespaceNames = new Set();
22
+ const relations = {};
23
+ for (const [key, table] of Object.entries(snapshot.tables)) {
24
+ if (table.schema !== undefined)
25
+ namespaceNames.add(table.schema);
26
+ relations[key] = {
27
+ ...(table.schema === undefined ? {} : { schema: table.schema }),
28
+ name: table.name,
29
+ kind: "table",
30
+ columns: Object.fromEntries(Object.entries(table.columns).map(([columnKey, column], position) => [
31
+ columnKey,
32
+ {
33
+ name: column.name,
34
+ position,
35
+ databaseType: column.databaseType,
36
+ typeIdentity: column.databaseType,
37
+ tsType: column.tsType,
38
+ nullable: column.nullable,
39
+ nullabilitySource: "unknown",
40
+ default: column.defaultExpression === undefined ? "unknown" : "present",
41
+ ...(column.defaultExpression === undefined
42
+ ? {}
43
+ : { defaultExpressionHash: digest(column.defaultExpression) }),
44
+ generated: "none",
45
+ identity: "unknown",
46
+ ...(column.array ? { dimensions: [] } : {}),
47
+ classification: "normal",
48
+ insertable: "unknown",
49
+ updatable: "unknown",
50
+ },
51
+ ])),
52
+ constraints: [],
53
+ indexes: [],
54
+ capabilities: { evidenceComplete: false },
55
+ };
56
+ }
57
+ const types = {};
58
+ for (const [key, labels] of Object.entries(snapshot.enums ?? {})) {
59
+ const qualified = splitQualified(key);
60
+ if (qualified.schema !== undefined)
61
+ namespaceNames.add(qualified.schema);
62
+ types[key] = {
63
+ kind: "enum",
64
+ ...qualified,
65
+ identity: key,
66
+ databaseType: key,
67
+ tsType: labels.map((label) => JSON.stringify(label)).join(" | ") || "string",
68
+ labels,
69
+ };
70
+ }
71
+ for (const [key, domain] of Object.entries(snapshot.domains ?? {})) {
72
+ const qualified = splitQualified(key);
73
+ if (qualified.schema !== undefined)
74
+ namespaceNames.add(qualified.schema);
75
+ types[key] = {
76
+ kind: "domain",
77
+ ...qualified,
78
+ name: domain.name,
79
+ identity: key,
80
+ databaseType: domain.databaseType,
81
+ tsType: domain.tsType,
82
+ baseTypeIdentity: domain.databaseType,
83
+ nullable: domain.nullable,
84
+ checks: [],
85
+ };
86
+ }
87
+ const routines = {};
88
+ for (const [key, fn] of Object.entries(snapshot.functions ?? {})) {
89
+ if (fn.schema !== undefined)
90
+ namespaceNames.add(fn.schema);
91
+ const name = `${fn.schema === undefined ? "" : `${fn.schema}.`}${fn.name}`;
92
+ const overload = {
93
+ name: fn.name,
94
+ ...(fn.schema === undefined ? {} : { schema: fn.schema }),
95
+ identity: key,
96
+ kind: "function",
97
+ arguments: fn.argumentTypes.map((databaseType) => ({
98
+ mode: "in",
99
+ typeIdentity: databaseType,
100
+ databaseType,
101
+ tsType: "unknown",
102
+ default: "unknown",
103
+ })),
104
+ result: {
105
+ kind: fn.setReturning ? "set" : "scalar",
106
+ typeIdentity: fn.databaseReturnType ?? fn.returnType,
107
+ databaseType: fn.databaseReturnType ?? fn.returnType,
108
+ tsType: fn.returnType,
109
+ nullable: fn.nullable,
110
+ },
111
+ volatility: fn.volatility ?? "unknown",
112
+ deterministic: "unknown",
113
+ dataAccess: "unknown",
114
+ nullInput: "unknown",
115
+ };
116
+ const overloads = routines[name];
117
+ if (overloads === undefined)
118
+ routines[name] = [overload];
119
+ else
120
+ overloads.push(overload);
121
+ }
122
+ const namespaces = Object.fromEntries([...namespaceNames].sort().map((name) => [name, { name, kind: "schema" }]));
123
+ return {
124
+ formatVersion: SCHEMA_FORMAT_VERSION,
125
+ dialect: snapshot.dialect,
126
+ dialectVersion: snapshot.dialectVersion ?? "unknown",
127
+ server,
128
+ namespaces,
129
+ types,
130
+ relations,
131
+ routines: Object.fromEntries(Object.entries(routines)
132
+ .sort(([left], [right]) => left.localeCompare(right))
133
+ .map(([key, overloads]) => [key, overloads.sort((left, right) => left.identity.localeCompare(right.identity))])),
134
+ version: server.version,
135
+ tables: snapshot.tables,
136
+ ...(snapshot.enums === undefined ? {} : { enums: snapshot.enums }),
137
+ ...(snapshot.domains === undefined ? {} : { domains: snapshot.domains }),
138
+ ...(snapshot.functions === undefined ? {} : { functions: snapshot.functions }),
139
+ };
140
+ }
141
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../../../src/v1/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,uBAAuB,CAAC,QAA0B;IAChE,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM;QACf,2BAA2B,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS;YACtC,UAAU,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS;YACzC,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,SAAS,GAAqC,EAAE,CAAC;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,SAAS,CAAC,GAAG,CAAC,GAAG;YACf,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;gBACnE,SAAS;gBACT;oBACE,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ;oBACR,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,iBAAiB,EAAE,SAAkB;oBACrC,OAAO,EAAE,MAAM,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,SAAmB;oBAC7F,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;wBACxC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAChE,SAAS,EAAE,MAAe;oBAC1B,QAAQ,EAAE,SAAkB;oBAC5B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3C,cAAc,EAAE,QAAiB;oBACjC,UAAU,EAAE,SAAkB;oBAC9B,SAAS,EAAE,SAAkB;iBAC9B;aACF,CAAC,CACH;YACD,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE;SAC1C,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;YAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzE,KAAK,CAAC,GAAG,CAAC,GAAG;YACX,IAAI,EAAE,MAAM;YACZ,GAAG,SAAS;YACZ,QAAQ,EAAE,GAAG;YACb,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ;YAC5E,MAAM;SACP,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;YAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzE,KAAK,CAAC,GAAG,CAAC,GAAG;YACX,IAAI,EAAE,QAAQ;YACd,GAAG,SAAS;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,GAAG;YACb,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,gBAAgB,EAAE,MAAM,CAAC,YAAY;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAsC,EAAE,CAAC;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;YAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAoB;YAChC,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;YACzD,QAAQ,EAAE,GAAG;YACb,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,YAAY;gBAC1B,YAAY;gBACZ,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;gBACxC,YAAY,EAAE,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,UAAU;gBACpD,YAAY,EAAE,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,UAAU;gBACpD,MAAM,EAAE,EAAE,CAAC,UAAU;gBACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB;YACD,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;YACtC,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,SAAS;SACrB,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,SAAS,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;YACpD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAC,CACpF,CAAC;IACF,OAAO;QACL,aAAa,EAAE,qBAAqB;QACpC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,SAAS;QACpD,MAAM;QACN,UAAU;QACV,KAAK;QACL,SAAS;QACT,QAAQ,EAAE,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACrB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClH;QACD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClE,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxE,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SchemaSnapshotV2, SchemaSnapshotV2Envelope } from "../model.js";
2
+ /** Parses a strict canonical v2 envelope and adds transitional v1 resolver views in memory. */
3
+ export declare function parseSchemaSnapshotV2(value: unknown): SchemaSnapshotV2;
4
+ /** Validates and canonicalizes a grammar-produced v2 envelope. */
5
+ export declare function defineSchemaSnapshotV2(value: SchemaSnapshotV2Envelope): SchemaSnapshotV2;
6
+ /** Removes transitional projections so v2 has one serialized source of truth. */
7
+ export declare function schemaSnapshotV2Envelope(snapshot: SchemaSnapshotV2): SchemaSnapshotV2Envelope;
8
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../../src/v2/codec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAoBV,gBAAgB,EAChB,wBAAwB,EAGzB,MAAM,aAAa,CAAC;AA2pBrB,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAwDtE;AAED,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,wBAAwB,GAAG,gBAAgB,CAExF;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,wBAAwB,CAa7F"}