@minnowdb/core 0.2.0 → 0.3.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 (146) hide show
  1. package/README.md +21 -32
  2. package/dist/engine/artifact-cache.d.ts +2 -0
  3. package/dist/engine/artifact-cache.d.ts.map +1 -1
  4. package/dist/engine/artifact-cache.js +5 -0
  5. package/dist/engine/artifact-cache.js.map +1 -1
  6. package/dist/engine/batch.d.ts +6 -1
  7. package/dist/engine/batch.d.ts.map +1 -1
  8. package/dist/engine/batch.js +17 -6
  9. package/dist/engine/batch.js.map +1 -1
  10. package/dist/engine/catalog.d.ts +22 -2
  11. package/dist/engine/catalog.d.ts.map +1 -1
  12. package/dist/engine/catalog.js +30 -3
  13. package/dist/engine/catalog.js.map +1 -1
  14. package/dist/engine/client.d.ts +3 -0
  15. package/dist/engine/client.d.ts.map +1 -1
  16. package/dist/engine/client.js +21 -10
  17. package/dist/engine/client.js.map +1 -1
  18. package/dist/engine/database.d.ts +71 -5
  19. package/dist/engine/database.d.ts.map +1 -1
  20. package/dist/engine/database.js +3619 -421
  21. package/dist/engine/database.js.map +1 -1
  22. package/dist/engine/defaults.d.ts +4 -7
  23. package/dist/engine/defaults.d.ts.map +1 -1
  24. package/dist/engine/defaults.js +47 -21
  25. package/dist/engine/defaults.js.map +1 -1
  26. package/dist/engine/fts.d.ts.map +1 -1
  27. package/dist/engine/fts.js +2 -0
  28. package/dist/engine/fts.js.map +1 -1
  29. package/dist/engine/index.d.ts +1 -0
  30. package/dist/engine/index.d.ts.map +1 -1
  31. package/dist/engine/index.js +1 -0
  32. package/dist/engine/index.js.map +1 -1
  33. package/dist/engine/live.d.ts +6 -2
  34. package/dist/engine/live.d.ts.map +1 -1
  35. package/dist/engine/live.js +10 -2
  36. package/dist/engine/live.js.map +1 -1
  37. package/dist/engine/optimizer.d.ts.map +1 -1
  38. package/dist/engine/optimizer.js +258 -23
  39. package/dist/engine/optimizer.js.map +1 -1
  40. package/dist/engine/query-cache.d.ts +1 -1
  41. package/dist/engine/query-cache.d.ts.map +1 -1
  42. package/dist/engine/query-cache.js +3 -1
  43. package/dist/engine/query-cache.js.map +1 -1
  44. package/dist/engine/query.d.ts +132 -22
  45. package/dist/engine/query.d.ts.map +1 -1
  46. package/dist/engine/query.js +1368 -246
  47. package/dist/engine/query.js.map +1 -1
  48. package/dist/engine/schema-wire.d.ts +6 -2
  49. package/dist/engine/schema-wire.d.ts.map +1 -1
  50. package/dist/engine/schema-wire.js +40 -33
  51. package/dist/engine/schema-wire.js.map +1 -1
  52. package/dist/engine/schema.d.ts +157 -76
  53. package/dist/engine/schema.d.ts.map +1 -1
  54. package/dist/engine/schema.js +548 -103
  55. package/dist/engine/schema.js.map +1 -1
  56. package/dist/engine/sort-keys.d.ts +4 -3
  57. package/dist/engine/sort-keys.d.ts.map +1 -1
  58. package/dist/engine/sort-keys.js +42 -27
  59. package/dist/engine/sort-keys.js.map +1 -1
  60. package/dist/engine/sql-domains.d.ts +26 -0
  61. package/dist/engine/sql-domains.d.ts.map +1 -0
  62. package/dist/engine/sql-domains.js +421 -0
  63. package/dist/engine/sql-domains.js.map +1 -0
  64. package/dist/engine/sql-driver.d.ts +19 -0
  65. package/dist/engine/sql-driver.d.ts.map +1 -0
  66. package/dist/engine/sql-driver.js +2 -0
  67. package/dist/engine/sql-driver.js.map +1 -0
  68. package/dist/engine/sql-json.d.ts +7 -8
  69. package/dist/engine/sql-json.d.ts.map +1 -1
  70. package/dist/engine/sql-json.js +28 -14
  71. package/dist/engine/sql-json.js.map +1 -1
  72. package/dist/engine/sql-semantics.d.ts +2 -0
  73. package/dist/engine/sql-semantics.d.ts.map +1 -1
  74. package/dist/engine/sql-semantics.js +69 -3
  75. package/dist/engine/sql-semantics.js.map +1 -1
  76. package/dist/engine/vector.d.ts +5 -1
  77. package/dist/engine/vector.d.ts.map +1 -1
  78. package/dist/engine/vector.js +433 -61
  79. package/dist/engine/vector.js.map +1 -1
  80. package/dist/engine/worker-host.d.ts +1 -0
  81. package/dist/engine/worker-host.d.ts.map +1 -1
  82. package/dist/engine/worker-host.js +8 -0
  83. package/dist/engine/worker-host.js.map +1 -1
  84. package/dist/plan/index.d.ts +3 -3
  85. package/dist/plan/index.js +3 -3
  86. package/dist/storage/indexeddb.d.ts +44 -5
  87. package/dist/storage/indexeddb.d.ts.map +1 -1
  88. package/dist/storage/indexeddb.js +738 -175
  89. package/dist/storage/indexeddb.js.map +1 -1
  90. package/dist/storage/memory.d.ts +27 -10
  91. package/dist/storage/memory.d.ts.map +1 -1
  92. package/dist/storage/memory.js +67 -18
  93. package/dist/storage/memory.js.map +1 -1
  94. package/dist/storage/opfs/leader.d.ts +28 -6
  95. package/dist/storage/opfs/leader.d.ts.map +1 -1
  96. package/dist/storage/opfs/leader.js +301 -34
  97. package/dist/storage/opfs/leader.js.map +1 -1
  98. package/dist/storage/opfs/rpc.d.ts.map +1 -1
  99. package/dist/storage/opfs/rpc.js +2 -1
  100. package/dist/storage/opfs/rpc.js.map +1 -1
  101. package/dist/storage/opfs/store.d.ts +34 -5
  102. package/dist/storage/opfs/store.d.ts.map +1 -1
  103. package/dist/storage/opfs/store.js +41 -0
  104. package/dist/storage/opfs/store.js.map +1 -1
  105. package/dist/storage/snapshot.d.ts +14 -0
  106. package/dist/storage/snapshot.d.ts.map +1 -1
  107. package/dist/storage/snapshot.js +44 -0
  108. package/dist/storage/snapshot.js.map +1 -1
  109. package/dist/storage/toolkit/index.d.ts +1 -1
  110. package/dist/storage/toolkit/index.d.ts.map +1 -1
  111. package/dist/storage/toolkit/index.js +1 -1
  112. package/dist/storage/toolkit/index.js.map +1 -1
  113. package/dist/storage/toolkit/record-core.d.ts +19 -5
  114. package/dist/storage/toolkit/record-core.d.ts.map +1 -1
  115. package/dist/storage/toolkit/record-core.js +353 -78
  116. package/dist/storage/toolkit/record-core.js.map +1 -1
  117. package/dist/storage/toolkit/wire.d.ts +15 -0
  118. package/dist/storage/toolkit/wire.d.ts.map +1 -1
  119. package/dist/storage/toolkit/wire.js +134 -0
  120. package/dist/storage/toolkit/wire.js.map +1 -1
  121. package/dist/storage/types.d.ts +213 -31
  122. package/dist/storage/types.d.ts.map +1 -1
  123. package/dist/storage/types.js +291 -20
  124. package/dist/storage/types.js.map +1 -1
  125. package/dist/testing/block-store-conformance.d.ts.map +1 -1
  126. package/dist/testing/block-store-conformance.js +153 -2
  127. package/dist/testing/block-store-conformance.js.map +1 -1
  128. package/dist/testing/index.d.ts +9 -0
  129. package/dist/testing/index.d.ts.map +1 -1
  130. package/dist/testing/index.js +23 -0
  131. package/dist/testing/index.js.map +1 -1
  132. package/dist/testing/simulator.d.ts +98 -0
  133. package/dist/testing/simulator.d.ts.map +1 -0
  134. package/dist/testing/simulator.js +560 -0
  135. package/dist/testing/simulator.js.map +1 -0
  136. package/dist/testing/sqllogictest.d.ts +90 -0
  137. package/dist/testing/sqllogictest.d.ts.map +1 -0
  138. package/dist/testing/sqllogictest.js +435 -0
  139. package/dist/testing/sqllogictest.js.map +1 -0
  140. package/dist/transactions/index.d.ts +18 -3
  141. package/dist/transactions/index.d.ts.map +1 -1
  142. package/dist/transactions/index.js +64 -8
  143. package/dist/transactions/index.js.map +1 -1
  144. package/package.json +5 -3
  145. package/postgres-feature-profile.json +223 -0
  146. package/sql-feature-matrix.json +179 -251
@@ -1,5 +1,5 @@
1
- import type { ColumnDefault } from "../storage/index.js";
2
- import { type AnyTable, type MigrationStep, type ReferentialAction, type SchemaColumnType, type SchemaDefinition, type TableCheck } from "./schema.js";
1
+ import type { ColumnDefault, SqlDomain } from "../storage/index.js";
2
+ import { type AnyTable, type MigrationStep, type ReferentialAction, type SchemaColumnType, type SchemaDefinition, type TableCheck, type TableForeignKey } from "./schema.js";
3
3
  /**
4
4
  * Structured-clone-safe mirror of the schema DSL. Column builders and table validators carry
5
5
  * methods, so a schema cannot cross a postMessage boundary as-is; these types keep only the data
@@ -9,6 +9,8 @@ export interface WireColumn {
9
9
  readonly type: SchemaColumnType;
10
10
  readonly isNullable: boolean;
11
11
  readonly isUnique: boolean;
12
+ readonly integer?: true;
13
+ readonly sqlDomain?: SqlDomain;
12
14
  readonly defaultSpec?: ColumnDefault;
13
15
  readonly renamedFromName?: string;
14
16
  readonly reference?: {
@@ -23,6 +25,8 @@ export interface WireColumn {
23
25
  export interface WireTable {
24
26
  readonly name: string;
25
27
  readonly columns: Record<string, WireColumn>;
28
+ readonly primaryKey?: readonly string[];
29
+ readonly foreignKeys?: readonly TableForeignKey[];
26
30
  /** Absent rather than empty so a frame written without the field stays readable. */
27
31
  readonly checks?: readonly TableCheck[];
28
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema-wire.d.ts","sourceRoot":"","sources":["../../src/engine/schema-wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-wire.d.ts","sourceRoot":"","sources":["../../src/engine/schema-wire.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,25 @@
1
- import { column, columnWithDefaultSpec, schema, table, view, } from "./schema.js";
2
- function serializeColumn(definition) {
1
+ import { columnFromState, schema, table, view, } from "./schema.js";
2
+ function serializeColumn(definition, frozen) {
3
+ const backfillValue = frozen === undefined
4
+ ? typeof definition.backfillValue === "function"
5
+ ? definition.backfillValue()
6
+ : definition.backfillValue
7
+ : frozen.backfillValue;
3
8
  return {
4
9
  type: definition.type,
5
10
  isNullable: definition.isNullable,
6
11
  isUnique: definition.isUnique,
12
+ ...(definition.integer ? { integer: true } : {}),
13
+ ...(definition.sqlDomain === undefined
14
+ ? {}
15
+ : { sqlDomain: structuredClone(definition.sqlDomain) }),
7
16
  ...(definition.defaultSpec === undefined ? {} : { defaultSpec: { ...definition.defaultSpec } }),
8
17
  ...(definition.renamedFromName === undefined
9
18
  ? {}
10
19
  : { renamedFromName: definition.renamedFromName }),
11
20
  ...(definition.reference === undefined ? {} : { reference: { ...definition.reference } }),
12
21
  ...(definition.enumValues === undefined ? {} : { enumValues: [...definition.enumValues] }),
13
- ...(definition.backfillValue === undefined
14
- ? {}
15
- : {
16
- backfillValue: typeof definition.backfillValue === "function"
17
- ? definition.backfillValue()
18
- : definition.backfillValue,
19
- }),
22
+ ...(backfillValue === undefined ? {} : { backfillValue }),
20
23
  };
21
24
  }
22
25
  function serializeTable(definition) {
@@ -26,6 +29,10 @@ function serializeTable(definition) {
26
29
  name,
27
30
  serializeColumn(columnDefinition),
28
31
  ])),
32
+ ...(definition.primaryKey.length === 0 ? {} : { primaryKey: [...definition.primaryKey] }),
33
+ ...(definition.foreignKeys.length === 0
34
+ ? {}
35
+ : { foreignKeys: structuredClone(definition.foreignKeys) }),
29
36
  ...(definition.checks.length === 0
30
37
  ? {}
31
38
  : { checks: definition.checks.map((check) => ({ ...check })) }),
@@ -66,7 +73,7 @@ export function serializeMigrationSteps(steps) {
66
73
  kind: "add-column",
67
74
  tableName: step.tableName,
68
75
  columnName: step.columnName,
69
- definition: serializeColumn(step.definition),
76
+ definition: serializeColumn(step.definition, step.backfill === undefined ? {} : { backfillValue: step.backfill }),
70
77
  };
71
78
  case "replace-view":
72
79
  return { kind: "replace-view", view: serializeView(step.view) };
@@ -79,33 +86,33 @@ function deserializeColumn(wire) {
79
86
  if (wire.enumValues !== undefined && wire.type !== "string") {
80
87
  throw new TypeError(`Enum values require a string column, got ${wire.type}`);
81
88
  }
82
- let builder = wire.enumValues === undefined
83
- ? column[wire.type]()
84
- : column.enum(wire.enumValues);
85
- if (wire.isNullable)
86
- builder = builder.nullable();
87
- if (wire.isUnique)
88
- builder = builder.unique();
89
- if (wire.renamedFromName !== undefined)
90
- builder = builder.renamedFrom(wire.renamedFromName);
91
- if (wire.backfillValue !== undefined)
92
- builder = builder.backfill(wire.backfillValue);
93
- if (wire.reference !== undefined) {
94
- builder = builder.references(wire.reference.table, wire.reference.column, {
95
- onDelete: wire.reference.onDelete,
96
- });
97
- }
98
- // Rebuilt from the spec directly rather than through .default(), which would re-interpret the
99
- // reserved generator names.
100
- if (wire.defaultSpec !== undefined)
101
- builder = columnWithDefaultSpec(builder, wire.defaultSpec);
102
- return builder;
89
+ // Rebuild in one step. Chaining dynamic nullable/unique builders is needlessly invariant and
90
+ // used to discard a backfill when a default spec was applied last.
91
+ return columnFromState({
92
+ type: wire.type,
93
+ isNullable: wire.isNullable,
94
+ isUnique: wire.isUnique,
95
+ integer: wire.integer === true,
96
+ ...(wire.sqlDomain === undefined ? {} : { sqlDomain: structuredClone(wire.sqlDomain) }),
97
+ ...(wire.defaultSpec === undefined ? {} : { defaultSpec: wire.defaultSpec }),
98
+ ...(wire.renamedFromName === undefined ? {} : { renamedFromName: wire.renamedFromName }),
99
+ ...(wire.reference === undefined ? {} : { reference: wire.reference }),
100
+ ...(wire.enumValues === undefined ? {} : { enumValues: wire.enumValues }),
101
+ ...(wire.backfillValue === undefined ? {} : { backfillValue: wire.backfillValue }),
102
+ });
103
103
  }
104
104
  function deserializeTable(wire) {
105
- return table(wire.name, Object.fromEntries(Object.entries(wire.columns).map(([name, columnDefinition]) => [
105
+ const columns = Object.fromEntries(Object.entries(wire.columns).map(([name, columnDefinition]) => [
106
106
  name,
107
107
  deserializeColumn(columnDefinition),
108
- ])), wire.checks === undefined ? {} : { checks: wire.checks.map((check) => ({ ...check })) });
108
+ ]));
109
+ const options = {
110
+ ...(wire.foreignKeys === undefined ? {} : { foreignKeys: structuredClone(wire.foreignKeys) }),
111
+ ...(wire.checks === undefined ? {} : { checks: wire.checks.map((check) => ({ ...check })) }),
112
+ };
113
+ return wire.primaryKey === undefined
114
+ ? table(wire.name, columns, options)
115
+ : table(wire.name, columns, { ...options, primaryKey: [...wire.primaryKey] });
109
116
  }
110
117
  export function deserializeSchema(wire) {
111
118
  return schema(wire.tables.map(deserializeTable), {
@@ -1 +1 @@
1
- {"version":3,"file":"schema-wire.js","sourceRoot":"","sources":["../../src/engine/schema-wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-wire.js","sourceRoot":"","sources":["../../src/engine/schema-wire.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { type ColumnDefault, type TableColumnRecord, type TableRecord } from "../storage/index.js";
2
- import { type Catalog } from "./catalog.js";
3
- import { type BatchRow } from "./batch.js";
1
+ import { type ColumnDefault, type SqlDomain, type TableColumnRecord, type TableRecord } from "../storage/index.js";
2
+ import { type Catalog, type CatalogColumn, type CatalogTable } from "./catalog.js";
3
+ import { type QueryValue } from "./query.js";
4
4
  /**
5
5
  * Typed schema DSL and catalog migration planning. Column builders carry compile-time value and
6
6
  * nullability types; `planMigration` diffs a schema against the live catalog into metadata-only
@@ -22,6 +22,16 @@ export interface TableCheck {
22
22
  readonly name: string;
23
23
  readonly sql: string;
24
24
  }
25
+ /** A table-level relation, used when either side has a composite primary key. */
26
+ export interface TableForeignKey<TColumnName extends string = string> {
27
+ readonly name: string;
28
+ readonly columns: readonly TColumnName[];
29
+ readonly references: {
30
+ readonly table: string;
31
+ readonly columns: readonly string[];
32
+ };
33
+ readonly onDelete?: ReferentialAction;
34
+ }
25
35
  /**
26
36
  * The constraint name `migrate()` gives a declared relation. It matches the name the SQL parser
27
37
  * derives for an unnamed inline REFERENCES, so a table built either way has the same catalog.
@@ -34,43 +44,36 @@ export declare function foreignKeyName(tableName: string, columnName: string): s
34
44
  export type HasDefault<TValue> = TValue & {
35
45
  readonly __minnowHasDefault?: true;
36
46
  };
37
- /**
38
- * The public name for the flavor, for hand-declared `DB` interfaces (the Kysely convention).
39
- * `InferDatabase` applies it automatically from the schema; write it yourself only when you
40
- * declare the row types by hand and want generated columns to stay omissible on insert:
41
- *
42
- * ```ts
43
- * interface DB {
44
- * notes: { id: Generated<number>; slug: Generated<string>; body: string };
45
- * }
46
- * ```
47
- */
47
+ /** Legacy compatibility marker. Schema-derived core and Kysely types read defaults directly. */
48
48
  export type Generated<TValue> = HasDefault<TValue>;
49
- export interface ColumnBuilder<TValue, TNullable extends boolean, TUnique extends boolean = false, THasDefault extends boolean = false> {
49
+ export interface ColumnBuilder<TValue extends SchemaValue, TNullable extends boolean, TUnique extends boolean = false, THasDefault extends boolean = false, TInput extends SchemaValue = TValue> {
50
50
  readonly kind: "column";
51
51
  readonly type: SchemaColumnType;
52
52
  readonly isNullable: TNullable;
53
53
  readonly isUnique: TUnique;
54
54
  readonly hasDefault: THasDefault;
55
+ /** Type-only metadata consumed by adapters; optional so it emits no runtime payload. */
56
+ readonly "~types"?: {
57
+ readonly select: TValue;
58
+ readonly input: TInput;
59
+ };
60
+ /** True for exact SQL integer columns; ordinary number columns use Float64 semantics. */
61
+ readonly integer: boolean;
62
+ /** Logical SQL semantics layered over the stable string storage encoding. */
63
+ readonly sqlDomain?: SqlDomain;
55
64
  readonly defaultSpec?: ColumnDefault;
56
- /**
57
- * A userland default generator. Never persisted and never sent to the engine — the typed
58
- * facade (`insertInto`, `typedTable`) calls it for omitted-or-null slots before the batch
59
- * crosses the boundary, so untyped write paths (raw batches, SQL) do not see it.
60
- */
61
- readonly defaultFn?: () => TValue;
62
65
  /** Present on `column.enum()` builders: the closed set of values writes must draw from. */
63
66
  readonly enumValues?: readonly string[];
64
67
  /** What rows written before this column existed read as; see `.backfill()`. */
65
- readonly backfillValue?: TValue | (() => TValue);
68
+ readonly backfillValue?: TInput | (() => TInput);
66
69
  readonly renamedFromName?: string;
67
70
  readonly reference?: ColumnReferenceSpec;
68
71
  /** Marks the column nullable; inserts may omit it and reads may return null. */
69
- nullable(): ColumnBuilder<TValue, true, TUnique, THasDefault>;
72
+ nullable(): ColumnBuilder<TValue, true, TUnique, THasDefault, TInput>;
70
73
  /** Marks the table's unique key; exactly one non-nullable column may carry it. */
71
- unique(): ColumnBuilder<TValue, TNullable, true, THasDefault>;
74
+ unique(this: ColumnBuilder<TValue, false, TUnique, THasDefault, TInput>): ColumnBuilder<TValue, TNullable, true, THasDefault, TInput>;
72
75
  /** Declares this column as the rename target of an existing catalog column. */
73
- renamedFrom(name: string): ColumnBuilder<TValue, TNullable, TUnique, THasDefault>;
76
+ renamedFrom(name: string): ColumnBuilder<TValue, TNullable, TUnique, THasDefault, TInput>;
74
77
  /**
75
78
  * What rows written before this column existed read as, instead of NULL. Giving one is what
76
79
  * makes adding a non-nullable column possible: no stored byte is rewritten, and reads
@@ -80,7 +83,7 @@ export interface ColumnBuilder<TValue, TNullable extends boolean, TUnique extend
80
83
  * catalog — so it can derive a value (a timestamp, a version stamp) without readers ever
81
84
  * disagreeing. It cannot derive from other columns; that would need a value per row.
82
85
  */
83
- backfill(value: TValue | (() => TValue)): ColumnBuilder<TValue, TNullable, TUnique, THasDefault>;
86
+ backfill(this: ColumnBuilder<TValue, false, TUnique, THasDefault, TInput>, value: TInput | (() => TInput)): ColumnBuilder<TValue, TNullable, TUnique, THasDefault, TInput>;
84
87
  /**
85
88
  * Declares a FOREIGN KEY onto another table's unique key. `migrate()` creates it as a real
86
89
  * constraint, so a write naming a parent row that does not exist is rejected — the same
@@ -88,39 +91,75 @@ export interface ColumnBuilder<TValue, TNullable extends boolean, TUnique extend
88
91
  *
89
92
  * `onDelete` defaults to `"restrict"`. `"set null"` requires a nullable column.
90
93
  */
91
- references(table: string, column: string, options?: {
92
- onDelete?: ReferentialAction;
93
- }): ColumnBuilder<TValue, TNullable, TUnique, THasDefault>;
94
+ references(this: ColumnBuilder<TValue, TNullable, TUnique, THasDefault, TInput>, table: string, column: string, options?: {
95
+ onDelete?: Exclude<ReferentialAction, "set null">;
96
+ }): ColumnBuilder<TValue, TNullable, TUnique, THasDefault, TInput>;
97
+ references(this: ColumnBuilder<TValue, true, TUnique, THasDefault, TInput>, table: string, column: string, options: {
98
+ onDelete: "set null";
99
+ }): ColumnBuilder<TValue, TNullable, TUnique, THasDefault, TInput>;
100
+ /** Declares a literal SQL default. Omission or SQL `DEFAULT` invokes it; NULL does not. */
101
+ default(value: TInput): ColumnBuilder<TValue, TNullable, TUnique, true, TInput>;
94
102
  /**
95
- * Fills null-or-absent slots at insert time. Requires a non-nullable column.
96
- *
97
- * A plain value persists in the catalog and fills inside the engine, so every write path
98
- * gets it — raw batches, SQL statements, other tabs. Datetime columns accept only "now",
99
- * which stamps one consistent timestamp per batch.
100
- *
101
- * A function is a userland generator (`() => ulid()`): the typed facade calls it just
102
- * before the batch is sent, so it never persists and never crosses the worker boundary —
103
- * and write paths that don't go through the facade don't see it.
103
+ * Declares a variable-free SQL default expression, such as `CURRENT_TIMESTAMP`,
104
+ * `gen_random_uuid()`, or `nextval('orders_id_seq')`. The engine parses and type-checks it
105
+ * before migration and evaluates it once per omitted row.
104
106
  */
105
- default(value: (TValue extends Date ? "now" : TValue) | (() => TValue)): ColumnBuilder<TValue, TNullable, TUnique, true>;
107
+ defaultSql(sql: string): ColumnBuilder<TValue, TNullable, TUnique, true, TInput>;
106
108
  /**
107
- * Generates monotonically increasing integers for null-or-absent slots from a persistent
109
+ * Generates monotonically increasing integers for omitted or SQL `DEFAULT` slots from a persistent
108
110
  * per-table counter that is atomic across tabs. Explicit values are allowed and bump the
109
111
  * counter past their maximum. Number unique-key columns only.
110
112
  */
111
- autoIncrement: TValue extends number ? () => ColumnBuilder<TValue, TNullable, TUnique, true> : never;
113
+ autoIncrement: TValue extends number ? (this: ColumnBuilder<TValue, false, true, THasDefault, TInput>) => ColumnBuilder<TValue, TNullable, TUnique, true, TInput> : never;
114
+ }
115
+ type SchemaValue = boolean | number | string | Date;
116
+ /**
117
+ * Metadata shared by every concrete ColumnBuilder. Schema collections need an existential
118
+ * column type: including fluent methods here would make TValue invariant because those methods
119
+ * both consume and return it. Public inference still retains each concrete builder in TColumns.
120
+ */
121
+ interface AnyColumn {
122
+ readonly kind: "column";
123
+ readonly type: SchemaColumnType;
124
+ readonly isNullable: boolean;
125
+ readonly isUnique: boolean;
126
+ readonly hasDefault: boolean;
127
+ readonly integer: boolean;
128
+ readonly sqlDomain?: SqlDomain;
129
+ readonly defaultSpec?: ColumnDefault;
130
+ readonly enumValues?: readonly string[];
131
+ readonly backfillValue?: SchemaValue | (() => SchemaValue);
132
+ readonly renamedFromName?: string;
133
+ readonly reference?: ColumnReferenceSpec;
112
134
  }
113
- type AnyColumn = ColumnBuilder<boolean | number | string | Date, boolean, boolean, boolean>;
114
135
  /**
115
136
  * Rebuilds a column carrying an exact default spec — the wire layer's escape hatch, since the
116
- * public `.default()` interprets "now" on datetime columns and cannot express auto-increment.
137
+ * public `.default()` accepts literals and cannot express auto-increment catalog metadata.
117
138
  */
118
- export declare function columnWithDefaultSpec(base: Pick<AnyColumn, "type" | "isNullable" | "isUnique" | "renamedFromName" | "reference" | "enumValues">, spec: ColumnDefault): AnyColumn;
139
+ export declare function columnWithDefaultSpec(base: Pick<AnyColumn, "type" | "isNullable" | "isUnique" | "renamedFromName" | "reference" | "enumValues"> & Partial<Pick<AnyColumn, "integer" | "sqlDomain">>, spec: ColumnDefault): AnyColumn;
140
+ /** Rebuilds a fluent column from structured-clone-safe metadata. */
141
+ export declare function columnFromState(state: Pick<AnyColumn, "type" | "isNullable" | "isUnique"> & Partial<Pick<AnyColumn, "integer" | "sqlDomain" | "renamedFromName" | "reference" | "defaultSpec" | "enumValues" | "backfillValue">>): AnyColumn;
119
142
  export declare const column: {
120
- boolean: () => ColumnBuilder<boolean, false, false, false>;
121
- number: () => ColumnBuilder<number, false, false, false>;
122
- string: () => ColumnBuilder<string, false, false, false>;
123
- datetime: () => ColumnBuilder<Date, false, false, false>;
143
+ boolean: () => ColumnBuilder<boolean, false, false, false, boolean>;
144
+ number: () => ColumnBuilder<number, false, false, false, number>;
145
+ /** Exact safe-integer semantics, matching SQL INTEGER/SMALLINT/BIGINT. */
146
+ integer: () => ColumnBuilder<number, false, false, false, number>;
147
+ string: () => ColumnBuilder<string, false, false, false, string>;
148
+ datetime: () => ColumnBuilder<Date, false, false, false, Date>;
149
+ /** Exact decimal SQL NUMERIC. Selects return strings; writes accept strings or numbers. */
150
+ numeric: (options?: {
151
+ precision?: number;
152
+ scale?: number;
153
+ }) => ColumnBuilder<string, false, false, false, string | number>;
154
+ json: () => ColumnBuilder<string, false, false, false, string>;
155
+ jsonb: () => ColumnBuilder<string, false, false, false, string>;
156
+ uuid: () => ColumnBuilder<string, false, false, false, string>;
157
+ time: () => ColumnBuilder<string, false, false, false, string>;
158
+ interval: () => ColumnBuilder<string, false, false, false, string>;
159
+ /** JSON array text at the JavaScript boundary, with the SQL element type retained in metadata. */
160
+ array: (element: string) => ColumnBuilder<string, false, false, false, string>;
161
+ /** A named SQL enum domain, distinct from the lightweight `column.enum()` restriction. */
162
+ sqlEnum: <const TValues extends readonly [string, ...string[]]>(name: string, values: TValues) => ColumnBuilder<TValues[number], false>;
124
163
  /**
125
164
  * A string column restricted to a closed set of values, typed as their literal union:
126
165
  *
@@ -135,11 +174,13 @@ export declare const column: {
135
174
  */
136
175
  enum: <const TValues extends readonly [string, ...string[]]>(values: TValues) => ColumnBuilder<TValues[number], false>;
137
176
  };
138
- export interface TableSchema<TColumns extends Record<string, AnyColumn>, TName extends string = string> {
177
+ /** Runtime table shape accepted by schema collections without erasing concrete table inference. */
178
+ export interface AnyTable {
139
179
  readonly kind: "table";
140
- readonly name: TName;
141
- readonly columns: TColumns;
142
- /** Row conditions every write must satisfy; empty when none were declared. */
180
+ readonly name: string;
181
+ readonly columns: Record<string, AnyColumn>;
182
+ readonly primaryKey: readonly string[];
183
+ readonly foreignKeys: readonly TableForeignKey[];
143
184
  readonly checks: readonly TableCheck[];
144
185
  /** Standard Schema-compatible runtime validator for one insert row. */
145
186
  readonly "~standard": {
@@ -155,8 +196,21 @@ export interface TableSchema<TColumns extends Record<string, AnyColumn>, TName e
155
196
  };
156
197
  };
157
198
  }
158
- export type AnyTable = TableSchema<Record<string, AnyColumn>>;
159
- export interface TableOptions {
199
+ export interface TableSchema<TColumns extends Record<string, AnyColumn>, TName extends string = string, TPrimaryKey extends ReadonlyArray<keyof TColumns & string> = readonly []> extends AnyTable {
200
+ readonly name: TName;
201
+ readonly columns: TColumns;
202
+ /** Ordered table-level primary key. Empty when `.unique()` owns the scalar identity. */
203
+ readonly primaryKey: TPrimaryKey;
204
+ /** Table-level relations, including composite FOREIGN KEY declarations. */
205
+ readonly foreignKeys: ReadonlyArray<TableForeignKey<keyof TColumns & string>>;
206
+ /** Row conditions every write must satisfy; empty when none were declared. */
207
+ readonly checks: readonly TableCheck[];
208
+ }
209
+ export interface TableOptions<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TPrimaryKey extends ReadonlyArray<keyof TColumns & string> = readonly []> {
210
+ /** Ordered PRIMARY KEY columns. Use `.unique()` for the existing scalar shorthand. */
211
+ readonly primaryKey?: TPrimaryKey;
212
+ /** Table-level relations; required for composite FOREIGN KEYs. */
213
+ readonly foreignKeys?: ReadonlyArray<TableForeignKey<keyof TColumns & string>>;
160
214
  /**
161
215
  * Row conditions every write must satisfy (E141-06), each a boolean SQL expression over this
162
216
  * table's own columns — the declarative form of `CONSTRAINT name CHECK (sql)`. The engine
@@ -165,7 +219,12 @@ export interface TableOptions {
165
219
  */
166
220
  readonly checks?: readonly TableCheck[];
167
221
  }
168
- export declare function table<const TName extends string, TColumns extends Record<string, AnyColumn>>(name: TName, columns: TColumns, options?: TableOptions): TableSchema<TColumns, TName>;
222
+ export declare function table<const TName extends string, TColumns extends Record<string, AnyColumn>, const TPrimaryKey extends ReadonlyArray<keyof TColumns & string>>(name: TName, columns: TColumns, options: TableOptions<TColumns, TPrimaryKey> & {
223
+ readonly primaryKey: TPrimaryKey;
224
+ }): TableSchema<TColumns, TName, TPrimaryKey>;
225
+ export declare function table<const TName extends string, TColumns extends Record<string, AnyColumn>>(name: TName, columns: TColumns, options?: Omit<TableOptions<TColumns>, "primaryKey"> & {
226
+ readonly primaryKey?: never;
227
+ }): TableSchema<TColumns, TName>;
169
228
  /**
170
229
  * The FOREIGN KEY constraints a table declares, in column order. This is the single derivation
171
230
  * of "what relations does this table have" — `planMigration` diffs against it and `migrate()`
@@ -174,8 +233,10 @@ export declare function table<const TName extends string, TColumns extends Recor
174
233
  export declare function declaredForeignKeys(definition: AnyTable): Array<{
175
234
  name: string;
176
235
  column: string;
236
+ columns?: string[];
177
237
  parentTable: string;
178
238
  parentColumn: string;
239
+ parentColumns?: string[];
179
240
  onDelete: ReferentialAction;
180
241
  }>;
181
242
  /**
@@ -217,7 +278,14 @@ export interface SchemaDefinition<TTables extends readonly AnyTable[], TViews ex
217
278
  export declare function schema<TTables extends readonly AnyTable[], TViews extends readonly AnyView[] = []>(tables: TTables, options?: {
218
279
  views?: TViews;
219
280
  }): SchemaDefinition<TTables, TViews>;
220
- type ColumnValue<TColumn> = TColumn extends ColumnBuilder<infer TValue, infer TNullable, boolean, infer THasDefault> ? THasDefault extends true ? HasDefault<TNullable extends true ? TValue | null : TValue> : TNullable extends true ? TValue | null : TValue : never;
281
+ type ColumnTypeMetadata<TColumn> = TColumn extends {
282
+ readonly "~types"?: infer TMetadata extends {
283
+ readonly select: unknown;
284
+ readonly input: unknown;
285
+ };
286
+ } ? NonNullable<TMetadata> : never;
287
+ type ColumnValue<TColumn extends AnyColumn> = TColumn["isNullable"] extends true ? ColumnTypeMetadata<TColumn>["select"] | null : ColumnTypeMetadata<TColumn>["select"];
288
+ type ColumnInputValue<TColumn extends AnyColumn> = TColumn["isNullable"] extends true ? ColumnTypeMetadata<TColumn>["input"] | null : ColumnTypeMetadata<TColumn>["input"];
221
289
  /** The complete row shape a read returns. */
222
290
  export type InferRow<TTable extends AnyTable> = {
223
291
  [K in keyof TTable["columns"]]: ColumnValue<TTable["columns"][K]>;
@@ -237,16 +305,22 @@ type DefaultKeys<TTable extends AnyTable> = {
237
305
  }[keyof TTable["columns"]];
238
306
  type OptionalInsertKeys<TTable extends AnyTable> = NullableKeys<TTable> | DefaultKeys<TTable>;
239
307
  /** Insert rows require every non-nullable column and may omit nullable or default-bearing ones. */
240
- export type InferInsertRow<TTable extends AnyTable> = Omit<InferRow<TTable>, OptionalInsertKeys<TTable>> & {
241
- [K in OptionalInsertKeys<TTable>]?: ColumnValue<TTable["columns"][K]>;
308
+ export type InferInsertRow<TTable extends AnyTable> = Omit<{
309
+ [K in keyof TTable["columns"]]: ColumnInputValue<TTable["columns"][K]>;
310
+ }, OptionalInsertKeys<TTable>> & {
311
+ [K in OptionalInsertKeys<TTable>]?: ColumnInputValue<TTable["columns"][K]>;
242
312
  };
313
+ /** Scalar `.unique()` keys plus columns named by a table-level primary key. */
314
+ export type PrimaryKeyKeys<TTable extends AnyTable> = {
315
+ [K in keyof TTable["columns"]]: TTable["columns"][K]["isUnique"] extends true ? K : never;
316
+ }[keyof TTable["columns"]] | TTable["primaryKey"][number];
243
317
  /**
244
318
  * Update changes may cover any column except the unique key. An explicit `undefined` entry is
245
319
  * allowed and means "leave this column untouched", so a spread-patch built from optional fields
246
320
  * stays assignable under `exactOptionalPropertyTypes`.
247
321
  */
248
322
  export type InferUpdateChanges<TTable extends AnyTable> = {
249
- [K in keyof TTable["columns"] as TTable["columns"][K]["isUnique"] extends true ? never : K]?: ColumnValue<TTable["columns"][K]> | undefined;
323
+ [K in keyof TTable["columns"] as K extends PrimaryKeyKeys<TTable> ? never : K]?: ColumnInputValue<TTable["columns"][K]> | undefined;
250
324
  };
251
325
  export type MigrationStep = {
252
326
  kind: "create-table";
@@ -332,6 +406,12 @@ export interface MigrationPlan {
332
406
  export declare function isDestructiveStep(step: MigrationStep): step is Extract<MigrationStep, {
333
407
  kind: "drop-column" | "drop-table";
334
408
  }>;
409
+ /**
410
+ * A column can stop being projected without rewriting anything, but not while something else in
411
+ * the catalog still points at it. Each of these would leave a constraint or key referring to a
412
+ * column no longer there, so the drop is refused rather than silently invalidating them.
413
+ */
414
+ export declare function assertColumnDroppable(record: CatalogTable, column: CatalogColumn): void;
335
415
  /**
336
416
  * Diffs the live catalog against a schema into metadata-only steps, in a deterministic order.
337
417
  * Anything unprovable fails explicitly: type changes, dropped columns, unique-key changes,
@@ -351,40 +431,41 @@ export interface PlanMigrationOptions {
351
431
  readonly schemaOwnsDatabase?: boolean;
352
432
  }
353
433
  export declare function planMigration(catalog: Catalog, definition: SchemaDefinition<readonly AnyTable[]>, options?: PlanMigrationOptions): MigrationPlan;
354
- type UniqueKeyValue<TTable extends AnyTable> = {
434
+ type ScalarUniqueKeyValue<TTable extends AnyTable> = {
355
435
  [K in keyof TTable["columns"]]: TTable["columns"][K]["isUnique"] extends true ? ColumnValue<TTable["columns"][K]> : never;
356
436
  }[keyof TTable["columns"]];
437
+ type DeclaredPrimaryKeyValue<TTable extends AnyTable> = {
438
+ [K in TTable["primaryKey"][number]]: ColumnValue<TTable["columns"][K]>;
439
+ };
440
+ /** Scalar keys stay scalar; composite keys are objects keyed by their declared column names. */
441
+ export type PrimaryKeyValue<TTable extends AnyTable> = TTable["primaryKey"] extends readonly [] ? ScalarUniqueKeyValue<TTable> : TTable["primaryKey"] extends readonly [infer TOnly extends keyof TTable["columns"]] ? ColumnValue<TTable["columns"][TOnly]> : DeclaredPrimaryKeyValue<TTable>;
357
442
  type ColumnArrays<TShape> = {
358
443
  [K in keyof TShape]: ReadonlyArray<TShape[K]>;
359
444
  };
360
445
  interface TypedTableDatabase {
361
- insertBatch(tableName: string, rows: readonly BatchRow[]): Promise<unknown>;
362
- upsertBatch(tableName: string, rows: readonly BatchRow[]): Promise<unknown>;
363
- updateBatch(tableName: string, input: {
364
- keys: readonly unknown[];
365
- changes: Readonly<Record<string, readonly unknown[]>>;
366
- }): Promise<unknown>;
367
- deleteBatch(tableName: string, input: {
368
- keys: readonly unknown[];
369
- }): Promise<unknown>;
370
- readTable(tableName: string, options?: {
371
- columns?: readonly string[];
372
- }): Promise<Array<Record<string, unknown>>>;
446
+ execute(sql: string, params?: readonly QueryValue[]): Promise<unknown>;
447
+ query(sql: string, options?: {
448
+ params?: readonly QueryValue[];
449
+ }): Promise<{
450
+ rows: Array<Record<string, unknown>>;
451
+ }>;
373
452
  }
374
453
  /**
375
- * A thin, fully typed handle over the existing batch APIs: inserts require every non-nullable
376
- * column, updates exclude the unique key, and reads return the complete inferred row shape.
454
+ * A thin, fully typed SQL handle: inserts require every non-nullable column, updates exclude the
455
+ * unique key, and reads return the complete inferred row shape. Every operation is rendered as
456
+ * parameterized SQL and goes through the parser/planner/executor; this helper has no private
457
+ * batch or table-read semantics that can drift from SQL.
377
458
  */
378
459
  export declare function typedTable<TTable extends AnyTable>(database: TypedTableDatabase, definition: TTable): {
379
460
  definition: TTable;
380
461
  insert(rows: ReadonlyArray<InferInsertRow<TTable>>): Promise<unknown>;
381
462
  upsert(rows: ReadonlyArray<InferInsertRow<TTable>>): Promise<unknown>;
382
463
  update(input: {
383
- keys: ReadonlyArray<UniqueKeyValue<TTable>>;
464
+ keys: ReadonlyArray<PrimaryKeyValue<TTable>>;
384
465
  changes: Partial<ColumnArrays<InferUpdateChanges<TTable>>>;
385
466
  }): Promise<unknown>;
386
467
  delete(input: {
387
- keys: ReadonlyArray<UniqueKeyValue<TTable>>;
468
+ keys: ReadonlyArray<PrimaryKeyValue<TTable>>;
388
469
  }): Promise<unknown>;
389
470
  rows(): Promise<Array<InferRow<TTable>>>;
390
471
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/engine/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/engine/schema.ts"],"names":[],"mappings":"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"}