@prisma/orm-target-sqlite 8.0.0-rc.19-dev.2 → 8.0.0-rc.19-dev.4

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 (30) hide show
  1. package/dist/{adapter-rNrGhNM6.d.mts → adapter-e4_SMdnY.d.mts} +4 -4
  2. package/dist/{adapter-rNrGhNM6.d.mts.map → adapter-e4_SMdnY.d.mts.map} +1 -1
  3. package/dist/adapter.d.mts +1 -1
  4. package/dist/adapter__adapter.d.mts +1 -1
  5. package/dist/{aggregates-C91ltL9M.d.mts → aggregates-CP9IZJhO.d.mts} +4 -4
  6. package/dist/{aggregates-C91ltL9M.d.mts.map → aggregates-CP9IZJhO.d.mts.map} +1 -1
  7. package/dist/{migration-B5NMdcC0.mjs → migration-DpfbaaqJ.mjs} +2 -2
  8. package/dist/{migration-B5NMdcC0.mjs.map → migration-DpfbaaqJ.mjs.map} +1 -1
  9. package/dist/{op-factory-call-Dzsgcf3B-B7IaqEjE.mjs → op-factory-call-D2bHVPKQ-BdwLsMzU.mjs} +30 -28
  10. package/dist/op-factory-call-D2bHVPKQ-BdwLsMzU.mjs.map +1 -0
  11. package/dist/{planner-DD8nGrZ_-BcGCsYVP.mjs → planner-IcAu5SpS-BxzZlOe3.mjs} +5 -5
  12. package/dist/{planner-DD8nGrZ_-BcGCsYVP.mjs.map → planner-IcAu5SpS-BxzZlOe3.mjs.map} +1 -1
  13. package/dist/{planner-produced-sqlite-migration-DZcAhOaD-D71e7xGn.mjs → planner-produced-sqlite-migration-8onGxp5C-SfQsPkc5.mjs} +4 -4
  14. package/dist/{planner-produced-sqlite-migration-DZcAhOaD-D71e7xGn.mjs.map → planner-produced-sqlite-migration-8onGxp5C-SfQsPkc5.mjs.map} +1 -1
  15. package/dist/{render-ops-DG-QUw8Q-DC6TMBgU.mjs → render-ops-DkPGXHWU-6FZfFCF5.mjs} +3 -3
  16. package/dist/{render-ops-DG-QUw8Q-DC6TMBgU.mjs.map → render-ops-DkPGXHWU-6FZfFCF5.mjs.map} +1 -1
  17. package/dist/{sqlite-migration-B7LD9iDG-BTpw_zNF.mjs → sqlite-migration-BM-4t7pA-Cf3heN-E.mjs} +3 -3
  18. package/dist/{sqlite-migration-B7LD9iDG-BTpw_zNF.mjs.map → sqlite-migration-BM-4t7pA-Cf3heN-E.mjs.map} +1 -1
  19. package/dist/target.d.mts +1 -1
  20. package/dist/target.mjs +6 -6
  21. package/dist/target__aggregates.d.mts +1 -1
  22. package/dist/target__control.mjs +33 -27
  23. package/dist/target__control.mjs.map +1 -1
  24. package/dist/target__migration.mjs +2 -2
  25. package/dist/target__op-factory-call.mjs +1 -1
  26. package/dist/target__planner-produced-sqlite-migration.mjs +1 -1
  27. package/dist/target__planner.mjs +1 -1
  28. package/dist/target__render-ops.mjs +1 -1
  29. package/package.json +9 -9
  30. package/dist/op-factory-call-Dzsgcf3B-B7IaqEjE.mjs.map +0 -1
@@ -100,7 +100,7 @@ declare const sqliteAdapterContractContributions: {
100
100
  readonly operation: "avg";
101
101
  readonly input: {
102
102
  readonly kind: "codec";
103
- readonly codecId: "sql/int@1" | "sql/float@1" | "sqlite/integer@1" | "sqlite/real@1" | "sqlite/bigint@1" | "sqlite/bigintnumber@1";
103
+ readonly codecId: "sql/int@1" | "sql/float@1" | "sqlite/integer@1" | "sqlite/bigint@1" | "sqlite/real@1" | "sqlite/bigintnumber@1";
104
104
  };
105
105
  readonly output: {
106
106
  readonly kind: "codec";
@@ -131,7 +131,7 @@ declare const sqliteAdapterContractContributions: {
131
131
  readonly operation: "min";
132
132
  readonly input: {
133
133
  readonly kind: "codec";
134
- readonly codecId: "sqlite/blob@1" | "sqlite/datetime@1" | "sqlite/json@1";
134
+ readonly codecId: "sqlite/datetime@1" | "sqlite/json@1" | "sqlite/blob@1";
135
135
  };
136
136
  readonly output: {
137
137
  readonly kind: "self";
@@ -172,7 +172,7 @@ declare const sqliteAdapterContractContributions: {
172
172
  readonly operation: "max";
173
173
  readonly input: {
174
174
  readonly kind: "codec";
175
- readonly codecId: "sqlite/blob@1" | "sqlite/datetime@1" | "sqlite/json@1";
175
+ readonly codecId: "sqlite/datetime@1" | "sqlite/json@1" | "sqlite/blob@1";
176
176
  };
177
177
  readonly output: {
178
178
  readonly kind: "self";
@@ -194,4 +194,4 @@ declare const sqliteAdapterContractContributions: {
194
194
  };
195
195
  //#endregion
196
196
  export { sqliteAdapterContractContributions as n, sqliteAdapterCapabilities as t };
197
- //# sourceMappingURL=adapter-rNrGhNM6.d.mts.map
197
+ //# sourceMappingURL=adapter-e4_SMdnY.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-rNrGhNM6.d.mts","names":[],"sources":["../../../../3-targets/6-adapters/sqlite/dist/adapter.d.mts"],"mappings":";;;;cAGc,2BAA2B;WAC9B;aACE;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;;;;;;;;cAQC;WACH,cAAc;aACZ;eACE;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;;;WAGJ;aACE;eACE;eACA;iBACE;;eAEF;iBACE;iBACA;;eAEF;eACA;eACA,6EAA6E;;eAE7E;eACA;iBACE;;eAEF;iBACE;iBACA;;eAEF;eACA;eACA,6EAA6E;;eAE7E,8EAA8E;eAC9E;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;eACA,6EAA6E;;eAE7E,8EAA8E;eAC9E;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;;eAEA,8EAA8E;eAC9E;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;eACA,6EAA6E;;eAE7E;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;eACA,6EAA6E"}
1
+ {"version":3,"file":"adapter-e4_SMdnY.d.mts","names":[],"sources":["../../../../3-targets/6-adapters/sqlite/dist/adapter.d.mts"],"mappings":";;;;cAGc,2BAA2B;WAC9B;aACE;aACA;aACA;aACA;aACA;aACA;aACA;aACA;aACA;;;;;;;;cAQC;WACH,cAAc;aACZ;eACE;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;;;WAGJ;aACE;eACE;eACA;iBACE;;eAEF;iBACE;iBACA;;eAEF;eACA;eACA,6EAA6E;;eAE7E;eACA;iBACE;;eAEF;iBACE;iBACA;;eAEF;eACA;eACA,6EAA6E;;eAE7E,8EAA8E;eAC9E;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;eACA,6EAA6E;;eAE7E,8EAA8E;eAC9E;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;;eAEA,8EAA8E;eAC9E;eACA;iBACE;iBACA;;eAEF;iBACE;iBACA;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;eACA,6EAA6E;;eAE7E;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;;eAEA;eACA;iBACE;iBACA;;eAEF;iBACE;;eAEF;eACA,6EAA6E"}
@@ -1,7 +1,7 @@
1
1
  import { n as SqliteContract, r as SqliteLoweredStatement, t as SqliteAdapterOptions } from "./types-RJMd2PlL-EuhZF7B6.mjs";
2
2
  import { m as createSqliteCodecRegistryWithBuiltins, o as SqliteCodecRegistry, p as createSqliteBuiltinCodecLookup, t as JsonValue$1 } from "./codecs-BJYruC-a-gv28KlTa.mjs";
3
3
  import { i as sqliteRawCodecInferer, r as renderLoweredSql, t as createSqliteAdapter } from "./adapter-xFPDhkod-BsfRQfp6.mjs";
4
- import { n as sqliteAdapterContractContributions, t as sqliteAdapterCapabilities } from "./adapter-rNrGhNM6.mjs";
4
+ import { n as sqliteAdapterContractContributions, t as sqliteAdapterCapabilities } from "./adapter-e4_SMdnY.mjs";
5
5
  import { t as CodecTypes } from "./codec-types-COh75Bop-YF2hiOlF.mjs";
6
6
  import "./codec-types-CLxV6VvX.mjs";
7
7
  import { a as jsonColumn, c as textColumn, i as integerColumn, n as blobColumn, o as rawColumn, r as datetimeColumn, s as realColumn, t as bigintColumn } from "./column-types-D4Dmbaa6.mjs";
@@ -1,4 +1,4 @@
1
1
  import { t as SqliteAdapterOptions } from "./types-RJMd2PlL-EuhZF7B6.mjs";
2
2
  import { i as sqliteRawCodecInferer, t as createSqliteAdapter } from "./adapter-xFPDhkod-BsfRQfp6.mjs";
3
- import { n as sqliteAdapterContractContributions, t as sqliteAdapterCapabilities } from "./adapter-rNrGhNM6.mjs";
3
+ import { n as sqliteAdapterContractContributions, t as sqliteAdapterCapabilities } from "./adapter-e4_SMdnY.mjs";
4
4
  export { type SqliteAdapterOptions, createSqliteAdapter, sqliteAdapterCapabilities, sqliteAdapterContractContributions, sqliteRawCodecInferer };
@@ -69,7 +69,7 @@ declare const sqliteAggregateDescriptors: readonly [{
69
69
  readonly operation: "avg";
70
70
  readonly input: {
71
71
  readonly kind: "codec";
72
- readonly codecId: "sql/int@1" | "sql/float@1" | "sqlite/integer@1" | "sqlite/real@1" | "sqlite/bigint@1" | "sqlite/bigintnumber@1";
72
+ readonly codecId: "sql/int@1" | "sql/float@1" | "sqlite/integer@1" | "sqlite/bigint@1" | "sqlite/real@1" | "sqlite/bigintnumber@1";
73
73
  };
74
74
  readonly output: {
75
75
  readonly kind: "codec";
@@ -100,7 +100,7 @@ declare const sqliteAggregateDescriptors: readonly [{
100
100
  readonly operation: "min";
101
101
  readonly input: {
102
102
  readonly kind: "codec";
103
- readonly codecId: "sqlite/blob@1" | "sqlite/datetime@1" | "sqlite/json@1";
103
+ readonly codecId: "sqlite/datetime@1" | "sqlite/json@1" | "sqlite/blob@1";
104
104
  };
105
105
  readonly output: {
106
106
  readonly kind: "self";
@@ -141,7 +141,7 @@ declare const sqliteAggregateDescriptors: readonly [{
141
141
  readonly operation: "max";
142
142
  readonly input: {
143
143
  readonly kind: "codec";
144
- readonly codecId: "sqlite/blob@1" | "sqlite/datetime@1" | "sqlite/json@1";
144
+ readonly codecId: "sqlite/datetime@1" | "sqlite/json@1" | "sqlite/blob@1";
145
145
  };
146
146
  readonly output: {
147
147
  readonly kind: "self";
@@ -161,4 +161,4 @@ declare const sqliteAggregateDescriptors: readonly [{
161
161
  }];
162
162
  //#endregion
163
163
  export { sqliteAggregateDescriptors as t };
164
- //# sourceMappingURL=aggregates-C91ltL9M.d.mts.map
164
+ //# sourceMappingURL=aggregates-CP9IZJhO.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aggregates-C91ltL9M.d.mts","names":[],"sources":["../../../../3-targets/3-targets/sqlite/dist/aggregates.d.mts"],"mappings":";;;;;;cAKc;WACH;WACA;aACE;;WAEF;aACE;aACA;;WAEF;WACA;WACA,OAAO;;WAEP;WACA;aACE;;WAEF;aACE;aACA;;WAEF;WACA;WACA,OAAO;;WAEP,QAAQ;WACR;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;WACA,OAAO;;WAEP,QAAQ;WACR;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;;WAEA,QAAQ;WACR;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;WACA,OAAO;;WAEP;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;WACA,OAAO"}
1
+ {"version":3,"file":"aggregates-CP9IZJhO.d.mts","names":[],"sources":["../../../../3-targets/3-targets/sqlite/dist/aggregates.d.mts"],"mappings":";;;;;;cAKc;WACH;WACA;aACE;;WAEF;aACE;aACA;;WAEF;WACA;WACA,OAAO;;WAEP;WACA;aACE;;WAEF;aACE;aACA;;WAEF;WACA;WACA,OAAO;;WAEP,QAAQ;WACR;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;WACA,OAAO;;WAEP,QAAQ;WACR;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;;WAEA,QAAQ;WACR;WACA;aACE;aACA;;WAEF;aACE;aACA;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;WACA,OAAO;;WAEP;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;;WAEA;WACA;aACE;aACA;;WAEF;aACE;;WAEF;WACA,OAAO"}
@@ -1,5 +1,5 @@
1
1
  import { t as buildTargetDetails } from "./planner-target-details-CIQ789Gc-C5U4yVY9.mjs";
2
- import { C as step } from "./op-factory-call-Dzsgcf3B-B7IaqEjE.mjs";
2
+ import { C as step } from "./op-factory-call-D2bHVPKQ-BdwLsMzU.mjs";
3
3
  import { col as col$1, fn as fn$1, foreignKey, lit as lit$1, primaryKey, unique } from "@prisma/orm-family-sql/relational-core/contract-free";
4
4
  import { placeholder } from "@prisma/orm-framework/errors/migration";
5
5
  import { MigrationCLI } from "@prisma/orm-toolchain/cli/migration-cli";
@@ -45,4 +45,4 @@ function rawSql(op) {
45
45
  //#endregion
46
46
  export { foreignKey as a, primaryKey as c, unique as d, fn$1 as i, rawSql as l, col$1 as n, lit$1 as o, dataTransform as r, placeholder as s, MigrationCLI as t, sql as u };
47
47
 
48
- //# sourceMappingURL=migration-B5NMdcC0.mjs.map
48
+ //# sourceMappingURL=migration-DpfbaaqJ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-B5NMdcC0.mjs","names":[],"sources":["../../../../3-targets/3-targets/sqlite/dist/migration.mjs"],"sourcesContent":["import { t as SqliteMigration } from \"./sqlite-migration-B7LD9iDG.mjs\";\nimport { S as step } from \"./op-factory-call-Dzsgcf3B.mjs\";\nimport { t as buildTargetDetails } from \"./planner-target-details-CIQ789Gc.mjs\";\nimport { placeholder } from \"@internal/errors/migration\";\nimport { col, fn, foreignKey, lit, primaryKey, unique } from \"@internal/sql-relational-core/contract-free\";\nimport { MigrationCLI } from \"@internal/cli/migration-cli\";\nimport { sql } from \"@internal/sql-contract/sql-expression\";\n//#region src/core/migrations/operations/data-transform.ts\n/**\n* User-facing `dataTransform` factory for the SQLite migration authoring\n* surface. Invoked directly inside a `migration.ts` file to supply a\n* user-authored SQL statement that runs with operation class `'data'`.\n*\n* Typical use: the planner emits a `DataTransformCall` stub when a NOT NULL\n* tightening requires a backfill. The rendered `migration.ts` exposes the\n* backfill as a `placeholder(\"…\")` slot the user fills in with an\n* `UPDATE … WHERE col IS NULL` statement. The filled-in `dataTransform(...)`\n* invocation returns a runnable operation the runner executes before the\n* subsequent recreate-table op copies data into the tightened schema.\n*/\nfunction dataTransform(opts) {\n\treturn {\n\t\tid: opts.id,\n\t\tlabel: opts.label,\n\t\tsummary: opts.description,\n\t\toperationClass: \"data\",\n\t\ttarget: {\n\t\t\tid: \"sqlite\",\n\t\t\tdetails: buildTargetDetails(\"table\", opts.table)\n\t\t},\n\t\tprecheck: [],\n\t\texecute: [step(opts.description, opts.run())],\n\t\tpostcheck: []\n\t};\n}\n//#endregion\n//#region src/core/migrations/operations/raw.ts\n/**\n* Identity factory for an already-materialized\n* `SqlMigrationPlanOperation<SqlitePlanTargetDetails>`. Mirrors the Postgres\n* `rawSql` factory: the planner uses this to carry ops produced by SQL-family\n* paths (codec lifecycle hooks, raw-SQL escape hatches) alongside structured\n* call IR without reverse-engineering their shape.\n*/\nfunction rawSql(op) {\n\treturn op;\n}\n//#endregion\nexport { SqliteMigration as Migration, MigrationCLI, col, dataTransform, fn, foreignKey, lit, placeholder, primaryKey, rawSql, sql, unique };\n\n//# sourceMappingURL=migration.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAS,cAAc,MAAM;CAC5B,OAAO;EACN,IAAI,KAAK;EACT,OAAO,KAAK;EACZ,SAAS,KAAK;EACd,gBAAgB;EAChB,QAAQ;GACP,IAAI;GACJ,SAAS,mBAAmB,SAAS,KAAK,KAAK;EAChD;EACA,UAAU,CAAC;EACX,SAAS,CAAC,KAAK,KAAK,aAAa,KAAK,IAAI,CAAC,CAAC;EAC5C,WAAW,CAAC;CACb;AACD;;;;;;;;AAUA,SAAS,OAAO,IAAI;CACnB,OAAO;AACR"}
1
+ {"version":3,"file":"migration-DpfbaaqJ.mjs","names":[],"sources":["../../../../3-targets/3-targets/sqlite/dist/migration.mjs"],"sourcesContent":["import { t as SqliteMigration } from \"./sqlite-migration-BM-4t7pA.mjs\";\nimport { S as step } from \"./op-factory-call-D2bHVPKQ.mjs\";\nimport { t as buildTargetDetails } from \"./planner-target-details-CIQ789Gc.mjs\";\nimport { placeholder } from \"@internal/errors/migration\";\nimport { col, fn, foreignKey, lit, primaryKey, unique } from \"@internal/sql-relational-core/contract-free\";\nimport { MigrationCLI } from \"@internal/cli/migration-cli\";\nimport { sql } from \"@internal/sql-contract/sql-expression\";\n//#region src/core/migrations/operations/data-transform.ts\n/**\n* User-facing `dataTransform` factory for the SQLite migration authoring\n* surface. Invoked directly inside a `migration.ts` file to supply a\n* user-authored SQL statement that runs with operation class `'data'`.\n*\n* Typical use: the planner emits a `DataTransformCall` stub when a NOT NULL\n* tightening requires a backfill. The rendered `migration.ts` exposes the\n* backfill as a `placeholder(\"…\")` slot the user fills in with an\n* `UPDATE … WHERE col IS NULL` statement. The filled-in `dataTransform(...)`\n* invocation returns a runnable operation the runner executes before the\n* subsequent recreate-table op copies data into the tightened schema.\n*/\nfunction dataTransform(opts) {\n\treturn {\n\t\tid: opts.id,\n\t\tlabel: opts.label,\n\t\tsummary: opts.description,\n\t\toperationClass: \"data\",\n\t\ttarget: {\n\t\t\tid: \"sqlite\",\n\t\t\tdetails: buildTargetDetails(\"table\", opts.table)\n\t\t},\n\t\tprecheck: [],\n\t\texecute: [step(opts.description, opts.run())],\n\t\tpostcheck: []\n\t};\n}\n//#endregion\n//#region src/core/migrations/operations/raw.ts\n/**\n* Identity factory for an already-materialized\n* `SqlMigrationPlanOperation<SqlitePlanTargetDetails>`. Mirrors the Postgres\n* `rawSql` factory: the planner uses this to carry ops produced by SQL-family\n* paths (codec lifecycle hooks, raw-SQL escape hatches) alongside structured\n* call IR without reverse-engineering their shape.\n*/\nfunction rawSql(op) {\n\treturn op;\n}\n//#endregion\nexport { SqliteMigration as Migration, MigrationCLI, col, dataTransform, fn, foreignKey, lit, placeholder, primaryKey, rawSql, sql, unique };\n\n//# sourceMappingURL=migration.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAS,cAAc,MAAM;CAC5B,OAAO;EACN,IAAI,KAAK;EACT,OAAO,KAAK;EACZ,SAAS,KAAK;EACd,gBAAgB;EAChB,QAAQ;GACP,IAAI;GACJ,SAAS,mBAAmB,SAAS,KAAK,KAAK;EAChD;EACA,UAAU,CAAC;EACX,SAAS,CAAC,KAAK,KAAK,aAAa,KAAK,IAAI,CAAC,CAAC;EAC5C,WAAW,CAAC;CACb;AACD;;;;;;;;AAUA,SAAS,OAAO,IAAI;CACnB,OAAO;AACR"}
@@ -10,13 +10,13 @@ import { blindCast } from "@prisma/orm-framework/utils/casts";
10
10
  import { assertNever } from "@prisma/orm-framework/utils/internal-error";
11
11
  import "@prisma/orm-family-sql/contract/data-type";
12
12
  import { type } from "arktype";
13
- import { issueOutcome } from "@prisma/orm-framework/components/control";
13
+ import { expectAbsent, expectPresent, issueOutcome } from "@prisma/orm-framework/components/control";
14
14
  import { checkSqlExpressionText, convertedColumnMeta, createSqlTextSources, isUnfilledSlot, requiredColumnMeta, slotSource, sqlOfSlot } from "@prisma/orm-family-sql/family/control";
15
15
  import { RelationalSchemaNodeKind, sqlColumnTypesEqual } from "@prisma/orm-family-sql/schema-ir/types";
16
16
  import { errorMigrationOperationOptionRemoved, unfilledPlaceholderOperation } from "@prisma/orm-framework/errors/migration";
17
17
  import { REFERENTIAL_ACTION_SQL } from "@prisma/orm-family-sql/contract/referential-action-sql";
18
18
  import { TsExpression, jsonToTsSource, tsArraySource, tsObjectSource, tsQuotedTextSource } from "@prisma/orm-framework/ts-render";
19
- //#region ../../../3-targets/3-targets/sqlite/dist/op-factory-call-Dzsgcf3B.mjs
19
+ //#region ../../../3-targets/3-targets/sqlite/dist/op-factory-call-D2bHVPKQ.mjs
20
20
  function foldAsciiLetters(identifier) {
21
21
  return identifier.replace(/[A-Z]/g, (letter) => letter.toLowerCase());
22
22
  }
@@ -26,11 +26,12 @@ function foldAsciiLetters(identifier) {
26
26
  function sqliteIdentifiersCollide(left, right) {
27
27
  return foldAsciiLetters(left) === foldAsciiLetters(right);
28
28
  }
29
- function step(description, sql, params) {
29
+ function step(description, sql, params, expectation) {
30
30
  return {
31
31
  description,
32
32
  sql,
33
- ...ifDefined("params", params)
33
+ ...ifDefined("params", params),
34
+ ...ifDefined("expectation", expectation)
34
35
  };
35
36
  }
36
37
  /** The text a `DdlColumn`'s type ends with when the column is SQLite's inline `INTEGER PRIMARY KEY AUTOINCREMENT`. */
@@ -156,9 +157,9 @@ async function addColumn(tableName, column, lowerer) {
156
157
  id: "sqlite",
157
158
  details: buildTargetDetails("column", column.name, tableName)
158
159
  },
159
- precheck: [step(`ensure column "${column.name}" is missing`, absent.sql, absent.params)],
160
+ precheck: [step(`ensure column "${column.name}" is missing`, absent.sql, absent.params, expectAbsent(`column "${column.name}" on "${tableName}"`))],
160
161
  execute: [step(`add column "${column.name}"`, addColumnExecuteSql(tableName, column, defaultClause))],
161
- postcheck: [step(`verify column "${column.name}" exists`, present.sql, present.params), columnShapeCheck(tableName, {
162
+ postcheck: [step(`verify column "${column.name}" exists`, present.sql, present.params, expectPresent(`column "${column.name}" on "${tableName}"`)), columnShapeCheck(tableName, {
162
163
  name: column.name,
163
164
  typeSql: column.typeSql,
164
165
  notNull: !column.nullable
@@ -181,7 +182,8 @@ async function renameColumn(tableName, fromName, toName, lowerer) {
181
182
  const fromChecks = columnExistsAst(tableName, fromName);
182
183
  const toChecks = columnExistsAst(tableName, toName);
183
184
  const fromPresent = await lowerer.lowerToExecuteRequest(fromChecks.columnPresent());
184
- const toAbsent = await lowerer.lowerToExecuteRequest(sqliteIdentifiersCollide(fromName, toName) ? toChecks.columnAbsent() : columnNameTakenAst(tableName, toName).nameFree());
185
+ const onlyCase = sqliteIdentifiersCollide(fromName, toName);
186
+ const toAbsent = await lowerer.lowerToExecuteRequest(onlyCase ? toChecks.columnAbsent() : columnNameTakenAst(tableName, toName).nameFree());
185
187
  const toPresent = await lowerer.lowerToExecuteRequest(toChecks.columnPresent());
186
188
  const fromAbsent = await lowerer.lowerToExecuteRequest(fromChecks.columnAbsent());
187
189
  return {
@@ -193,9 +195,9 @@ async function renameColumn(tableName, fromName, toName, lowerer) {
193
195
  id: "sqlite",
194
196
  details: buildTargetDetails("column", toName, tableName)
195
197
  },
196
- precheck: [step(`ensure column "${fromName}" exists on "${tableName}"`, fromPresent.sql, fromPresent.params), step(`ensure column "${toName}" does not exist on "${tableName}"`, toAbsent.sql, toAbsent.params)],
198
+ precheck: [step(`ensure column "${fromName}" exists on "${tableName}"`, fromPresent.sql, fromPresent.params, expectPresent(`column "${fromName}" on "${tableName}"`)), step(`ensure column "${toName}" does not exist on "${tableName}"`, toAbsent.sql, toAbsent.params, expectAbsent(onlyCase ? `column "${toName}" on "${tableName}"` : `a column named "${toName}" on "${tableName}" in any case`))],
197
199
  execute: [step(`rename column "${fromName}" on "${tableName}" to "${toName}"`, renameColumnExecuteSql(tableName, fromName, toName))],
198
- postcheck: [step(`verify column "${toName}" exists on "${tableName}"`, toPresent.sql, toPresent.params), step(`verify column "${fromName}" no longer exists on "${tableName}"`, fromAbsent.sql, fromAbsent.params)]
200
+ postcheck: [step(`verify column "${toName}" exists on "${tableName}"`, toPresent.sql, toPresent.params, expectPresent(`column "${toName}" on "${tableName}"`)), step(`verify column "${fromName}" no longer exists on "${tableName}"`, fromAbsent.sql, fromAbsent.params, expectAbsent(`column "${fromName}" on "${tableName}"`))]
199
201
  };
200
202
  }
201
203
  function buildCreateIndexSql(tableName, indexName, columns, unique = false) {
@@ -295,8 +297,8 @@ async function recreateTable(args, lowerer) {
295
297
  details: buildTargetDetails("table", tableName)
296
298
  },
297
299
  precheck: [
298
- step(`ensure table "${tableName}" exists`, tableSteps.present.sql, tableSteps.present.params),
299
- step(`ensure temp table "${tempName}" does not exist`, tempSteps.absent.sql, tempSteps.absent.params),
300
+ step(`ensure table "${tableName}" exists`, tableSteps.present.sql, tableSteps.present.params, expectPresent(`table "${tableName}"`)),
301
+ step(`ensure temp table "${tempName}" does not exist`, tempSteps.absent.sql, tempSteps.absent.params, expectAbsent(`temp table "${tempName}"`)),
300
302
  sourceColumnsCheck(tableName, schemaColumnNames)
301
303
  ],
302
304
  execute: [
@@ -307,8 +309,8 @@ async function recreateTable(args, lowerer) {
307
309
  ...indexStatements
308
310
  ],
309
311
  postcheck: [
310
- step(`verify table "${tableName}" exists`, tableSteps.present.sql, tableSteps.present.params),
311
- step(`verify temp table "${tempName}" is gone`, tempSteps.absent.sql, tempSteps.absent.params),
312
+ step(`verify table "${tableName}" exists`, tableSteps.present.sql, tableSteps.present.params, expectPresent(`table "${tableName}"`)),
313
+ step(`verify temp table "${tempName}" is gone`, tempSteps.absent.sql, tempSteps.absent.params, expectAbsent(`temp table "${tempName}"`)),
312
314
  rebuiltTableCheck(tableName, renderCreateTableSql(tableName, contractTable, defaultClauses)),
313
315
  ...postchecks.flatMap((check) => "sql" in check ? [markedStep(tableName, check)] : defaultPostcheck(tableName, check, clauseByColumn.get(check.columnDefault))),
314
316
  ...contractTable.columns.flatMap((column) => {
@@ -735,13 +737,13 @@ var CreateTableCall = class extends SqliteOpFactoryCallNode {
735
737
  id: "sqlite",
736
738
  details: buildTargetDetails("table", tableName)
737
739
  },
738
- precheck: [step(`ensure table "${tableName}" does not exist`, absent.sql, absent.params)],
740
+ precheck: [step(`ensure table "${tableName}" does not exist`, absent.sql, absent.params, expectAbsent(`table "${tableName}"`))],
739
741
  execute: [{
740
742
  description: `create table "${tableName}"`,
741
743
  sql: statement.sql,
742
744
  params: statement.params ?? []
743
745
  }],
744
- postcheck: [step(`verify table "${tableName}" exists`, present.sql, present.params), tableColumnsCheck(tableName, columnShapesOf(this.columns, this.constraints))]
746
+ postcheck: [step(`verify table "${tableName}" exists`, present.sql, present.params, expectPresent(`table "${tableName}"`)), tableColumnsCheck(tableName, columnShapesOf(this.columns, this.constraints))]
745
747
  };
746
748
  }
747
749
  renderTypeScript() {
@@ -808,9 +810,9 @@ var DropTableCall = class extends SqliteOpFactoryCallNode {
808
810
  id: "sqlite",
809
811
  details: buildTargetDetails("table", this.tableName)
810
812
  },
811
- precheck: [step(`ensure table "${this.tableName}" exists`, present.sql, present.params)],
813
+ precheck: [step(`ensure table "${this.tableName}" exists`, present.sql, present.params, expectPresent(`table "${this.tableName}"`))],
812
814
  execute: [step(`drop table "${this.tableName}"`, `DROP TABLE ${quoteIdentifier(this.tableName)}`)],
813
- postcheck: [step(`verify table "${this.tableName}" is gone`, absent.sql, absent.params)]
815
+ postcheck: [step(`verify table "${this.tableName}" is gone`, absent.sql, absent.params, expectAbsent(`table "${this.tableName}"`))]
814
816
  };
815
817
  }
816
818
  renderTypeScript() {
@@ -878,12 +880,12 @@ var RenameTableCall = class extends SqliteOpFactoryCallNode {
878
880
  details: buildTargetDetails("table", this.tableName)
879
881
  },
880
882
  precheck: [
881
- step(`ensure table "${this.oldTableName}" exists`, fromPresent.sql, fromPresent.params),
882
- step(onlyCase ? `ensure table "${this.tableName}" does not exist` : `ensure no table or index is named "${this.tableName}" in any case`, toAbsent.sql, toAbsent.params),
883
- ...viaAbsent === void 0 ? [] : [step(`ensure table "${viaName}" does not exist (a rename that only changes case passes through this temporary name, because SQLite compares table names without case)`, viaAbsent.sql, viaAbsent.params)]
883
+ step(`ensure table "${this.oldTableName}" exists`, fromPresent.sql, fromPresent.params, expectPresent(`table "${this.oldTableName}"`)),
884
+ step(onlyCase ? `ensure table "${this.tableName}" does not exist` : `ensure no table or index is named "${this.tableName}" in any case`, toAbsent.sql, toAbsent.params, expectAbsent(onlyCase ? `table "${this.tableName}"` : `a table or index named "${this.tableName}" in any case`)),
885
+ ...viaAbsent === void 0 ? [] : [step(`ensure table "${viaName}" does not exist (a rename that only changes case passes through this temporary name, because SQLite compares table names without case)`, viaAbsent.sql, viaAbsent.params, expectAbsent(`table "${viaName}"`))]
884
886
  ],
885
887
  execute: renameTableSteps(this.oldTableName, this.tableName),
886
- postcheck: [step(`verify table "${this.tableName}" exists`, toPresent.sql, toPresent.params), step(`verify table "${this.oldTableName}" no longer exists`, fromAbsent.sql, fromAbsent.params)]
888
+ postcheck: [step(`verify table "${this.tableName}" exists`, toPresent.sql, toPresent.params, expectPresent(`table "${this.tableName}"`)), step(`verify table "${this.oldTableName}" no longer exists`, fromAbsent.sql, fromAbsent.params, expectAbsent(`table "${this.oldTableName}"`))]
887
889
  };
888
890
  }
889
891
  renderTypeScript() {
@@ -1173,9 +1175,9 @@ var DropColumnCall = class extends SqliteOpFactoryCallNode {
1173
1175
  id: "sqlite",
1174
1176
  details: buildTargetDetails("column", this.columnName, this.tableName)
1175
1177
  },
1176
- precheck: [step(`ensure column "${this.columnName}" exists on "${this.tableName}"`, present.sql, present.params)],
1178
+ precheck: [step(`ensure column "${this.columnName}" exists on "${this.tableName}"`, present.sql, present.params, expectPresent(`column "${this.columnName}" on "${this.tableName}"`))],
1177
1179
  execute: [step(`drop column "${this.columnName}" from "${this.tableName}"`, dropColumnExecuteSql(this.tableName, this.columnName))],
1178
- postcheck: [step(`verify column "${this.columnName}" is gone from "${this.tableName}"`, absent.sql, absent.params)]
1180
+ postcheck: [step(`verify column "${this.columnName}" is gone from "${this.tableName}"`, absent.sql, absent.params, expectAbsent(`column "${this.columnName}" on "${this.tableName}"`))]
1179
1181
  };
1180
1182
  }
1181
1183
  renderTypeScript() {
@@ -1222,9 +1224,9 @@ var CreateIndexCall = class extends SqliteOpFactoryCallNode {
1222
1224
  id: "sqlite",
1223
1225
  details: buildTargetDetails("index", this.indexName, this.tableName)
1224
1226
  },
1225
- precheck: [step(`ensure index "${this.indexName}" is missing`, absent.sql, absent.params)],
1227
+ precheck: [step(`ensure index "${this.indexName}" is missing`, absent.sql, absent.params, expectAbsent(`index "${this.indexName}"`))],
1226
1228
  execute: [step(`create index "${this.indexName}"`, buildCreateIndexSql(this.tableName, this.indexName, this.columns))],
1227
- postcheck: [step(`verify index "${this.indexName}" exists`, present.sql, present.params), indexDefinitionCheck(this.tableName, this.indexName, this.columns, false)]
1229
+ postcheck: [step(`verify index "${this.indexName}" exists`, present.sql, present.params, expectPresent(`index "${this.indexName}"`)), indexDefinitionCheck(this.tableName, this.indexName, this.columns, false)]
1228
1230
  };
1229
1231
  }
1230
1232
  renderTypeScript() {
@@ -1269,9 +1271,9 @@ var DropIndexCall = class extends SqliteOpFactoryCallNode {
1269
1271
  id: "sqlite",
1270
1272
  details: buildTargetDetails("index", this.indexName, this.tableName)
1271
1273
  },
1272
- precheck: [step(`ensure index "${this.indexName}" exists`, present.sql, present.params)],
1274
+ precheck: [step(`ensure index "${this.indexName}" exists`, present.sql, present.params, expectPresent(`index "${this.indexName}"`))],
1273
1275
  execute: [step(`drop index "${this.indexName}"`, buildDropIndexSql(this.indexName))],
1274
- postcheck: [step(`verify index "${this.indexName}" is gone`, absent.sql, absent.params)]
1276
+ postcheck: [step(`verify index "${this.indexName}" is gone`, absent.sql, absent.params, expectAbsent(`index "${this.indexName}"`))]
1275
1277
  };
1276
1278
  }
1277
1279
  renderTypeScript() {
@@ -1409,4 +1411,4 @@ function renderPostcheck(postcheck) {
1409
1411
  //#endregion
1410
1412
  export { step as C, sqliteIdentifiersCollide as S, indexReplacementCalls as _, DropColumnCall as a, renameTableSteps as b, INLINE_AUTOINCREMENT_PRIMARY_KEY as c, RenameColumnCall as d, RenameTableCall as f, conversionCopyOf as g, buildRecreateSummary as h, DataTransformCall as i, RawSqlCall as l, buildRecreatePostchecks as m, CreateIndexCall as n, DropIndexCall as o, affinityStorageClasses as p, CreateTableCall as r, DropTableCall as s, AddColumnCall as t, RecreateTableCall as u, isSqliteOpFactoryCall as v, sqliteDefaultToDdlColumnDefault as x, rebuiltTableName as y };
1411
1413
 
1412
- //# sourceMappingURL=op-factory-call-Dzsgcf3B-B7IaqEjE.mjs.map
1414
+ //# sourceMappingURL=op-factory-call-D2bHVPKQ-BdwLsMzU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op-factory-call-D2bHVPKQ-BdwLsMzU.mjs","names":["#written","#slotsSource"],"sources":["../../../../3-targets/3-targets/sqlite/dist/op-factory-call-D2bHVPKQ.mjs"],"sourcesContent":["import { n as sqliteError } from \"./errors-DnR-sMHS.mjs\";\nimport { r as stripOuterParens } from \"./default-normalizer-DGMXypHg.mjs\";\nimport { n as escapeLiteral, r as quoteIdentifier, t as SQLITE_QUOTING } from \"./sql-utils-XGT5Esi2.mjs\";\nimport { a as tableExistsAst, i as indexExistsAst, n as columnExistsAst, o as tableNameTakenAst, r as columnNameTakenAst, t as createTable } from \"./ddl-CX4tAZ-y.mjs\";\nimport { t as buildTargetDetails } from \"./planner-target-details-CIQ789Gc.mjs\";\nimport { DdlColumn, FunctionColumnDefault, LiteralColumnDefault, opaqueSql } from \"@internal/sql-relational-core/ast\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport \"@internal/sql-contract/data-type\";\nimport \"@internal/framework-components/codec\";\nimport { type } from \"arktype\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { assertNever } from \"@internal/utils/internal-error\";\nimport { expectAbsent, expectPresent, issueOutcome } from \"@internal/framework-components/control\";\nimport { checkSqlExpressionText, convertedColumnMeta, createSqlTextSources, isUnfilledSlot, requiredColumnMeta, slotSource, sqlOfSlot } from \"@internal/family-sql/control\";\nimport { RelationalSchemaNodeKind, sqlColumnTypesEqual } from \"@internal/sql-schema-ir/types\";\nimport { errorMigrationOperationOptionRemoved, unfilledPlaceholderOperation } from \"@internal/errors/migration\";\nimport { REFERENTIAL_ACTION_SQL } from \"@internal/sql-contract/referential-action-sql\";\nimport { TsExpression, jsonToTsSource, tsArraySource, tsObjectSource, tsQuotedTextSource } from \"@internal/ts-render\";\n//#region src/core/migrations/identifier-case.ts\nfunction foldAsciiLetters(identifier) {\n\treturn identifier.replace(/[A-Z]/g, (letter) => letter.toLowerCase());\n}\n/**\n* Whether SQLite takes two identifiers for the same name. It compares table and index names without regard to the case of ASCII letters, and compares every other character exactly.\n*/\nfunction sqliteIdentifiersCollide(left, right) {\n\treturn foldAsciiLetters(left) === foldAsciiLetters(right);\n}\n//#endregion\n//#region src/core/migrations/operations/shared.ts\nfunction step(description, sql, params, expectation) {\n\treturn {\n\t\tdescription,\n\t\tsql,\n\t\t...ifDefined(\"params\", params),\n\t\t...ifDefined(\"expectation\", expectation)\n\t};\n}\n/** The text a `DdlColumn`'s type ends with when the column is SQLite's inline `INTEGER PRIMARY KEY AUTOINCREMENT`. */\nconst INLINE_AUTOINCREMENT_PRIMARY_KEY = \" PRIMARY KEY AUTOINCREMENT\";\n/** The DDL default of a contract default: `autoincrement()` is written as part of the column's type instead. */\nfunction sqliteDefaultToDdlColumnDefault(columnDefault) {\n\tif (!columnDefault) return void 0;\n\tswitch (columnDefault.kind) {\n\t\tcase \"literal\": return new LiteralColumnDefault(columnDefault.value);\n\t\tcase \"function\":\n\t\t\tif (columnDefault.expression === \"autoincrement()\") return void 0;\n\t\t\treturn new FunctionColumnDefault(opaqueSql(columnDefault.expression));\n\t\tdefault: {\n\t\t\tconst exhaustive = columnDefault;\n\t\t\treturn assertNever(exhaustive, `sqliteDefaultToDdlColumnDefault: unhandled kind \"${blindCast(exhaustive).kind}\"`);\n\t\t}\n\t}\n}\n/**\n* A column spec an earlier version wrote carries its default as SQL text in `defaultSql`, empty when it has none.\n*/\nfunction refuseEarlierColumnSpecs(operation, tableName, columns) {\n\tconst earlier = columns.find((column) => Object.hasOwn(column, \"defaultSql\"));\n\tif (earlier === void 0) return;\n\tthrow errorMigrationOperationOptionRemoved({\n\t\toperation,\n\t\toption: \"defaultSql\",\n\t\tsubject: `column ${JSON.stringify(earlier.name)} of table ${JSON.stringify(tableName)}`,\n\t\trewrite: \"Write the column's default as `default: { kind: 'literal', value }` or `default: { kind: 'function', expression }`, with the column's `codecRef`, in place of `defaultSql`, and delete an empty `defaultSql`.\",\n\t\tupgradeEntry: \"migration-ts-column-defaults\"\n\t});\n}\n/** The `DEFAULT …` clause the adapter writes for a column spec, `''` when it has none. */\nfunction renderSpecDefault$1(column, tableName, lowerer) {\n\tconst ddlDefault = column.inlineAutoincrementPrimaryKey ? void 0 : sqliteDefaultToDdlColumnDefault(column.default);\n\treturn lowerer.renderColumnDefault(new DdlColumn({\n\t\tname: column.name,\n\t\ttype: column.typeSql,\n\t\t...ifDefined(\"default\", ddlDefault),\n\t\t...ifDefined(\"codecRef\", column.codecRef)\n\t}), tableName);\n}\n/**\n* Renders a single column's inline DDL fragment within a `CREATE TABLE`\n* statement. Honours the `inlineAutoincrementPrimaryKey` flag — SQLite\n* treats `INTEGER PRIMARY KEY AUTOINCREMENT` as a special form that aliases\n* `rowid`, and the column must not carry a `DEFAULT` or repeat `NOT NULL`.\n*/\nfunction renderColumnDefinition(column, defaultClause) {\n\tconst parts = [quoteIdentifier(column.name), column.typeSql];\n\tif (column.inlineAutoincrementPrimaryKey) parts.push(\"PRIMARY KEY AUTOINCREMENT\");\n\telse {\n\t\tif (defaultClause) parts.push(defaultClause);\n\t\tif (!column.nullable) parts.push(\"NOT NULL\");\n\t}\n\treturn parts.join(\" \");\n}\n/**\n* Renders an inline FOREIGN KEY constraint clause for a `CREATE TABLE`\n* body. Every `SqliteForeignKeySpec` is constraint-bearing by construction\n* (`tableSpecFromNode` only ever builds specs from schema-IR FK nodes, which\n* are themselves constraint-only — a non-constraint FK contributes no node).\n*/\nfunction renderForeignKeyClause(fk) {\n\tlet sql = `${fk.name ? `CONSTRAINT ${quoteIdentifier(fk.name)} ` : \"\"}FOREIGN KEY (${fk.columns.map(quoteIdentifier).join(\", \")}) REFERENCES ${quoteIdentifier(fk.references.table)} (${fk.references.columns.map(quoteIdentifier).join(\", \")})`;\n\tif (fk.onDelete !== void 0) sql += ` ON DELETE ${REFERENTIAL_ACTION_SQL[fk.onDelete]}`;\n\tif (fk.onUpdate !== void 0) sql += ` ON UPDATE ${REFERENTIAL_ACTION_SQL[fk.onUpdate]}`;\n\treturn sql;\n}\n//#endregion\n//#region src/core/migrations/operations/structure-checks.ts\nfunction text(value) {\n\treturn `'${escapeLiteral(value)}'`;\n}\nfunction columnRow(column) {\n\treturn `(${text(column.name)}, ${text(column.typeSql.toLowerCase())}, ${column.notNull ? 1 : 0}, ${column.primaryKeyPosition})`;\n}\n/** Checks that the table has exactly these columns, each with its type, nullability and primary key position. */\nfunction tableColumnsCheck(tableName, columns) {\n\tconst info = `pragma_table_info(${text(tableName)})`;\n\treturn {\n\t\tdescription: `verify table \"${tableName}\" has exactly its columns`,\n\t\tsql: `SELECT (SELECT COUNT(*) FROM ${info}) = ${columns.length} AND (SELECT COUNT(*) FROM ${info} WHERE (name, LOWER(type), \"notnull\", pk) IN (VALUES ${columns.map(columnRow).join(\", \")})) = ${columns.length}`\n\t};\n}\n/** Checks the column's type and nullability. */\nfunction columnShapeCheck(tableName, column) {\n\treturn {\n\t\tdescription: `verify column \"${column.name}\" on \"${tableName}\" has type ${column.typeSql} and ${column.notNull ? \"is required\" : \"is optional\"}`,\n\t\tsql: `SELECT COUNT(*) > 0 FROM pragma_table_info(${text(tableName)}) WHERE name = ${text(column.name)} AND LOWER(type) = ${text(column.typeSql.toLowerCase())} AND \"notnull\" = ${column.notNull ? 1 : 0}`\n\t};\n}\n/** Checks that the index is on the table, covers exactly these columns in this order, and is unique or not. */\nfunction indexDefinitionCheck(tableName, indexName, columns, unique) {\n\tconst positions = columns.map((column, seqno) => `(${seqno}, ${text(column)})`).join(\", \");\n\tconst info = `pragma_index_info(${text(indexName)})`;\n\treturn {\n\t\tdescription: `verify index \"${indexName}\" on \"${tableName}\" covers (${columns.join(\", \")})`,\n\t\tsql: `SELECT EXISTS (SELECT 1 FROM pragma_index_list(${text(tableName)}) WHERE name = ${text(indexName)} AND \"unique\" = ${unique ? 1 : 0}) AND (SELECT COUNT(*) FROM ${info}) = ${columns.length} AND (SELECT COUNT(*) FROM ${info} WHERE (seqno, name) IN (VALUES ${positions})) = ${columns.length}`\n\t};\n}\n//#endregion\n//#region src/core/migrations/operations/columns.ts\nfunction addColumnExecuteSql(tableName, column, defaultClause) {\n\treturn [\n\t\t`ALTER TABLE ${quoteIdentifier(tableName)}`,\n\t\t`ADD COLUMN ${quoteIdentifier(column.name)} ${column.typeSql}`,\n\t\tdefaultClause,\n\t\tcolumn.nullable ? \"\" : \"NOT NULL\"\n\t].filter(Boolean).join(\" \");\n}\nfunction dropColumnExecuteSql(tableName, columnName) {\n\treturn `ALTER TABLE ${quoteIdentifier(tableName)} DROP COLUMN ${quoteIdentifier(columnName)}`;\n}\nasync function addColumn(tableName, column, lowerer) {\n\trefuseEarlierColumnSpecs(\"addColumn\", tableName, [column]);\n\tconst defaultClause = await renderSpecDefault$1(column, tableName, lowerer);\n\tconst checks = columnExistsAst(tableName, column.name);\n\tconst absent = await lowerer.lowerToExecuteRequest(checks.columnAbsent());\n\tconst present = await lowerer.lowerToExecuteRequest(checks.columnPresent());\n\treturn {\n\t\tid: `column.${tableName}.${column.name}`,\n\t\tlabel: `Add column ${column.name} on ${tableName}`,\n\t\tsummary: `Adds column ${column.name} on ${tableName}`,\n\t\toperationClass: \"additive\",\n\t\ttarget: {\n\t\t\tid: \"sqlite\",\n\t\t\tdetails: buildTargetDetails(\"column\", column.name, tableName)\n\t\t},\n\t\tprecheck: [step(`ensure column \"${column.name}\" is missing`, absent.sql, absent.params, expectAbsent(`column \"${column.name}\" on \"${tableName}\"`))],\n\t\texecute: [step(`add column \"${column.name}\"`, addColumnExecuteSql(tableName, column, defaultClause))],\n\t\tpostcheck: [step(`verify column \"${column.name}\" exists`, present.sql, present.params, expectPresent(`column \"${column.name}\" on \"${tableName}\"`)), columnShapeCheck(tableName, {\n\t\t\tname: column.name,\n\t\t\ttypeSql: column.typeSql,\n\t\t\tnotNull: !column.nullable\n\t\t})]\n\t};\n}\nfunction renameColumnExecuteSql(tableName, fromName, toName) {\n\treturn `ALTER TABLE ${quoteIdentifier(tableName)} RENAME COLUMN ${quoteIdentifier(fromName)} TO ${quoteIdentifier(toName)}`;\n}\n/**\n* Renames a column. SQLite updates the indexes, foreign keys and triggers that name it, and keeps\n* index names. SQLite takes names that differ only in case for the same name, so the new name\n* must be free whatever its case, except in a rename that only changes case, which SQLite performs\n* in one statement.\n*/\nfunction renameColumnOperationId(tableName, fromName) {\n\treturn `renameColumn.${tableName}.${fromName}`;\n}\nasync function renameColumn(tableName, fromName, toName, lowerer) {\n\tconst fromChecks = columnExistsAst(tableName, fromName);\n\tconst toChecks = columnExistsAst(tableName, toName);\n\tconst fromPresent = await lowerer.lowerToExecuteRequest(fromChecks.columnPresent());\n\tconst onlyCase = sqliteIdentifiersCollide(fromName, toName);\n\tconst toAbsent = await lowerer.lowerToExecuteRequest(onlyCase ? toChecks.columnAbsent() : columnNameTakenAst(tableName, toName).nameFree());\n\tconst toPresent = await lowerer.lowerToExecuteRequest(toChecks.columnPresent());\n\tconst fromAbsent = await lowerer.lowerToExecuteRequest(fromChecks.columnAbsent());\n\treturn {\n\t\tid: renameColumnOperationId(tableName, fromName),\n\t\tlabel: `Rename column ${fromName} on ${tableName} to ${toName}`,\n\t\tsummary: `Renames column ${fromName} on ${tableName} to ${toName}, keeping its values`,\n\t\toperationClass: \"widening\",\n\t\ttarget: {\n\t\t\tid: \"sqlite\",\n\t\t\tdetails: buildTargetDetails(\"column\", toName, tableName)\n\t\t},\n\t\tprecheck: [step(`ensure column \"${fromName}\" exists on \"${tableName}\"`, fromPresent.sql, fromPresent.params, expectPresent(`column \"${fromName}\" on \"${tableName}\"`)), step(`ensure column \"${toName}\" does not exist on \"${tableName}\"`, toAbsent.sql, toAbsent.params, expectAbsent(onlyCase ? `column \"${toName}\" on \"${tableName}\"` : `a column named \"${toName}\" on \"${tableName}\" in any case`))],\n\t\texecute: [step(`rename column \"${fromName}\" on \"${tableName}\" to \"${toName}\"`, renameColumnExecuteSql(tableName, fromName, toName))],\n\t\tpostcheck: [step(`verify column \"${toName}\" exists on \"${tableName}\"`, toPresent.sql, toPresent.params, expectPresent(`column \"${toName}\" on \"${tableName}\"`)), step(`verify column \"${fromName}\" no longer exists on \"${tableName}\"`, fromAbsent.sql, fromAbsent.params, expectAbsent(`column \"${fromName}\" on \"${tableName}\"`))]\n\t};\n}\n//#endregion\n//#region src/core/migrations/planner-ddl-builders.ts\nfunction buildCreateIndexSql(tableName, indexName, columns, unique = false) {\n\treturn `CREATE ${unique ? \"UNIQUE \" : \"\"}INDEX ${quoteIdentifier(indexName)} ON ${quoteIdentifier(tableName)} (${columns.map(quoteIdentifier).join(\", \")})`;\n}\nfunction buildDropIndexSql(indexName) {\n\treturn `DROP INDEX IF EXISTS ${quoteIdentifier(indexName)}`;\n}\n//#endregion\n//#region src/core/migrations/operations/tables.ts\nasync function tableExistsSteps(lowerer, tableName) {\n\tconst checks = tableExistsAst(tableName);\n\treturn {\n\t\tpresent: await lowerer.lowerToExecuteRequest(checks.tablePresent()),\n\t\tabsent: await lowerer.lowerToExecuteRequest(checks.tableAbsent())\n\t};\n}\n/**\n* Renders the body of a `CREATE TABLE <name> ( … )` statement from a flat\n* `SqliteTableSpec`. SQLite's `INTEGER PRIMARY KEY AUTOINCREMENT` form is\n* inline on the column; the table-level PRIMARY KEY clause is emitted only\n* when no column carries `inlineAutoincrementPrimaryKey`.\n*/\nfunction renderCreateTableSql(tableName, spec, defaultClauses) {\n\tconst columnDefs = spec.columns.map((column, index) => renderColumnDefinition(column, defaultClauses[index] ?? \"\"));\n\tconst constraintDefs = [];\n\tconst hasInlinePk = spec.columns.some((c) => c.inlineAutoincrementPrimaryKey);\n\tif (spec.primaryKey && !hasInlinePk) constraintDefs.push(`PRIMARY KEY (${spec.primaryKey.columns.map(quoteIdentifier).join(\", \")})`);\n\tfor (const u of spec.uniques ?? []) {\n\t\tconst name = u.name ? `CONSTRAINT ${quoteIdentifier(u.name)} ` : \"\";\n\t\tconstraintDefs.push(`${name}UNIQUE (${u.columns.map(quoteIdentifier).join(\", \")})`);\n\t}\n\tfor (const fk of spec.foreignKeys ?? []) {\n\t\tconst clause = renderForeignKeyClause(fk);\n\t\tif (clause) constraintDefs.push(clause);\n\t}\n\tconst allDefs = [...columnDefs, ...constraintDefs];\n\treturn `CREATE TABLE ${quoteIdentifier(tableName)} (\\n ${allDefs.join(\",\\n \")}\\n)`;\n}\nfunction renameTableViaName(toName) {\n\treturn `_prisma_rename_${toName}`;\n}\nfunction renameChangesOnlyCase(fromName, toName) {\n\treturn sqliteIdentifiersCollide(fromName, toName);\n}\n/**\n* SQLite takes names that differ only in the case of ASCII letters for the\n* same name, so such a rename (`userProfile` to `UserProfile`) is refused as\n* \"already exists\" when done in one statement. It goes through a temporary name.\n*/\nfunction renameTableSteps(fromName, toName) {\n\tconst from = quoteIdentifier(fromName);\n\tconst to = quoteIdentifier(toName);\n\tif (!renameChangesOnlyCase(fromName, toName)) return [step(`rename table \"${fromName}\" to \"${toName}\"`, `ALTER TABLE ${from} RENAME TO ${to}`)];\n\tconst viaName = renameTableViaName(toName);\n\tconst via = quoteIdentifier(viaName);\n\treturn [step(`rename table \"${fromName}\" to \"${viaName}\" (SQLite table names are case-insensitive)`, `ALTER TABLE ${from} RENAME TO ${via}`), step(`rename table \"${viaName}\" to \"${toName}\"`, `ALTER TABLE ${via} RENAME TO ${to}`)];\n}\n/** The table a rebuild of `tableName` creates, copies into, and renames to `tableName`. */\nfunction rebuiltTableName(tableName) {\n\treturn `_prisma_new_${tableName}`;\n}\nasync function recreateTable(args, lowerer) {\n\tconst { tableName, contractTable, schemaColumnNames, indexes, summary, postchecks, operationClass, copyExpressions = {}, temporaryValues = {}, retypedColumns = [] } = args;\n\trefuseEarlierColumnSpecs(\"recreateTable\", tableName, contractTable.columns);\n\tconst tempName = rebuiltTableName(tableName);\n\tconst liveSet = new Set(schemaColumnNames);\n\tconst convertedBy = (column) => Object.hasOwn(copyExpressions, column) ? copyExpressions[column] : void 0;\n\tconst copiedFrom = (column) => convertedBy(column) ?? (Object.hasOwn(temporaryValues, column) ? temporaryValues[column] : void 0);\n\tconst sharedColumns = contractTable.columns.filter((c) => liveSet.has(c.name) || copiedFrom(c.name) !== void 0).map((c) => c.name);\n\tconst columnList = sharedColumns.map(quoteIdentifier).join(\", \");\n\tconst selectList = sharedColumns.map((column) => copiedFrom(column) ?? quoteIdentifier(column)).join(\", \");\n\tconst indexStatements = indexes.map((idx) => ({\n\t\tdescription: `recreate index \"${idx.name}\" on \"${tableName}\"`,\n\t\tsql: buildCreateIndexSql(tableName, idx.name, idx.columns)\n\t}));\n\tconst conversions = Object.fromEntries(sharedColumns.flatMap((column) => {\n\t\tconst expression = convertedBy(column);\n\t\treturn expression === void 0 ? [] : [[column, expression]];\n\t}));\n\tconst copyStep = sharedColumns.length > 0 ? [{\n\t\t...step(`copy data from \"${tableName}\" to \"${tempName}\"`, `INSERT INTO ${quoteIdentifier(tempName)} (${columnList}) SELECT ${selectList} FROM ${quoteIdentifier(tableName)}`),\n\t\t...Object.keys(conversions).length === 0 ? {} : { meta: { conversionCopy: {\n\t\t\ttable: tableName,\n\t\t\texpressions: conversions\n\t\t} } }\n\t}] : [];\n\tconst defaultClauses = await renderSpecDefaults(contractTable, tableName, lowerer);\n\tconst clauseByColumn = new Map(contractTable.columns.map((column, index) => [column.name, defaultClauses[index] ?? \"\"]));\n\tconst tableSteps = await tableExistsSteps(lowerer, tableName);\n\tconst tempSteps = await tableExistsSteps(lowerer, tempName);\n\treturn {\n\t\tid: `recreateTable.${tableName}`,\n\t\tlabel: `Recreate table ${tableName}`,\n\t\tsummary,\n\t\toperationClass,\n\t\ttarget: {\n\t\t\tid: \"sqlite\",\n\t\t\tdetails: buildTargetDetails(\"table\", tableName)\n\t\t},\n\t\tprecheck: [\n\t\t\tstep(`ensure table \"${tableName}\" exists`, tableSteps.present.sql, tableSteps.present.params, expectPresent(`table \"${tableName}\"`)),\n\t\t\tstep(`ensure temp table \"${tempName}\" does not exist`, tempSteps.absent.sql, tempSteps.absent.params, expectAbsent(`temp table \"${tempName}\"`)),\n\t\t\tsourceColumnsCheck(tableName, schemaColumnNames)\n\t\t],\n\t\texecute: [\n\t\t\tstep(`create new table \"${tempName}\" with desired schema`, renderCreateTableSql(tempName, contractTable, defaultClauses)),\n\t\t\t...copyStep,\n\t\t\tstep(`drop old table \"${tableName}\"`, `DROP TABLE ${quoteIdentifier(tableName)}`),\n\t\t\tstep(`rename \"${tempName}\" to \"${tableName}\"`, `ALTER TABLE ${quoteIdentifier(tempName)} RENAME TO ${quoteIdentifier(tableName)}`),\n\t\t\t...indexStatements\n\t\t],\n\t\tpostcheck: [\n\t\t\tstep(`verify table \"${tableName}\" exists`, tableSteps.present.sql, tableSteps.present.params, expectPresent(`table \"${tableName}\"`)),\n\t\t\tstep(`verify temp table \"${tempName}\" is gone`, tempSteps.absent.sql, tempSteps.absent.params, expectAbsent(`temp table \"${tempName}\"`)),\n\t\t\trebuiltTableCheck(tableName, renderCreateTableSql(tableName, contractTable, defaultClauses)),\n\t\t\t...postchecks.flatMap((check) => \"sql\" in check ? [markedStep(tableName, check)] : defaultPostcheck(tableName, check, clauseByColumn.get(check.columnDefault))),\n\t\t\t...contractTable.columns.flatMap((column) => {\n\t\t\t\tconst by = Object.hasOwn(conversions, column.name) ? \"conversion\" : retypedColumns.includes(column.name) ? \"cast\" : void 0;\n\t\t\t\treturn by === void 0 ? [] : [{\n\t\t\t\t\t...storageClassCheck(tableName, column),\n\t\t\t\t\tmeta: convertedColumnMeta(tableName, column.name, by)\n\t\t\t\t}];\n\t\t\t})\n\t\t]\n\t};\n}\n/**\n* Checks that the table has exactly the columns the rebuild reads, the ones it copies and the ones it\n* leaves out. The rebuild copies only the columns it knows, so on a table with another column, such\n* as one a later migration added, it would drop that column and its values.\n*/\nfunction sourceColumnsCheck(tableName, columns) {\n\tconst info = `pragma_table_info('${escapeLiteral(tableName)}')`;\n\tconst named = columns.length === 0 ? \"\" : ` AND (SELECT COUNT(*) FROM ${info} WHERE name IN (${quoteSqlList(columns)})) = ${columns.length}`;\n\treturn {\n\t\tdescription: `ensure table \"${tableName}\" has exactly the columns the rebuild copies or leaves out (${columns.join(\", \")})`,\n\t\tsql: `SELECT (SELECT COUNT(*) FROM ${info}) = ${columns.length}${named}`\n\t};\n}\n/**\n* Checks that the table is stored as the statement the rebuild writes. SQLite keeps a table's\n* `CREATE TABLE` text as written, and renaming the rebuilt table only replaces its name, so this holds\n* once the rebuild ran and not before, whatever text an earlier table had. It is the only check of\n* what SQLite keeps in that text alone, such as `AUTOINCREMENT`.\n*/\nfunction rebuiltTableCheck(tableName, statement) {\n\treturn {\n\t\tdescription: `verify \"${tableName}\" is stored as the rebuilt table`,\n\t\tsql: `SELECT (SELECT sql FROM sqlite_master WHERE type = 'table' AND name = '${escapeLiteral(tableName)}') = '${escapeLiteral(statement)}'`\n\t};\n}\nfunction markedStep(tableName, check) {\n\tconst { requiredColumn, ...step } = check;\n\tconst meta = { ...requiredColumn === void 0 ? {} : requiredColumnMeta(tableName, requiredColumn.column, requiredColumn.reason) };\n\treturn Object.keys(meta).length === 0 ? step : {\n\t\t...step,\n\t\tmeta\n\t};\n}\n/**\n* The storage classes SQLite keeps a value in once a column of `typeSql` has taken it: the column's\n* type affinity converts what it can, so a value of another class is one it could not convert.\n* See https://www.sqlite.org/datatype3.html#determination_of_column_affinity.\n*/\nfunction affinityStorageClasses(typeSql) {\n\tconst declared = typeSql.toUpperCase();\n\tif (declared.includes(\"INT\")) return [\"integer\"];\n\tif ([\n\t\t\"CHAR\",\n\t\t\"CLOB\",\n\t\t\"TEXT\"\n\t].some((part) => declared.includes(part))) return [\"text\"];\n\tif (declared === \"\" || declared.includes(\"BLOB\")) return [\"blob\"];\n\tif ([\n\t\t\"REAL\",\n\t\t\"FLOA\",\n\t\t\"DOUB\"\n\t].some((part) => declared.includes(part))) return [\"real\"];\n\treturn [\"integer\", \"real\"];\n}\n/**\n* The check that the copy into a rebuilt table converted every value of a retyped column to the\n* column's new type. SQLite keeps a value it cannot convert in its old storage class, so a value of\n* any other class than the column's affinity keeps fails the check.\n*/\nfunction storageClassCheck(tableName, column) {\n\tconst classes = [\"null\", ...affinityStorageClasses(column.typeSql)].map((storageClass) => `'${storageClass}'`).join(\", \");\n\treturn {\n\t\tdescription: `verify every value of \"${column.name}\" on \"${tableName}\" is stored as ${column.typeSql}`,\n\t\tsql: `SELECT NOT EXISTS (SELECT 1 FROM ${quoteIdentifier(tableName)} WHERE typeof(${quoteIdentifier(column.name)}) NOT IN (${classes}))`\n\t};\n}\nconst ConversionCopyMeta = type({ conversionCopy: {\n\ttable: \"string\",\n\texpressions: \"Record<string, string>\"\n} });\n/**\n* The table a rebuild's copy step reads and the copy expression of each column its conversions\n* convert, when the step converts any: an error of the step may be an error of one of them.\n*/\nfunction conversionCopyOf(step) {\n\tconst meta = ConversionCopyMeta(step.meta ?? {});\n\treturn meta instanceof type.errors ? void 0 : meta.conversionCopy;\n}\nfunction renderSpecDefaults(spec, tableName, lowerer) {\n\treturn Promise.all(spec.columns.map((column) => renderSpecDefault$1(column, tableName, lowerer)));\n}\n/**\n* Checks the column's default is the text of its `DEFAULT …` clause. SQLite's\n* `pragma_table_info.dflt_value` strips the outer parentheses of an expression\n* default, so `(strftime('%Y-%m-%dT%H:%M:%fZ','now'))` is stored as `strftime('%Y-%m-%dT%H:%M:%fZ','now')`; they are\n* stripped here too.\n*/\nfunction defaultPostcheck(tableName, check, clause) {\n\tif (clause === void 0 || !clause.startsWith(\"DEFAULT \")) return [];\n\tconst expectedRaw = stripOuterParens(clause.slice(8));\n\treturn [{\n\t\tdescription: check.description,\n\t\tsql: `SELECT COUNT(*) > 0 FROM pragma_table_info('${escapeLiteral(tableName)}') WHERE name = '${escapeLiteral(check.columnDefault)}' AND dflt_value = '${escapeLiteral(expectedRaw)}'`\n\t}];\n}\n/**\n* Build a one-line summary of a recreate-table operation from the schema-diff\n* issues that triggered it. Lives next to `recreateTable` so the planner\n* (which has the issues) can produce the same description the factory\n* used to build inline. Keeping the formatting target-side keeps\n* `RecreateTableCall` issue-free at the IR layer. `SchemaDiffIssue` carries\n* no rendered message, so this renders one from each issue's path.\n*/\nfunction buildRecreateSummary(tableName, issues) {\n\treturn `Recreates table ${tableName} to apply schema changes: ${issues.map((i) => i.path.join(\"/\")).join(\"; \")}`;\n}\nfunction nodeKindOf(issue) {\n\tconst node = issue.expected ?? issue.actual;\n\tif (node === void 0) return void 0;\n\treturn blindCast(node).nodeKind;\n}\n/**\n* Returns the columns the contract expects as the table's primary key. Picks\n* up SQLite's inline `INTEGER PRIMARY KEY AUTOINCREMENT` form when no\n* explicit `primaryKey` clause is set on the spec.\n*/\nfunction expectedPrimaryKeyColumns(spec) {\n\tif (spec.primaryKey) return spec.primaryKey.columns;\n\tconst inlinePk = spec.columns.find((c) => c.inlineAutoincrementPrimaryKey);\n\treturn inlinePk ? [inlinePk.name] : [];\n}\n/** The text `pragma_foreign_key_list` reports for a referential action; SQLite reads an absent action as `NO ACTION`. */\nfunction referentialActionText(action) {\n\treturn REFERENTIAL_ACTION_SQL[action ?? \"noAction\"];\n}\nfunction quoteSqlList(values) {\n\treturn values.map((v) => `'${escapeLiteral(v)}'`).join(\", \");\n}\n/**\n* A condition on the index aliased `l`: it covers exactly these columns. Order is not checked, because SQLite identifies a unique index by its column set.\n*/\nfunction indexCoversExactly(columns) {\n\treturn `(SELECT COUNT(*) FROM pragma_index_info(l.name)) = ${columns.length} AND (SELECT COUNT(*) FROM pragma_index_info(l.name) WHERE name IN (${quoteSqlList(columns)})) = ${columns.length}`;\n}\nfunction columnNameFromNode(issue) {\n\tconst node = issue.expected ?? issue.actual;\n\tif (node === void 0) return void 0;\n\treturn blindCast(node).name;\n}\n/**\n* A column-default issue's own node has no back-reference to its owning\n* column — it's a transient child built by `SqlColumnIR.children()`. The\n* column's id (`column:<name>`) is always the diff path's second-to-last\n* segment for a default issue (`[..., tableId, columnId, 'default']`), so\n* the name is recovered from the path rather than the node.\n*/\nfunction columnNameFromDefaultIssuePath(issue) {\n\tconst columnId = issue.path[issue.path.length - 2];\n\tif (columnId === void 0) return void 0;\n\treturn columnId.startsWith(\"column:\") ? columnId.slice(7) : columnId;\n}\n/**\n* Compares the declared type with `typeSql`: exactly for a data type named by its catalog text, as\n* verify compares it (ADR 273), and without case otherwise.\n*/\nfunction declaredTypeMatches(expected, typeSql) {\n\treturn expected.catalogText !== void 0 ? `type = '${escapeLiteral(typeSql)}'` : `LOWER(type) = '${escapeLiteral(typeSql.toLowerCase())}'`;\n}\n/**\n* Per-issue postchecks verifying the recreated table's shape against the\n* expected spec. Column-level issues (`sql-column` `not-equal`,\n* `sql-column-default` any reason) emit one targeted check each;\n* constraint-level issues (`sql-primary-key`, `sql-unique`, `sql-foreign-key`,\n* any reason) emit one `pragma_*`-driven check per declared constraint in the\n* expected spec, so a recreated table with the right columns but the wrong\n* PK / unique / FK shape fails the postcheck instead of passing silently.\n* Exported so the planner can pre-build the list at construction time and\n* `RecreateTableCall` doesn't have to carry `SchemaDiffIssue` objects through\n* to render time.\n*/\nfunction buildRecreatePostchecks(tableName, issues, spec, copiedColumns = /* @__PURE__ */ new Set(), backfilledColumns = /* @__PURE__ */ new Set()) {\n\tconst checks = [];\n\tconst t = escapeLiteral(tableName);\n\tconst byName = new Map(spec.columns.map((c) => [c.name, c]));\n\tlet hasPkIssue = false;\n\tlet hasUniqueIssue = false;\n\tlet hasFkIssue = false;\n\tfor (const issue of issues) {\n\t\tconst nodeKind = nodeKindOf(issue);\n\t\tif (nodeKind === RelationalSchemaNodeKind.column && issueOutcome(issue) === \"not-found\") {\n\t\t\tconst columnName = columnNameFromNode(issue);\n\t\t\tconst column = columnName === void 0 ? void 0 : byName.get(columnName);\n\t\t\tif (columnName === void 0 || column === void 0) continue;\n\t\t\tconst takesNoValue = !column.nullable && column.default === void 0 && !copiedColumns.has(columnName);\n\t\t\tchecks.push({\n\t\t\t\tdescription: `verify \"${columnName}\" nullability on \"${tableName}\"`,\n\t\t\t\tsql: `SELECT COUNT(*) > 0 FROM pragma_table_info('${t}') WHERE name = '${escapeLiteral(columnName)}' AND \"notnull\" = ${column.nullable ? 0 : 1}`,\n\t\t\t\t...backfilledColumns.has(columnName) ? { requiredColumn: {\n\t\t\t\t\tcolumn: columnName,\n\t\t\t\t\treason: \"backfillMissedRows\"\n\t\t\t\t} } : takesNoValue ? { requiredColumn: {\n\t\t\t\t\tcolumn: columnName,\n\t\t\t\t\treason: \"newField\"\n\t\t\t\t} } : {}\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (nodeKind === RelationalSchemaNodeKind.column && issueOutcome(issue) === \"not-equal\") {\n\t\t\tconst columnName = columnNameFromNode(issue);\n\t\t\tif (columnName === void 0) continue;\n\t\t\tconst c = escapeLiteral(columnName);\n\t\t\tconst expected = blindCast(issue.expected);\n\t\t\tconst actual = blindCast(issue.actual);\n\t\t\tif (expected.nullable !== actual.nullable) checks.push({\n\t\t\t\tdescription: `verify \"${columnName}\" nullability on \"${tableName}\"`,\n\t\t\t\tsql: `SELECT COUNT(*) > 0 FROM pragma_table_info('${t}') WHERE name = '${c}' AND \"notnull\" = ${expected.nullable ? 0 : 1}`,\n\t\t\t\t...expected.nullable ? {} : { requiredColumn: {\n\t\t\t\t\tcolumn: columnName,\n\t\t\t\t\treason: backfilledColumns.has(columnName) ? \"backfillMissedRows\" : \"nullValues\"\n\t\t\t\t} }\n\t\t\t});\n\t\t\tif (!sqlColumnTypesEqual(expected, actual)) {\n\t\t\t\tconst colSpec = byName.get(columnName);\n\t\t\t\tif (colSpec) checks.push({\n\t\t\t\t\tdescription: `verify \"${columnName}\" type on \"${tableName}\"`,\n\t\t\t\t\tsql: `SELECT COUNT(*) > 0 FROM pragma_table_info('${t}') WHERE name = '${c}' AND ${declaredTypeMatches(expected, colSpec.typeSql)}`\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (nodeKind === RelationalSchemaNodeKind.columnDefault) {\n\t\t\tconst columnName = columnNameFromDefaultIssuePath(issue);\n\t\t\tif (columnName === void 0) continue;\n\t\t\tconst c = escapeLiteral(columnName);\n\t\t\tif (issueOutcome(issue) === \"not-expected\") {\n\t\t\t\tchecks.push({\n\t\t\t\t\tdescription: `verify \"${columnName}\" has no default on \"${tableName}\"`,\n\t\t\t\t\tsql: `SELECT COUNT(*) > 0 FROM pragma_table_info('${t}') WHERE name = '${c}' AND dflt_value IS NULL`\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (byName.get(columnName)?.default !== void 0) checks.push({\n\t\t\t\tdescription: `verify \"${columnName}\" default on \"${tableName}\"`,\n\t\t\t\tcolumnDefault: columnName\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (nodeKind === RelationalSchemaNodeKind.primaryKey) hasPkIssue = true;\n\t\tif (nodeKind === RelationalSchemaNodeKind.unique) hasUniqueIssue = true;\n\t\tif (nodeKind === RelationalSchemaNodeKind.foreignKey) hasFkIssue = true;\n\t}\n\tif (hasPkIssue) {\n\t\tconst pkColumns = expectedPrimaryKeyColumns(spec);\n\t\tconst colCount = pkColumns.length;\n\t\tif (colCount === 0) checks.push({\n\t\t\tdescription: `verify \"${tableName}\" has no primary key`,\n\t\t\tsql: `SELECT (SELECT COUNT(*) FROM pragma_table_info('${t}') WHERE pk > 0) = 0`\n\t\t});\n\t\telse checks.push({\n\t\t\tdescription: `verify primary key on \"${tableName}\"`,\n\t\t\tsql: `SELECT (SELECT COUNT(*) FROM pragma_table_info('${t}') WHERE pk > 0) = ${colCount} AND (SELECT COUNT(*) FROM pragma_table_info('${t}') WHERE pk > 0 AND name IN (${quoteSqlList(pkColumns)})) = ${colCount}`\n\t\t});\n\t}\n\tif (hasUniqueIssue) for (const u of spec.uniques ?? []) {\n\t\tconst description = u.name ? `verify unique constraint \"${u.name}\" on \"${tableName}\"` : `verify unique constraint (${u.columns.join(\", \")}) on \"${tableName}\"`;\n\t\tchecks.push({\n\t\t\tdescription,\n\t\t\tsql: `SELECT EXISTS (SELECT 1 FROM pragma_index_list('${t}') l WHERE l.\"unique\" = 1 AND ${indexCoversExactly(u.columns)})`\n\t\t});\n\t}\n\tif (hasUniqueIssue) {\n\t\tconst expected = (spec.uniques ?? []).map((u) => `(${indexCoversExactly(u.columns)})`);\n\t\tchecks.push({\n\t\t\tdescription: `verify \"${tableName}\" has no unique constraint besides the expected ones`,\n\t\t\tsql: `SELECT NOT EXISTS (SELECT 1 FROM pragma_index_list('${t}') l WHERE l.origin = 'u' AND NOT (${expected.length === 0 ? \"0\" : expected.join(\" OR \")}))`\n\t\t});\n\t}\n\tif (hasFkIssue) {\n\t\tfor (const fk of spec.foreignKeys ?? []) {\n\t\t\tconst refTable = escapeLiteral(fk.references.table);\n\t\t\tconst colCount = fk.columns.length;\n\t\t\tconst tuples = fk.columns.map((from, i) => {\n\t\t\t\tconst to = fk.references.columns[i] ?? from;\n\t\t\t\treturn `('${escapeLiteral(from)}', '${escapeLiteral(to)}')`;\n\t\t\t}).join(\", \");\n\t\t\tconst description = `verify foreign key (${fk.columns.join(\", \")}) → ${fk.references.table}(${fk.references.columns.join(\", \")}) on \"${tableName}\"`;\n\t\t\tchecks.push({\n\t\t\t\tdescription,\n\t\t\t\tsql: `SELECT EXISTS (SELECT 1 FROM pragma_foreign_key_list('${t}') f WHERE f.\"table\" = '${refTable}' AND f.on_delete = '${referentialActionText(fk.onDelete)}' AND f.on_update = '${referentialActionText(fk.onUpdate)}' GROUP BY f.id HAVING COUNT(*) = ${colCount} AND SUM(CASE WHEN (f.\"from\", f.\"to\") IN (${tuples}) THEN 1 ELSE 0 END) = ${colCount})`\n\t\t\t});\n\t\t}\n\t\tconst expected = spec.foreignKeys?.length ?? 0;\n\t\tchecks.push({\n\t\t\tdescription: `verify \"${tableName}\" has exactly ${expected} foreign keys`,\n\t\t\tsql: `SELECT (SELECT COUNT(DISTINCT id) FROM pragma_foreign_key_list('${t}')) = ${expected}`\n\t\t});\n\t}\n\treturn checks;\n}\n//#endregion\n//#region src/core/migrations/op-factory-call.ts\nconst TARGET_MIGRATION_MODULE = \"@internal/sqlite/migration\";\nvar SqliteOpFactoryCallNode = class extends TsExpression {\n\t/** The operations this call lowers to, in order: one, unless the call carries companions. */\n\ttoOps(lowerer) {\n\t\treturn [this.toOp(lowerer)];\n\t}\n\timportRequirements() {\n\t\treturn [{\n\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\tsymbol: this.factoryName\n\t\t}];\n\t}\n\tfreeze() {\n\t\tObject.freeze(this);\n\t}\n};\n/** Whether `call` is one of this target's calls, which lower through {@link SqliteOpFactoryCallNode.toOps}. */\nfunction isSqliteOpFactoryCall(call) {\n\treturn call instanceof SqliteOpFactoryCallNode;\n}\nfunction renderDdlColumnDefault(def, sql) {\n\tif (!def) return \"\";\n\tif (def.kind === \"literal\") return `lit(${jsonToTsSource(def.value)})`;\n\treturn `fn(${sql.source(def.expression.text)})`;\n}\nfunction renderDdlColumnAsTsCall(column, sql) {\n\tconst opts = [];\n\tif (column.notNull) opts.push(\"notNull: true\");\n\tif (column.primaryKey) opts.push(\"primaryKey: true\");\n\tif (column.default) opts.push(`default: ${renderDdlColumnDefault(column.default, sql)}`);\n\tif (column.codecRef) opts.push(`codecRef: ${jsonToTsSource(column.codecRef)}`);\n\tconst optsStr = opts.length > 0 ? `, { ${opts.join(\", \")} }` : \"\";\n\treturn `col(${jsonToTsSource(column.name)}, ${jsonToTsSource(column.type)}${optsStr})`;\n}\nfunction renderDdlConstraintAsTsCall(constraint) {\n\tswitch (constraint.kind) {\n\t\tcase \"primary-key\": {\n\t\t\tconst nameOpt = constraint.name ? `, { name: ${jsonToTsSource(constraint.name)} }` : \"\";\n\t\t\treturn `primaryKey(${jsonToTsSource(constraint.columns)}${nameOpt})`;\n\t\t}\n\t\tcase \"foreign-key\": {\n\t\t\tconst opts = [];\n\t\t\tif (constraint.name) opts.push(`name: ${jsonToTsSource(constraint.name)}`);\n\t\t\tif (constraint.onDelete) opts.push(`onDelete: ${jsonToTsSource(constraint.onDelete)}`);\n\t\t\tif (constraint.onUpdate) opts.push(`onUpdate: ${jsonToTsSource(constraint.onUpdate)}`);\n\t\t\tconst optsStr = opts.length > 0 ? `, { ${opts.join(\", \")} }` : \"\";\n\t\t\treturn `foreignKey(${jsonToTsSource(constraint.columns)}, ${jsonToTsSource(constraint.refTable)}, ${jsonToTsSource(constraint.refColumns)}${optsStr})`;\n\t\t}\n\t\tcase \"unique\": {\n\t\t\tconst nameOpt = constraint.name ? `, { name: ${jsonToTsSource(constraint.name)} }` : \"\";\n\t\t\treturn `unique(${jsonToTsSource(constraint.columns)}${nameOpt})`;\n\t\t}\n\t\tcase \"check-expression\": throw sqliteError(\"CONTRACT.CONSTRAINT_INVALID\", `The SQLite target does not support CHECK constraints (constraint \"${constraint.name}\"). The \"checkConstraint\" capability is Postgres-only — remove the \"@@check\" / \"check()\" declaration, or target Postgres.`, { meta: { constraintName: constraint.name } });\n\t}\n}\nfunction constraintImportSymbols(constraints) {\n\tif (!constraints || constraints.length === 0) return [];\n\tconst symbols = /* @__PURE__ */ new Set();\n\tfor (const c of constraints) if (c.kind === \"primary-key\") symbols.add(\"primaryKey\");\n\telse if (c.kind === \"foreign-key\") symbols.add(\"foreignKey\");\n\telse if (c.kind === \"unique\") symbols.add(\"unique\");\n\treturn [...symbols];\n}\nfunction defaultImportSymbols(columns) {\n\tconst symbols = /* @__PURE__ */ new Set();\n\tfor (const col of columns) if (col.default?.kind === \"literal\") symbols.add(\"lit\");\n\telse if (col.default?.kind === \"function\") symbols.add(\"fn\");\n\treturn [...symbols];\n}\nfunction columnShapesOf(columns, constraints) {\n\tconst primaryKey = constraints?.find((constraint) => constraint.kind === \"primary-key\");\n\treturn columns.map((column) => {\n\t\tif (column.type.endsWith(\" PRIMARY KEY AUTOINCREMENT\")) return {\n\t\t\tname: column.name,\n\t\t\ttypeSql: column.type.slice(0, -26),\n\t\t\tnotNull: false,\n\t\t\tprimaryKeyPosition: 1\n\t\t};\n\t\treturn {\n\t\t\tname: column.name,\n\t\t\ttypeSql: column.type,\n\t\t\tnotNull: column.notNull === true,\n\t\t\tprimaryKeyPosition: column.primaryKey ? 1 : (primaryKey?.columns.indexOf(column.name) ?? -1) + 1\n\t\t};\n\t});\n}\nvar CreateTableCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"createTable\";\n\toperationClass = \"additive\";\n\ttableName;\n\tcolumns;\n\tconstraints;\n\tlabel;\n\tconstructor(tableName, columns, constraints) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.columns = Object.freeze([...columns]);\n\t\tthis.constraints = constraints ? Object.freeze([...constraints]) : void 0;\n\t\tthis.label = `Create table ${tableName}`;\n\t\tthis.freeze();\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `CreateTableCall.toOp: a DDL lowerer is required on the SQLite planner path (table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName\n\t\t} });\n\t\tconst ddlNode = createTable({\n\t\t\ttable: this.tableName,\n\t\t\tcolumns: this.columns,\n\t\t\t...ifDefined(\"constraints\", this.constraints)\n\t\t});\n\t\tconst statement = await lowerer.lowerToExecuteRequest(ddlNode);\n\t\tconst tableName = this.tableName;\n\t\tconst tableChecks = tableExistsAst(tableName);\n\t\tconst absent = await lowerer.lowerToExecuteRequest(tableChecks.tableAbsent());\n\t\tconst present = await lowerer.lowerToExecuteRequest(tableChecks.tablePresent());\n\t\treturn {\n\t\t\tid: `table.${tableName}`,\n\t\t\tlabel: `Create table ${tableName}`,\n\t\t\tsummary: `Creates table ${tableName} with required columns`,\n\t\t\toperationClass: \"additive\",\n\t\t\ttarget: {\n\t\t\t\tid: \"sqlite\",\n\t\t\t\tdetails: buildTargetDetails(\"table\", tableName)\n\t\t\t},\n\t\t\tprecheck: [step(`ensure table \"${tableName}\" does not exist`, absent.sql, absent.params, expectAbsent(`table \"${tableName}\"`))],\n\t\t\texecute: [{\n\t\t\t\tdescription: `create table \"${tableName}\"`,\n\t\t\t\tsql: statement.sql,\n\t\t\t\tparams: statement.params ?? []\n\t\t\t}],\n\t\t\tpostcheck: [step(`verify table \"${tableName}\" exists`, present.sql, present.params, expectPresent(`table \"${tableName}\"`)), tableColumnsCheck(tableName, columnShapesOf(this.columns, this.constraints))]\n\t\t};\n\t}\n\trenderTypeScript() {\n\t\treturn this.#written().source;\n\t}\n\t#written() {\n\t\tconst sql = createSqlTextSources(TARGET_MIGRATION_MODULE);\n\t\tconst columnsList = this.columns.map((column) => renderDdlColumnAsTsCall(column, sql)).join(\", \");\n\t\tconst constraintsList = this.constraints ? this.constraints.map(renderDdlConstraintAsTsCall).join(\", \") : void 0;\n\t\tconst opts = [];\n\t\topts.push(`table: ${jsonToTsSource(this.tableName)}`);\n\t\topts.push(`columns: [${columnsList}]`);\n\t\tif (constraintsList) opts.push(`constraints: [${constraintsList}]`);\n\t\treturn {\n\t\t\tsource: `this.createTable({ ${opts.join(\", \")} })`,\n\t\t\timports: sql.imports()\n\t\t};\n\t}\n\timportRequirements() {\n\t\tconst req = [];\n\t\tif (this.columns.length > 0) {\n\t\t\treq.push({\n\t\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\t\tsymbol: \"col\"\n\t\t\t});\n\t\t\tfor (const sym of defaultImportSymbols(this.columns)) req.push({\n\t\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\t\tsymbol: sym\n\t\t\t});\n\t\t}\n\t\tfor (const sym of constraintImportSymbols(this.constraints)) req.push({\n\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\tsymbol: sym\n\t\t});\n\t\treq.push(...this.#written().imports);\n\t\treturn req;\n\t}\n};\nvar DropTableCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"dropTable\";\n\toperationClass = \"destructive\";\n\ttableName;\n\tlabel;\n\tconstructor(tableName) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.label = `Drop table ${tableName}`;\n\t\tthis.freeze();\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `DropTableCall.toOp: a lowerer is required on the SQLite planner path (table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName\n\t\t} });\n\t\tconst checks = tableExistsAst(this.tableName);\n\t\tconst present = await lowerer.lowerToExecuteRequest(checks.tablePresent());\n\t\tconst absent = await lowerer.lowerToExecuteRequest(checks.tableAbsent());\n\t\treturn {\n\t\t\tid: `dropTable.${this.tableName}`,\n\t\t\tlabel: `Drop table ${this.tableName}`,\n\t\t\tsummary: `Drops table ${this.tableName} which is not in the contract`,\n\t\t\toperationClass: \"destructive\",\n\t\t\ttarget: {\n\t\t\t\tid: \"sqlite\",\n\t\t\t\tdetails: buildTargetDetails(\"table\", this.tableName)\n\t\t\t},\n\t\t\tprecheck: [step(`ensure table \"${this.tableName}\" exists`, present.sql, present.params, expectPresent(`table \"${this.tableName}\"`))],\n\t\t\texecute: [step(`drop table \"${this.tableName}\"`, `DROP TABLE ${quoteIdentifier(this.tableName)}`)],\n\t\t\tpostcheck: [step(`verify table \"${this.tableName}\" is gone`, absent.sql, absent.params, expectAbsent(`table \"${this.tableName}\"`))]\n\t\t};\n\t}\n\trenderTypeScript() {\n\t\treturn `this.dropTable({ table: ${jsonToTsSource(this.tableName)} })`;\n\t}\n\timportRequirements() {\n\t\treturn [];\n\t}\n};\n/** The replaced indexes' drops, then their creates, since a create may take a dropped name. */\nfunction indexReplacementCalls(replacements) {\n\treturn [...replacements.map(({ drop }) => drop), ...replacements.map(({ create }) => create)];\n}\nvar RenameTableCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"renameTable\";\n\toperationClass = \"widening\";\n\toldTableName;\n\t/** The new name: the table's contract-side identity after the rename. */\n\ttableName;\n\tlabel;\n\t/** The indexes named after the old table, which SQLite cannot rename, so it replaces them. */\n\tindexReplacements;\n\t/**\n\t* The replacements' drops, then their creates. They run after the table rename and are never\n\t* rendered on their own.\n\t*/\n\tcompanions;\n\tconstructor(oldTableName, tableName, indexReplacements) {\n\t\tsuper();\n\t\tthis.oldTableName = oldTableName;\n\t\tthis.tableName = tableName;\n\t\tthis.label = `Rename table ${oldTableName} to ${tableName}`;\n\t\tthis.indexReplacements = Object.freeze([...indexReplacements]);\n\t\tthis.companions = Object.freeze(indexReplacementCalls(indexReplacements));\n\t\tthis.freeze();\n\t}\n\t/** The id of the operation this call lowers to. */\n\tget operationId() {\n\t\treturn `renameTable.${this.oldTableName}`;\n\t}\n\ttoOps(lowerer) {\n\t\treturn [this.toOp(lowerer), ...this.companions.map((companion) => companion.toOp(lowerer))];\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `RenameTableCall.toOp: a lowerer is required on the SQLite planner path (table \"${this.oldTableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.oldTableName\n\t\t} });\n\t\tconst fromChecks = tableExistsAst(this.oldTableName);\n\t\tconst toChecks = tableExistsAst(this.tableName);\n\t\tconst fromPresent = await lowerer.lowerToExecuteRequest(fromChecks.tablePresent());\n\t\tconst onlyCase = renameChangesOnlyCase(this.oldTableName, this.tableName);\n\t\tconst toAbsent = await lowerer.lowerToExecuteRequest(onlyCase ? toChecks.tableAbsent() : tableNameTakenAst(this.tableName).nameFree());\n\t\tconst viaName = renameTableViaName(this.tableName);\n\t\tconst viaAbsent = onlyCase ? await lowerer.lowerToExecuteRequest(tableExistsAst(viaName).tableAbsent()) : void 0;\n\t\tconst toPresent = await lowerer.lowerToExecuteRequest(toChecks.tablePresent());\n\t\tconst fromAbsent = await lowerer.lowerToExecuteRequest(fromChecks.tableAbsent());\n\t\treturn {\n\t\t\tid: this.operationId,\n\t\t\tlabel: this.label,\n\t\t\tsummary: `Renames table ${this.oldTableName} to ${this.tableName}, keeping its rows`,\n\t\t\toperationClass: \"widening\",\n\t\t\ttarget: {\n\t\t\t\tid: \"sqlite\",\n\t\t\t\tdetails: buildTargetDetails(\"table\", this.tableName)\n\t\t\t},\n\t\t\tprecheck: [\n\t\t\t\tstep(`ensure table \"${this.oldTableName}\" exists`, fromPresent.sql, fromPresent.params, expectPresent(`table \"${this.oldTableName}\"`)),\n\t\t\t\tstep(onlyCase ? `ensure table \"${this.tableName}\" does not exist` : `ensure no table or index is named \"${this.tableName}\" in any case`, toAbsent.sql, toAbsent.params, expectAbsent(onlyCase ? `table \"${this.tableName}\"` : `a table or index named \"${this.tableName}\" in any case`)),\n\t\t\t\t...viaAbsent === void 0 ? [] : [step(`ensure table \"${viaName}\" does not exist (a rename that only changes case passes through this temporary name, because SQLite compares table names without case)`, viaAbsent.sql, viaAbsent.params, expectAbsent(`table \"${viaName}\"`))]\n\t\t\t],\n\t\t\texecute: renameTableSteps(this.oldTableName, this.tableName),\n\t\t\tpostcheck: [step(`verify table \"${this.tableName}\" exists`, toPresent.sql, toPresent.params, expectPresent(`table \"${this.tableName}\"`)), step(`verify table \"${this.oldTableName}\" no longer exists`, fromAbsent.sql, fromAbsent.params, expectAbsent(`table \"${this.oldTableName}\"`))]\n\t\t};\n\t}\n\trenderTypeScript() {\n\t\treturn `...this.renameTable({ table: ${jsonToTsSource(this.oldTableName)}, to: ${jsonToTsSource(this.tableName)} })`;\n\t}\n\timportRequirements() {\n\t\treturn [];\n\t}\n};\nvar RenameColumnCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"renameColumn\";\n\toperationClass = \"widening\";\n\ttableName;\n\toldColumnName;\n\t/** The new name: the column's contract-side identity after the rename. */\n\tcolumnName;\n\tlabel;\n\t/** The indexes on the column whose wire names change, which SQLite cannot rename. */\n\tindexReplacements;\n\t/**\n\t* The replacements' drops, then their creates. They run after the column rename and are never\n\t* rendered on their own.\n\t*/\n\tcompanions;\n\tconstructor(tableName, oldColumnName, columnName, indexReplacements) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.oldColumnName = oldColumnName;\n\t\tthis.columnName = columnName;\n\t\tthis.label = `Rename column ${oldColumnName} on ${tableName} to ${columnName}`;\n\t\tthis.indexReplacements = Object.freeze([...indexReplacements]);\n\t\tthis.companions = Object.freeze(indexReplacementCalls(indexReplacements));\n\t\tthis.freeze();\n\t}\n\ttoOps(lowerer) {\n\t\treturn [this.toOp(lowerer), ...this.companions.map((companion) => companion.toOp(lowerer))];\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `RenameColumnCall.toOp: a lowerer is required on the SQLite planner path (column \"${this.oldColumnName}\" on table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName\n\t\t} });\n\t\treturn renameColumn(this.tableName, this.oldColumnName, this.columnName, lowerer);\n\t}\n\trenderTypeScript() {\n\t\treturn `...this.renameColumn({ table: ${jsonToTsSource(this.tableName)}, column: ${jsonToTsSource(this.oldColumnName)}, to: ${jsonToTsSource(this.columnName)} })`;\n\t}\n\timportRequirements() {\n\t\treturn [];\n\t}\n};\nfunction refuseUnsafeCopyExpressions(tableName, option, expressions) {\n\tfor (const [column, expression] of Object.entries(expressions)) {\n\t\tif (expression.kind !== \"sql\") continue;\n\t\tconst refused = checkSqlExpressionText(expression.sql, SQLITE_QUOTING);\n\t\tif (refused === void 0) continue;\n\t\tconst call = `recreateTable({ tableName: ${jsonToTsSource(tableName)} })`;\n\t\tthrow sqliteError(\"MIGRATION.SQL_EXPRESSION_INVALID\", `${call}: ${option}.${column} ${JSON.stringify(expression.sql)} holds ${refused}, which could end or extend the INSERT … SELECT statement it is written into`, {\n\t\t\twhy: \"A copy expression or a temporary value is written into the SELECT that copies the rows into the rebuilt table. The check refuses a semicolon, a SQL comment, dollar quoting, and a comma or a statement keyword outside parentheses, since each could end or extend that statement; it does not check that the text is valid SQL.\",\n\t\t\tfix: `Write ${option}.${column} as one SQL expression over the old table's columns, such as CAST(\"${column}\" AS INTEGER). If it holds a comma or a keyword such as FROM outside parentheses, wrap it in parentheses.`,\n\t\t\tmeta: {\n\t\t\t\tcall,\n\t\t\t\tfield: `${option}.${column}`,\n\t\t\t\texpression: expression.sql,\n\t\t\t\trefused\n\t\t\t}\n\t\t});\n\t}\n}\nfunction refuseUnknownCopyExpressionColumns(tableName, contractTable, named) {\n\tconst columns = contractTable.columns.map((column) => column.name);\n\tconst unknown = [\n\t\t...Object.keys(named.copyExpressions).map((key) => ({\n\t\t\toption: `copyExpressions.${key}`,\n\t\t\tkey\n\t\t})),\n\t\t...Object.keys(named.temporaryValues).map((key) => ({\n\t\t\toption: `temporaryValues.${key}`,\n\t\t\tkey\n\t\t})),\n\t\t...named.retypedColumns.map((key) => ({\n\t\t\toption: `retypedColumns entry ${JSON.stringify(key)}`,\n\t\t\tkey\n\t\t}))\n\t].find(({ key }) => !columns.includes(key));\n\tif (unknown === void 0) return;\n\tconst call = `recreateTable({ tableName: ${jsonToTsSource(tableName)} })`;\n\tthrow sqliteError(\"MIGRATION.COPY_EXPRESSION_COLUMN_UNKNOWN\", `${call}: ${unknown.option} names no column of the new table. Its columns are ${columns.map((column) => JSON.stringify(column)).join(\", \")}.`, {\n\t\twhy: \"Each key of copyExpressions and temporaryValues, and each entry of retypedColumns, names a column of the new table. One that names no column applies to nothing, so the column meant would be copied unchanged or left without a value, or its values would go unchecked.\",\n\t\tfix: \"Name a column in contractTable.columns, with the same letters and case.\",\n\t\tmeta: {\n\t\t\tcall,\n\t\t\tkey: unknown.key,\n\t\t\tcolumns\n\t\t}\n\t});\n}\n/**\n* A temporary value fills a column the old table does not have, and only that: for a column the\n* old table has it would replace every existing value, and a column with a copy expression is\n* already filled by its conversion.\n*/\nfunction refuseMisplacedTemporaryValues(tableName, schemaColumnNames, copyExpressions, temporaryValues) {\n\tconst call = `recreateTable({ tableName: ${jsonToTsSource(tableName)} })`;\n\tfor (const column of Object.keys(temporaryValues)) {\n\t\tif (schemaColumnNames.includes(column)) throw sqliteError(\"MIGRATION.TEMPORARY_VALUE_INVALID\", `${call}: temporaryValues.${column} names a column the old table already has, so the copy would replace every value of it.`, {\n\t\t\twhy: \"A temporary value fills a new column in the existing rows. A column the old table has keeps its values through the copy, or is converted by a copy expression.\",\n\t\t\tfix: `Remove temporaryValues.${column}. To change the values of \"${column}\", write a conversion in copyExpressions.${column} instead.`,\n\t\t\tmeta: {\n\t\t\t\tcall,\n\t\t\t\tcolumn,\n\t\t\t\treason: \"existingColumn\"\n\t\t\t}\n\t\t});\n\t\tif (Object.hasOwn(copyExpressions, column)) throw sqliteError(\"MIGRATION.TEMPORARY_VALUE_INVALID\", `${call}: \"${column}\" is named in both copyExpressions and temporaryValues, so it would be filled twice.`, {\n\t\t\twhy: \"A column is filled either by the conversion in copyExpressions or by a temporary value, not both.\",\n\t\t\tfix: `Keep one of copyExpressions.${column} and temporaryValues.${column}.`,\n\t\t\tmeta: {\n\t\t\t\tcall,\n\t\t\t\tcolumn,\n\t\t\t\treason: \"alsoConverted\"\n\t\t\t}\n\t\t});\n\t}\n}\nfunction sqlOfSlots(slots) {\n\treturn Object.fromEntries(Object.entries(slots).flatMap(([column, slot]) => {\n\t\tconst sql = sqlOfSlot(slot);\n\t\treturn sql === void 0 ? [] : [[column, sql]];\n\t}));\n}\nvar RecreateTableCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"recreateTable\";\n\toperationClass;\n\ttableName;\n\tcontractTable;\n\tschemaColumnNames;\n\tindexes;\n\tsummary;\n\tpostchecks;\n\tlabel;\n\t/** The conversion each named column of the new table is copied through, in place of the live column. */\n\tcopyExpressions;\n\t/** The value each named new column takes in the existing rows. */\n\ttemporaryValues;\n\t/** The columns whose type changes; the rebuild checks each after its copy, as a conversion when it has a copy expression and as SQLite's cast otherwise. */\n\tretypedColumns;\n\tconstructor(args) {\n\t\tsuper();\n\t\trefuseUnsafeCopyExpressions(args.tableName, \"copyExpressions\", args.copyExpressions ?? {});\n\t\trefuseUnsafeCopyExpressions(args.tableName, \"temporaryValues\", args.temporaryValues ?? {});\n\t\trefuseUnknownCopyExpressionColumns(args.tableName, args.contractTable, {\n\t\t\tcopyExpressions: args.copyExpressions ?? {},\n\t\t\ttemporaryValues: args.temporaryValues ?? {},\n\t\t\tretypedColumns: args.retypedColumns ?? []\n\t\t});\n\t\trefuseMisplacedTemporaryValues(args.tableName, args.schemaColumnNames, args.copyExpressions ?? {}, args.temporaryValues ?? {});\n\t\tthis.copyExpressions = Object.freeze({ ...args.copyExpressions });\n\t\tthis.temporaryValues = Object.freeze({ ...args.temporaryValues });\n\t\tthis.retypedColumns = Object.freeze([...args.retypedColumns ?? []]);\n\t\tthis.tableName = args.tableName;\n\t\tthis.contractTable = args.contractTable;\n\t\tthis.schemaColumnNames = args.schemaColumnNames;\n\t\tthis.indexes = args.indexes;\n\t\tthis.summary = args.summary;\n\t\tthis.postchecks = args.postchecks;\n\t\tthis.operationClass = args.operationClass;\n\t\tthis.label = `Recreate table ${args.tableName}`;\n\t\tthis.freeze();\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `RecreateTableCall.toOp: a lowerer is required on the SQLite planner path (table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName\n\t\t} });\n\t\tconst copies = Object.entries(this.copyExpressions);\n\t\tif (copies.some(([, expression]) => isUnfilledSlot(expression))) return unfilledPlaceholderOperation(this.label);\n\t\treturn recreateTable({\n\t\t\ttableName: this.tableName,\n\t\t\tcontractTable: this.contractTable,\n\t\t\tschemaColumnNames: this.schemaColumnNames,\n\t\t\tindexes: this.indexes,\n\t\t\tsummary: this.summary,\n\t\t\tpostchecks: this.postchecks,\n\t\t\toperationClass: this.operationClass,\n\t\t\tretypedColumns: this.retypedColumns,\n\t\t\t...copies.length === 0 ? {} : { copyExpressions: sqlOfSlots(this.copyExpressions) },\n\t\t\t...Object.keys(this.temporaryValues).length === 0 ? {} : { temporaryValues: sqlOfSlots(this.temporaryValues) }\n\t\t}, lowerer);\n\t}\n\t#slotsSource(slots, sql) {\n\t\treturn `{ ${Object.entries(slots).map(([column, expression]) => `${jsonToTsSource(column)}: ${slotSource(expression, sql)}`).join(\", \")} }`;\n\t}\n\trenderTypeScript() {\n\t\treturn this.#written().source;\n\t}\n\timportRequirements() {\n\t\treturn [...Object.values(this.copyExpressions).some(isUnfilledSlot) ? [{\n\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\tsymbol: \"placeholder\"\n\t\t}] : [], ...this.#written().imports];\n\t}\n\t#written() {\n\t\tconst sql = createSqlTextSources(TARGET_MIGRATION_MODULE);\n\t\treturn {\n\t\t\tsource: `this.recreateTable(${tsObjectSource([\n\t\t\t\t[\"tableName\", jsonToTsSource(this.tableName)],\n\t\t\t\t[\"contractTable\", renderTableSpec(this.contractTable, sql)],\n\t\t\t\t[\"schemaColumnNames\", jsonToTsSource(this.schemaColumnNames)],\n\t\t\t\t[\"indexes\", jsonToTsSource(this.indexes)],\n\t\t\t\t[\"summary\", jsonToTsSource(this.summary)],\n\t\t\t\t[\"postchecks\", tsArraySource(this.postchecks.map(renderPostcheck))],\n\t\t\t\t[\"operationClass\", jsonToTsSource(this.operationClass)],\n\t\t\t\t...Object.keys(this.copyExpressions).length === 0 ? [] : [[\"copyExpressions\", this.#slotsSource(this.copyExpressions, sql)]],\n\t\t\t\t...Object.keys(this.temporaryValues).length === 0 ? [] : [[\"temporaryValues\", this.#slotsSource(this.temporaryValues, sql)]],\n\t\t\t\t...this.retypedColumns.length === 0 ? [] : [[\"retypedColumns\", jsonToTsSource(this.retypedColumns)]]\n\t\t\t])})`,\n\t\t\timports: sql.imports()\n\t\t};\n\t}\n};\nvar AddColumnCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"addColumn\";\n\toperationClass = \"additive\";\n\ttableName;\n\tcolumnName;\n\tcolumn;\n\tlabel;\n\tconstructor(tableName, column) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.columnName = column.name;\n\t\tthis.column = column;\n\t\tthis.label = `Add column ${column.name} on ${tableName}`;\n\t\tthis.freeze();\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `AddColumnCall.toOp: a lowerer is required on the SQLite planner path (column \"${this.column.name}\" on table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName,\n\t\t\tcolumnName: this.column.name\n\t\t} });\n\t\treturn addColumn(this.tableName, this.column, lowerer);\n\t}\n\trenderTypeScript() {\n\t\treturn this.#written().source;\n\t}\n\timportRequirements() {\n\t\treturn this.#written().imports;\n\t}\n\t#written() {\n\t\tconst sql = createSqlTextSources(TARGET_MIGRATION_MODULE);\n\t\treturn {\n\t\t\tsource: `this.addColumn({ table: ${jsonToTsSource(this.tableName)}, column: ${renderColumnSpec(this.column, sql)} })`,\n\t\t\timports: sql.imports()\n\t\t};\n\t}\n};\nvar DropColumnCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"dropColumn\";\n\toperationClass = \"destructive\";\n\ttableName;\n\tcolumnName;\n\tlabel;\n\tconstructor(tableName, columnName) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.columnName = columnName;\n\t\tthis.label = `Drop column ${columnName} on ${tableName}`;\n\t\tthis.freeze();\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `DropColumnCall.toOp: a lowerer is required on the SQLite planner path (column \"${this.columnName}\" on table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName,\n\t\t\tcolumnName: this.columnName\n\t\t} });\n\t\tconst checks = columnExistsAst(this.tableName, this.columnName);\n\t\tconst present = await lowerer.lowerToExecuteRequest(checks.columnPresent());\n\t\tconst absent = await lowerer.lowerToExecuteRequest(checks.columnAbsent());\n\t\treturn {\n\t\t\tid: `dropColumn.${this.tableName}.${this.columnName}`,\n\t\t\tlabel: `Drop column ${this.columnName} on ${this.tableName}`,\n\t\t\tsummary: `Drops column ${this.columnName} on ${this.tableName} which is not in the contract`,\n\t\t\toperationClass: \"destructive\",\n\t\t\ttarget: {\n\t\t\t\tid: \"sqlite\",\n\t\t\t\tdetails: buildTargetDetails(\"column\", this.columnName, this.tableName)\n\t\t\t},\n\t\t\tprecheck: [step(`ensure column \"${this.columnName}\" exists on \"${this.tableName}\"`, present.sql, present.params, expectPresent(`column \"${this.columnName}\" on \"${this.tableName}\"`))],\n\t\t\texecute: [step(`drop column \"${this.columnName}\" from \"${this.tableName}\"`, dropColumnExecuteSql(this.tableName, this.columnName))],\n\t\t\tpostcheck: [step(`verify column \"${this.columnName}\" is gone from \"${this.tableName}\"`, absent.sql, absent.params, expectAbsent(`column \"${this.columnName}\" on \"${this.tableName}\"`))]\n\t\t};\n\t}\n\trenderTypeScript() {\n\t\treturn `this.dropColumn({ table: ${jsonToTsSource(this.tableName)}, column: ${jsonToTsSource(this.columnName)} })`;\n\t}\n\timportRequirements() {\n\t\treturn [];\n\t}\n};\nvar CreateIndexCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"createIndex\";\n\toperationClass = \"additive\";\n\ttableName;\n\tindexName;\n\tcolumns;\n\tlabel;\n\tconstructor(tableName, indexName, columns) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.indexName = indexName;\n\t\tthis.columns = columns;\n\t\tthis.label = `Create index ${indexName} on ${tableName}`;\n\t\tthis.freeze();\n\t}\n\t/** The id of the operation this call lowers to. */\n\tget operationId() {\n\t\treturn `index.${this.tableName}.${this.indexName}`;\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `CreateIndexCall.toOp: a lowerer is required on the SQLite planner path (index \"${this.indexName}\" on table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName,\n\t\t\tindexName: this.indexName\n\t\t} });\n\t\tconst checks = indexExistsAst(this.indexName);\n\t\tconst absent = await lowerer.lowerToExecuteRequest(checks.indexAbsent());\n\t\tconst present = await lowerer.lowerToExecuteRequest(checks.indexPresent());\n\t\treturn {\n\t\t\tid: this.operationId,\n\t\t\tlabel: `Create index ${this.indexName} on ${this.tableName}`,\n\t\t\tsummary: `Creates index ${this.indexName} on ${this.tableName}`,\n\t\t\toperationClass: \"additive\",\n\t\t\ttarget: {\n\t\t\t\tid: \"sqlite\",\n\t\t\t\tdetails: buildTargetDetails(\"index\", this.indexName, this.tableName)\n\t\t\t},\n\t\t\tprecheck: [step(`ensure index \"${this.indexName}\" is missing`, absent.sql, absent.params, expectAbsent(`index \"${this.indexName}\"`))],\n\t\t\texecute: [step(`create index \"${this.indexName}\"`, buildCreateIndexSql(this.tableName, this.indexName, this.columns))],\n\t\t\tpostcheck: [step(`verify index \"${this.indexName}\" exists`, present.sql, present.params, expectPresent(`index \"${this.indexName}\"`)), indexDefinitionCheck(this.tableName, this.indexName, this.columns, false)]\n\t\t};\n\t}\n\trenderTypeScript() {\n\t\treturn `this.createIndex({ table: ${jsonToTsSource(this.tableName)}, index: ${jsonToTsSource(this.indexName)}, columns: ${jsonToTsSource(this.columns)} })`;\n\t}\n\timportRequirements() {\n\t\treturn [];\n\t}\n};\nvar DropIndexCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"dropIndex\";\n\toperationClass = \"widening\";\n\ttableName;\n\tindexName;\n\tlabel;\n\tconstructor(tableName, indexName) {\n\t\tsuper();\n\t\tthis.tableName = tableName;\n\t\tthis.indexName = indexName;\n\t\tthis.label = `Drop index ${indexName} on ${tableName}`;\n\t\tthis.freeze();\n\t}\n\t/** The id of the operation this call lowers to. */\n\tget operationId() {\n\t\treturn `dropIndex.${this.tableName}.${this.indexName}`;\n\t}\n\tasync toOp(lowerer) {\n\t\tif (lowerer === void 0) throw sqliteError(\"MIGRATION.SQLITE_CONTROL_STACK_MISSING\", `DropIndexCall.toOp: a lowerer is required on the SQLite planner path (index \"${this.indexName}\" on table \"${this.tableName}\"). Pass the control adapter to createSqliteMigrationPlanner.`, { meta: {\n\t\t\tfactory: this.factoryName,\n\t\t\ttableName: this.tableName,\n\t\t\tindexName: this.indexName\n\t\t} });\n\t\tconst checks = indexExistsAst(this.indexName);\n\t\tconst present = await lowerer.lowerToExecuteRequest(checks.indexPresent());\n\t\tconst absent = await lowerer.lowerToExecuteRequest(checks.indexAbsent());\n\t\treturn {\n\t\t\tid: this.operationId,\n\t\t\tlabel: `Drop index ${this.indexName} on ${this.tableName}`,\n\t\t\tsummary: `Drops index ${this.indexName} on ${this.tableName} which is not in the contract`,\n\t\t\toperationClass: \"widening\",\n\t\t\ttarget: {\n\t\t\t\tid: \"sqlite\",\n\t\t\t\tdetails: buildTargetDetails(\"index\", this.indexName, this.tableName)\n\t\t\t},\n\t\t\tprecheck: [step(`ensure index \"${this.indexName}\" exists`, present.sql, present.params, expectPresent(`index \"${this.indexName}\"`))],\n\t\t\texecute: [step(`drop index \"${this.indexName}\"`, buildDropIndexSql(this.indexName))],\n\t\t\tpostcheck: [step(`verify index \"${this.indexName}\" is gone`, absent.sql, absent.params, expectAbsent(`index \"${this.indexName}\"`))]\n\t\t};\n\t}\n\trenderTypeScript() {\n\t\treturn `this.dropIndex({ table: ${jsonToTsSource(this.tableName)}, index: ${jsonToTsSource(this.indexName)} })`;\n\t}\n\timportRequirements() {\n\t\treturn [];\n\t}\n};\n/**\n* A planner-generated data-transform stub. The current default strategy\n* (`nullabilityTighteningBackfillStrategy`) emits one of these with a\n* backfill-flavored `id`/`label` when the policy allows `'data'` and the\n* contract tightens a column's nullability, but the op itself is generic —\n* any future strategy that needs a placeholder data step can construct one\n* with its own id/label.\n*\n* `toOp()` always rejects with `MIGRATION.UNFILLED_PLACEHOLDER`: the planner cannot lower a stubbed\n* transform to a runtime op — the user must edit the rendered\n* `migration.ts` and re-emit.\n*/\nvar DataTransformCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"dataTransform\";\n\toperationClass = \"data\";\n\tid;\n\tlabel;\n\ttableName;\n\tcolumnName;\n\t/** The slot the user fills with the statement that fills the column: `<Model.field>:run`. */\n\tslot;\n\tconstructor(id, label, tableName, columnName, slot) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.label = label;\n\t\tthis.tableName = tableName;\n\t\tthis.columnName = columnName;\n\t\tthis.slot = slot;\n\t\tthis.freeze();\n\t}\n\ttoOp(_lowerer) {\n\t\treturn unfilledPlaceholderOperation(this.label);\n\t}\n\trenderTypeScript() {\n\t\tconst slot = this.slot;\n\t\treturn [\n\t\t\t\"dataTransform({\",\n\t\t\t` id: ${jsonToTsSource(this.id)},`,\n\t\t\t` label: ${jsonToTsSource(this.label)},`,\n\t\t\t` table: ${jsonToTsSource(this.tableName)},`,\n\t\t\t` description: ${jsonToTsSource(`Backfill NULL ${this.columnName} values in ${this.tableName}`)},`,\n\t\t\t` run: () => placeholder(${jsonToTsSource(slot)}),`,\n\t\t\t\"})\"\n\t\t].join(\"\\n\");\n\t}\n\timportRequirements() {\n\t\treturn [{\n\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\tsymbol: this.factoryName\n\t\t}, {\n\t\t\tmoduleSpecifier: TARGET_MIGRATION_MODULE,\n\t\t\tsymbol: \"placeholder\"\n\t\t}];\n\t}\n};\n/**\n* Laundered pre-built operation. Mirrors Postgres's `RawSqlCall`: wraps an\n* already-materialized `SqlMigrationPlanOperation` (typically produced by a\n* SQL-family helper or a codec lifecycle hook) so the planner can carry it\n* alongside structured call IR. `toOp()` returns the stored op unchanged;\n* `renderTypeScript()` emits `rawSql({...})` with the op serialized as a\n* JSON literal — round-tripping requires every field on the op to be\n* JSON-serializable (no closures).\n*/\nvar RawSqlCall = class extends SqliteOpFactoryCallNode {\n\tfactoryName = \"rawSql\";\n\toperationClass;\n\tlabel;\n\top;\n\tconstructor(op) {\n\t\tsuper();\n\t\tthis.op = op;\n\t\tthis.label = op.label;\n\t\tthis.operationClass = op.operationClass;\n\t\tthis.freeze();\n\t}\n\ttoOp(_lowerer) {\n\t\treturn this.op;\n\t}\n\trenderTypeScript() {\n\t\treturn `rawSql(${jsonToTsSource(this.op)})`;\n\t}\n};\nfunction definedSourceEntries(sources) {\n\treturn Object.entries(sources).flatMap(([key, source]) => source === void 0 ? [] : [[key, source]]);\n}\nfunction renderIfDefined(value) {\n\treturn value === void 0 ? void 0 : jsonToTsSource(value);\n}\nfunction renderColumnSpec(column, sql) {\n\treturn tsObjectSource(definedSourceEntries({\n\t\tname: jsonToTsSource(column.name),\n\t\ttypeSql: jsonToTsSource(column.typeSql),\n\t\tdefault: column.default === void 0 ? void 0 : renderSpecDefault(column.default, sql),\n\t\tcodecRef: renderIfDefined(column.codecRef),\n\t\tnullable: jsonToTsSource(column.nullable),\n\t\tinlineAutoincrementPrimaryKey: renderIfDefined(column.inlineAutoincrementPrimaryKey)\n\t}));\n}\nfunction renderTableSpec(table, sql) {\n\treturn tsObjectSource(definedSourceEntries({\n\t\tcolumns: tsArraySource(table.columns.map((column) => renderColumnSpec(column, sql))),\n\t\tprimaryKey: renderIfDefined(table.primaryKey),\n\t\tuniques: renderIfDefined(table.uniques),\n\t\tforeignKeys: renderIfDefined(table.foreignKeys)\n\t}));\n}\nfunction renderSpecDefault(columnDefault, sql) {\n\tif (columnDefault.kind === \"literal\") return jsonToTsSource(columnDefault);\n\treturn tsObjectSource(definedSourceEntries({\n\t\tkind: jsonToTsSource(columnDefault.kind),\n\t\texpression: sql.source(columnDefault.expression)\n\t}));\n}\nfunction renderPostcheck(postcheck) {\n\tif (\"sql\" in postcheck) return tsObjectSource(definedSourceEntries({\n\t\tdescription: jsonToTsSource(postcheck.description),\n\t\tsql: tsQuotedTextSource(postcheck.sql),\n\t\trequiredColumn: postcheck.requiredColumn === void 0 ? void 0 : jsonToTsSource(postcheck.requiredColumn)\n\t}));\n\treturn tsObjectSource(definedSourceEntries({\n\t\tdescription: jsonToTsSource(postcheck.description),\n\t\tcolumnDefault: jsonToTsSource(postcheck.columnDefault)\n\t}));\n}\n//#endregion\nexport { sqliteIdentifiersCollide as C, step as S, conversionCopyOf as _, DropColumnCall as a, INLINE_AUTOINCREMENT_PRIMARY_KEY as b, RawSqlCall as c, RenameTableCall as d, indexReplacementCalls as f, buildRecreateSummary as g, buildRecreatePostchecks as h, DataTransformCall as i, RecreateTableCall as l, affinityStorageClasses as m, CreateIndexCall as n, DropIndexCall as o, isSqliteOpFactoryCall as p, CreateTableCall as r, DropTableCall as s, AddColumnCall as t, RenameColumnCall as u, rebuiltTableName as v, sqliteDefaultToDdlColumnDefault as x, renameTableSteps as y };\n\n//# sourceMappingURL=op-factory-call-D2bHVPKQ.mjs.map"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { a as DropColumnCall, l as RawSqlCall, s as DropTableCall, u as RecreateTableCall } from "./op-factory-call-Dzsgcf3B-B7IaqEjE.mjs";
2
- import { _ as sqliteSchemaTables, a as createWorkingSchema, c as issueNode, d as renameTableByHandStatements, f as renderRenameTableCall, g as sqlitePlannerStrategies, i as conflictForDisallowedCall, l as pairIndexReplacements, m as sqliteColumnRenameCall, n as buildSqlitePlanDiff, p as sqliteActualSchema, r as coalesceSubtreeIssues, s as indexNameCaseChange, u as planIssues, v as sqliteTableRenameByHand, y as sqliteTableRenameCall } from "./sqlite-migration-B7LD9iDG-BTpw_zNF.mjs";
3
- import { t as TypeScriptRenderableSqliteMigration } from "./planner-produced-sqlite-migration-DZcAhOaD-D71e7xGn.mjs";
1
+ import { a as DropColumnCall, l as RawSqlCall, s as DropTableCall, u as RecreateTableCall } from "./op-factory-call-D2bHVPKQ-BdwLsMzU.mjs";
2
+ import { _ as sqliteSchemaTables, a as createWorkingSchema, c as issueNode, d as renameTableByHandStatements, f as renderRenameTableCall, g as sqlitePlannerStrategies, i as conflictForDisallowedCall, l as pairIndexReplacements, m as sqliteColumnRenameCall, n as buildSqlitePlanDiff, p as sqliteActualSchema, r as coalesceSubtreeIssues, s as indexNameCaseChange, u as planIssues, v as sqliteTableRenameByHand, y as sqliteTableRenameCall } from "./sqlite-migration-BM-4t7pA-Cf3heN-E.mjs";
3
+ import { t as TypeScriptRenderableSqliteMigration } from "./planner-produced-sqlite-migration-8onGxp5C-SfQsPkc5.mjs";
4
4
  import { isRenameStatement, issueOutcome } from "@prisma/orm-framework/components/control";
5
5
  import { UNBOUND_NAMESPACE_ID } from "@prisma/orm-framework/components/ir";
6
6
  import { appliedStatementsInOrder, backfillOfDefaultedField, columnTakesTemporaryValue, detectTableNameCaseChanges, extractCodecControlHooks, fieldEventStorage, fieldStatementColumns, planFieldEventCalls, planStatements, plannerFailure, sqlTypeLookupsOf, storageNameOfOperation, subjectsOfCalls, unknownCallNames } from "@prisma/orm-family-sql/family/control";
7
7
  import { RelationalSchemaNodeKind, SqlTableIR } from "@prisma/orm-family-sql/schema-ir/types";
8
8
  import { ok } from "@prisma/orm-framework/utils/result";
9
- //#region ../../../3-targets/3-targets/sqlite/dist/planner-DD8nGrZ_.mjs
9
+ //#region ../../../3-targets/3-targets/sqlite/dist/planner-IcAu5SpS.mjs
10
10
  function lost(target, loss = "drop") {
11
11
  return {
12
12
  ...target,
@@ -359,4 +359,4 @@ function retainUnownedExtras(issues, ownership) {
359
359
  //#endregion
360
360
  export { createSqliteMigrationPlanner as n, SqliteMigrationPlanner as t };
361
361
 
362
- //# sourceMappingURL=planner-DD8nGrZ_-BcGCsYVP.mjs.map
362
+ //# sourceMappingURL=planner-IcAu5SpS-BxzZlOe3.mjs.map