@prisma-next/target-postgres 0.4.1 → 0.5.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/codec-ids-CojIXVf9.mjs +29 -0
  2. package/dist/codec-ids-CojIXVf9.mjs.map +1 -0
  3. package/dist/codec-ids.d.mts +28 -0
  4. package/dist/codec-ids.d.mts.map +1 -0
  5. package/dist/codec-ids.mjs +3 -0
  6. package/dist/codec-types.d.mts +42 -0
  7. package/dist/codec-types.d.mts.map +1 -0
  8. package/dist/codec-types.mjs +3 -0
  9. package/dist/codecs-BoahtY_Q.mjs +385 -0
  10. package/dist/codecs-BoahtY_Q.mjs.map +1 -0
  11. package/dist/codecs-D-F2KJqt.d.mts +299 -0
  12. package/dist/codecs-D-F2KJqt.d.mts.map +1 -0
  13. package/dist/codecs.d.mts +2 -0
  14. package/dist/codecs.mjs +3 -0
  15. package/dist/control.d.mts +1 -1
  16. package/dist/control.mjs +9 -1982
  17. package/dist/control.mjs.map +1 -1
  18. package/dist/data-transform-CxFRBIUp.d.mts +32 -0
  19. package/dist/data-transform-CxFRBIUp.d.mts.map +1 -0
  20. package/dist/data-transform-VfEGzXWt.mjs +39 -0
  21. package/dist/data-transform-VfEGzXWt.mjs.map +1 -0
  22. package/dist/data-transform.d.mts +2 -0
  23. package/dist/data-transform.mjs +3 -0
  24. package/dist/default-normalizer-DNOpRoOF.mjs +131 -0
  25. package/dist/default-normalizer-DNOpRoOF.mjs.map +1 -0
  26. package/dist/default-normalizer.d.mts +19 -0
  27. package/dist/default-normalizer.d.mts.map +1 -0
  28. package/dist/default-normalizer.mjs +3 -0
  29. package/dist/{descriptor-meta-DkvCmY98.mjs → descriptor-meta-BVoVtyp-.mjs} +1 -1
  30. package/dist/{descriptor-meta-DkvCmY98.mjs.map → descriptor-meta-BVoVtyp-.mjs.map} +1 -1
  31. package/dist/errors-AFvEPZ1R.mjs +34 -0
  32. package/dist/errors-AFvEPZ1R.mjs.map +1 -0
  33. package/dist/errors.d.mts +27 -0
  34. package/dist/errors.d.mts.map +1 -0
  35. package/dist/errors.mjs +3 -0
  36. package/dist/issue-planner-CFjB0_oO.mjs +879 -0
  37. package/dist/issue-planner-CFjB0_oO.mjs.map +1 -0
  38. package/dist/issue-planner.d.mts +85 -0
  39. package/dist/issue-planner.d.mts.map +1 -0
  40. package/dist/issue-planner.mjs +3 -0
  41. package/dist/migration.d.mts +5 -79
  42. package/dist/migration.d.mts.map +1 -1
  43. package/dist/migration.mjs +6 -428
  44. package/dist/migration.mjs.map +1 -1
  45. package/dist/native-type-normalizer-CInai_oY.mjs +38 -0
  46. package/dist/native-type-normalizer-CInai_oY.mjs.map +1 -0
  47. package/dist/native-type-normalizer.d.mts +18 -0
  48. package/dist/native-type-normalizer.d.mts.map +1 -0
  49. package/dist/native-type-normalizer.mjs +3 -0
  50. package/dist/op-factory-call-BKlruaiC.mjs +605 -0
  51. package/dist/op-factory-call-BKlruaiC.mjs.map +1 -0
  52. package/dist/op-factory-call-C3bWXKSP.d.mts +304 -0
  53. package/dist/op-factory-call-C3bWXKSP.d.mts.map +1 -0
  54. package/dist/op-factory-call.d.mts +3 -0
  55. package/dist/op-factory-call.mjs +3 -0
  56. package/dist/pack.d.mts +1 -1
  57. package/dist/pack.mjs +1 -1
  58. package/dist/planner-CLUvVhUN.mjs +98 -0
  59. package/dist/planner-CLUvVhUN.mjs.map +1 -0
  60. package/dist/planner-ddl-builders-Dxvw1LHw.mjs +132 -0
  61. package/dist/planner-ddl-builders-Dxvw1LHw.mjs.map +1 -0
  62. package/dist/planner-ddl-builders.d.mts +22 -0
  63. package/dist/planner-ddl-builders.d.mts.map +1 -0
  64. package/dist/planner-ddl-builders.mjs +3 -0
  65. package/dist/planner-identity-values-Dju-o5GF.mjs +91 -0
  66. package/dist/planner-identity-values-Dju-o5GF.mjs.map +1 -0
  67. package/dist/planner-identity-values.d.mts +20 -0
  68. package/dist/planner-identity-values.d.mts.map +1 -0
  69. package/dist/planner-identity-values.mjs +3 -0
  70. package/dist/planner-produced-postgres-migration-CRRTno6Z.d.mts +20 -0
  71. package/dist/planner-produced-postgres-migration-CRRTno6Z.d.mts.map +1 -0
  72. package/dist/planner-produced-postgres-migration-DSSPq8QS.mjs +33 -0
  73. package/dist/planner-produced-postgres-migration-DSSPq8QS.mjs.map +1 -0
  74. package/dist/planner-produced-postgres-migration.d.mts +5 -0
  75. package/dist/planner-produced-postgres-migration.mjs +3 -0
  76. package/dist/planner-schema-lookup-B7lkypwn.mjs +29 -0
  77. package/dist/planner-schema-lookup-B7lkypwn.mjs.map +1 -0
  78. package/dist/planner-schema-lookup.d.mts +22 -0
  79. package/dist/planner-schema-lookup.d.mts.map +1 -0
  80. package/dist/planner-schema-lookup.mjs +3 -0
  81. package/dist/planner-sql-checks-7jkgm9TX.mjs +241 -0
  82. package/dist/planner-sql-checks-7jkgm9TX.mjs.map +1 -0
  83. package/dist/planner-sql-checks.d.mts +55 -0
  84. package/dist/planner-sql-checks.d.mts.map +1 -0
  85. package/dist/planner-sql-checks.mjs +3 -0
  86. package/dist/{planner-target-details-MXb3oeul.d.mts → planner-target-details-DH-azLu-.d.mts} +1 -1
  87. package/dist/{planner-target-details-MXb3oeul.d.mts.map → planner-target-details-DH-azLu-.d.mts.map} +1 -1
  88. package/dist/planner-target-details.d.mts +2 -0
  89. package/dist/planner-target-details.mjs +1 -0
  90. package/dist/planner.d.mts +68 -0
  91. package/dist/planner.d.mts.map +1 -0
  92. package/dist/planner.mjs +4 -0
  93. package/dist/postgres-migration-BjA3Zmts.d.mts +50 -0
  94. package/dist/postgres-migration-BjA3Zmts.d.mts.map +1 -0
  95. package/dist/postgres-migration-qtmtbONe.mjs +52 -0
  96. package/dist/postgres-migration-qtmtbONe.mjs.map +1 -0
  97. package/dist/render-ops-D6_DHdOK.mjs +8 -0
  98. package/dist/render-ops-D6_DHdOK.mjs.map +1 -0
  99. package/dist/render-ops.d.mts +11 -0
  100. package/dist/render-ops.d.mts.map +1 -0
  101. package/dist/render-ops.mjs +3 -0
  102. package/dist/render-typescript-1rF_SB4g.mjs +85 -0
  103. package/dist/render-typescript-1rF_SB4g.mjs.map +1 -0
  104. package/dist/render-typescript.d.mts +15 -0
  105. package/dist/render-typescript.d.mts.map +1 -0
  106. package/dist/render-typescript.mjs +3 -0
  107. package/dist/runtime.d.mts +15 -3
  108. package/dist/runtime.d.mts.map +1 -1
  109. package/dist/runtime.mjs +10 -1
  110. package/dist/runtime.mjs.map +1 -1
  111. package/dist/shared-Bxkt8pNO.d.mts +41 -0
  112. package/dist/shared-Bxkt8pNO.d.mts.map +1 -0
  113. package/dist/sql-utils-r-Lw535w.mjs +76 -0
  114. package/dist/sql-utils-r-Lw535w.mjs.map +1 -0
  115. package/dist/sql-utils.d.mts +59 -0
  116. package/dist/sql-utils.d.mts.map +1 -0
  117. package/dist/sql-utils.mjs +3 -0
  118. package/dist/statement-builders-BPnmt6wx.mjs +116 -0
  119. package/dist/statement-builders-BPnmt6wx.mjs.map +1 -0
  120. package/dist/statement-builders.d.mts +23 -0
  121. package/dist/statement-builders.d.mts.map +1 -0
  122. package/dist/statement-builders.mjs +3 -0
  123. package/dist/tables-BmdW_FWO.mjs +477 -0
  124. package/dist/tables-BmdW_FWO.mjs.map +1 -0
  125. package/dist/types-ClK03Ojd.d.mts +10 -0
  126. package/dist/types-ClK03Ojd.d.mts.map +1 -0
  127. package/dist/types.d.mts +2 -0
  128. package/dist/types.mjs +1 -0
  129. package/package.json +37 -20
  130. package/src/core/codec-ids.ts +30 -0
  131. package/src/core/codecs.ts +645 -0
  132. package/src/core/default-normalizer.ts +131 -0
  133. package/src/core/descriptor-meta.ts +1 -1
  134. package/src/core/errors.ts +33 -0
  135. package/src/core/json-schema-type-expression.ts +131 -0
  136. package/src/core/migrations/op-factory-call.ts +1 -5
  137. package/src/core/migrations/operations/columns.ts +1 -1
  138. package/src/core/migrations/operations/constraints.ts +1 -1
  139. package/src/core/migrations/operations/data-transform.ts +27 -21
  140. package/src/core/migrations/operations/dependencies.ts +1 -1
  141. package/src/core/migrations/operations/enums.ts +1 -1
  142. package/src/core/migrations/operations/indexes.ts +1 -1
  143. package/src/core/migrations/operations/shared.ts +1 -1
  144. package/src/core/migrations/operations/tables.ts +1 -1
  145. package/src/core/migrations/planner-ddl-builders.ts +1 -1
  146. package/src/core/migrations/planner-recipes.ts +1 -1
  147. package/src/core/migrations/planner-sql-checks.ts +1 -1
  148. package/src/core/migrations/planner.ts +2 -4
  149. package/src/core/migrations/postgres-migration.ts +54 -1
  150. package/src/core/migrations/render-typescript.ts +22 -12
  151. package/src/core/migrations/runner.ts +2 -4
  152. package/src/core/native-type-normalizer.ts +49 -0
  153. package/src/core/sql-utils.ts +104 -0
  154. package/src/exports/codec-ids.ts +1 -0
  155. package/src/exports/codec-types.ts +51 -0
  156. package/src/exports/codecs.ts +2 -0
  157. package/src/exports/data-transform.ts +1 -0
  158. package/src/exports/default-normalizer.ts +1 -0
  159. package/src/exports/errors.ts +1 -0
  160. package/src/exports/issue-planner.ts +1 -0
  161. package/src/exports/migration.ts +6 -0
  162. package/src/exports/native-type-normalizer.ts +1 -0
  163. package/src/exports/op-factory-call.ts +25 -0
  164. package/src/exports/planner-ddl-builders.ts +8 -0
  165. package/src/exports/planner-identity-values.ts +1 -0
  166. package/src/exports/planner-produced-postgres-migration.ts +1 -0
  167. package/src/exports/planner-schema-lookup.ts +6 -0
  168. package/src/exports/planner-sql-checks.ts +11 -0
  169. package/src/exports/planner-target-details.ts +1 -0
  170. package/src/exports/planner.ts +1 -0
  171. package/src/exports/render-ops.ts +1 -0
  172. package/src/exports/render-typescript.ts +1 -0
  173. package/src/exports/runtime.ts +19 -4
  174. package/src/exports/sql-utils.ts +7 -0
  175. package/src/exports/statement-builders.ts +7 -0
  176. package/src/exports/types.ts +1 -0
  177. package/dist/postgres-migration-BsHJHV9O.mjs +0 -2793
  178. package/dist/postgres-migration-BsHJHV9O.mjs.map +0 -1
@@ -0,0 +1,304 @@
1
+ import { t as PostgresPlanTargetDetails } from "./planner-target-details-DH-azLu-.mjs";
2
+ import { n as ForeignKeySpec, t as ColumnSpec } from "./shared-Bxkt8pNO.mjs";
3
+ import { SqlMigrationPlanOperation } from "@prisma-next/family-sql/control";
4
+ import { ImportRequirement, TsExpression } from "@prisma-next/ts-render";
5
+ import { MigrationOperationClass, OpFactoryCall } from "@prisma-next/framework-components/control";
6
+
7
+ //#region src/core/migrations/op-factory-call.d.ts
8
+
9
+ type Op = SqlMigrationPlanOperation<PostgresPlanTargetDetails>;
10
+ declare abstract class PostgresOpFactoryCallNode extends TsExpression implements OpFactoryCall {
11
+ abstract readonly factoryName: string;
12
+ abstract readonly operationClass: MigrationOperationClass;
13
+ abstract readonly label: string;
14
+ abstract toOp(): Op;
15
+ importRequirements(): readonly ImportRequirement[];
16
+ protected freeze(): void;
17
+ }
18
+ interface CreateTablePrimaryKey {
19
+ readonly columns: readonly string[];
20
+ }
21
+ declare class CreateTableCall extends PostgresOpFactoryCallNode {
22
+ readonly factoryName: "createTable";
23
+ readonly operationClass: "additive";
24
+ readonly schemaName: string;
25
+ readonly tableName: string;
26
+ readonly columns: readonly ColumnSpec[];
27
+ readonly primaryKey: CreateTablePrimaryKey | undefined;
28
+ readonly label: string;
29
+ constructor(schemaName: string, tableName: string, columns: readonly ColumnSpec[], primaryKey?: CreateTablePrimaryKey);
30
+ toOp(): Op;
31
+ renderTypeScript(): string;
32
+ }
33
+ declare class DropTableCall extends PostgresOpFactoryCallNode {
34
+ readonly factoryName: "dropTable";
35
+ readonly operationClass: "destructive";
36
+ readonly schemaName: string;
37
+ readonly tableName: string;
38
+ readonly label: string;
39
+ constructor(schemaName: string, tableName: string);
40
+ toOp(): Op;
41
+ renderTypeScript(): string;
42
+ }
43
+ declare class AddColumnCall extends PostgresOpFactoryCallNode {
44
+ readonly factoryName: "addColumn";
45
+ readonly operationClass: "additive";
46
+ readonly schemaName: string;
47
+ readonly tableName: string;
48
+ readonly column: ColumnSpec;
49
+ readonly label: string;
50
+ constructor(schemaName: string, tableName: string, column: ColumnSpec);
51
+ toOp(): Op;
52
+ renderTypeScript(): string;
53
+ }
54
+ declare class DropColumnCall extends PostgresOpFactoryCallNode {
55
+ readonly factoryName: "dropColumn";
56
+ readonly operationClass: "destructive";
57
+ readonly schemaName: string;
58
+ readonly tableName: string;
59
+ readonly columnName: string;
60
+ readonly label: string;
61
+ constructor(schemaName: string, tableName: string, columnName: string);
62
+ toOp(): Op;
63
+ renderTypeScript(): string;
64
+ }
65
+ interface AlterColumnTypeOptions {
66
+ readonly qualifiedTargetType: string;
67
+ readonly formatTypeExpected: string;
68
+ readonly rawTargetTypeForLabel: string;
69
+ readonly using?: string;
70
+ }
71
+ declare class AlterColumnTypeCall extends PostgresOpFactoryCallNode {
72
+ readonly factoryName: "alterColumnType";
73
+ readonly operationClass: "destructive";
74
+ readonly schemaName: string;
75
+ readonly tableName: string;
76
+ readonly columnName: string;
77
+ readonly options: AlterColumnTypeOptions;
78
+ readonly label: string;
79
+ constructor(schemaName: string, tableName: string, columnName: string, options: AlterColumnTypeOptions);
80
+ toOp(): Op;
81
+ renderTypeScript(): string;
82
+ }
83
+ declare class SetNotNullCall extends PostgresOpFactoryCallNode {
84
+ readonly factoryName: "setNotNull";
85
+ readonly operationClass: "destructive";
86
+ readonly schemaName: string;
87
+ readonly tableName: string;
88
+ readonly columnName: string;
89
+ readonly label: string;
90
+ constructor(schemaName: string, tableName: string, columnName: string);
91
+ toOp(): Op;
92
+ renderTypeScript(): string;
93
+ }
94
+ declare class DropNotNullCall extends PostgresOpFactoryCallNode {
95
+ readonly factoryName: "dropNotNull";
96
+ readonly operationClass: "widening";
97
+ readonly schemaName: string;
98
+ readonly tableName: string;
99
+ readonly columnName: string;
100
+ readonly label: string;
101
+ constructor(schemaName: string, tableName: string, columnName: string);
102
+ toOp(): Op;
103
+ renderTypeScript(): string;
104
+ }
105
+ declare class SetDefaultCall extends PostgresOpFactoryCallNode {
106
+ readonly factoryName: "setDefault";
107
+ readonly operationClass: 'additive' | 'widening';
108
+ readonly schemaName: string;
109
+ readonly tableName: string;
110
+ readonly columnName: string;
111
+ readonly defaultSql: string;
112
+ readonly label: string;
113
+ constructor(schemaName: string, tableName: string, columnName: string, defaultSql: string, operationClass?: 'additive' | 'widening');
114
+ toOp(): Op;
115
+ renderTypeScript(): string;
116
+ }
117
+ declare class DropDefaultCall extends PostgresOpFactoryCallNode {
118
+ readonly factoryName: "dropDefault";
119
+ readonly operationClass: "destructive";
120
+ readonly schemaName: string;
121
+ readonly tableName: string;
122
+ readonly columnName: string;
123
+ readonly label: string;
124
+ constructor(schemaName: string, tableName: string, columnName: string);
125
+ toOp(): Op;
126
+ renderTypeScript(): string;
127
+ }
128
+ declare class AddPrimaryKeyCall extends PostgresOpFactoryCallNode {
129
+ readonly factoryName: "addPrimaryKey";
130
+ readonly operationClass: "additive";
131
+ readonly schemaName: string;
132
+ readonly tableName: string;
133
+ readonly constraintName: string;
134
+ readonly columns: readonly string[];
135
+ readonly label: string;
136
+ constructor(schemaName: string, tableName: string, constraintName: string, columns: readonly string[]);
137
+ toOp(): Op;
138
+ renderTypeScript(): string;
139
+ }
140
+ declare class AddUniqueCall extends PostgresOpFactoryCallNode {
141
+ readonly factoryName: "addUnique";
142
+ readonly operationClass: "additive";
143
+ readonly schemaName: string;
144
+ readonly tableName: string;
145
+ readonly constraintName: string;
146
+ readonly columns: readonly string[];
147
+ readonly label: string;
148
+ constructor(schemaName: string, tableName: string, constraintName: string, columns: readonly string[]);
149
+ toOp(): Op;
150
+ renderTypeScript(): string;
151
+ }
152
+ declare class AddForeignKeyCall extends PostgresOpFactoryCallNode {
153
+ readonly factoryName: "addForeignKey";
154
+ readonly operationClass: "additive";
155
+ readonly schemaName: string;
156
+ readonly tableName: string;
157
+ readonly fk: ForeignKeySpec;
158
+ readonly label: string;
159
+ constructor(schemaName: string, tableName: string, fk: ForeignKeySpec);
160
+ toOp(): Op;
161
+ renderTypeScript(): string;
162
+ }
163
+ declare class DropConstraintCall extends PostgresOpFactoryCallNode {
164
+ readonly factoryName: "dropConstraint";
165
+ readonly operationClass: "destructive";
166
+ readonly schemaName: string;
167
+ readonly tableName: string;
168
+ readonly constraintName: string;
169
+ readonly kind: 'foreignKey' | 'unique' | 'primaryKey';
170
+ readonly label: string;
171
+ constructor(schemaName: string, tableName: string, constraintName: string, kind?: 'foreignKey' | 'unique' | 'primaryKey');
172
+ toOp(): Op;
173
+ renderTypeScript(): string;
174
+ }
175
+ declare class CreateIndexCall extends PostgresOpFactoryCallNode {
176
+ readonly factoryName: "createIndex";
177
+ readonly operationClass: "additive";
178
+ readonly schemaName: string;
179
+ readonly tableName: string;
180
+ readonly indexName: string;
181
+ readonly columns: readonly string[];
182
+ readonly label: string;
183
+ constructor(schemaName: string, tableName: string, indexName: string, columns: readonly string[]);
184
+ toOp(): Op;
185
+ renderTypeScript(): string;
186
+ }
187
+ declare class DropIndexCall extends PostgresOpFactoryCallNode {
188
+ readonly factoryName: "dropIndex";
189
+ readonly operationClass: "destructive";
190
+ readonly schemaName: string;
191
+ readonly tableName: string;
192
+ readonly indexName: string;
193
+ readonly label: string;
194
+ constructor(schemaName: string, tableName: string, indexName: string);
195
+ toOp(): Op;
196
+ renderTypeScript(): string;
197
+ }
198
+ declare class CreateEnumTypeCall extends PostgresOpFactoryCallNode {
199
+ readonly factoryName: "createEnumType";
200
+ readonly operationClass: "additive";
201
+ readonly schemaName: string;
202
+ readonly typeName: string;
203
+ readonly values: readonly string[];
204
+ readonly label: string;
205
+ constructor(schemaName: string, typeName: string, values: readonly string[]);
206
+ toOp(): Op;
207
+ renderTypeScript(): string;
208
+ }
209
+ declare class AddEnumValuesCall extends PostgresOpFactoryCallNode {
210
+ readonly factoryName: "addEnumValues";
211
+ readonly operationClass: "additive";
212
+ readonly schemaName: string;
213
+ readonly typeName: string;
214
+ readonly nativeType: string;
215
+ readonly values: readonly string[];
216
+ readonly label: string;
217
+ constructor(schemaName: string, typeName: string, nativeType: string, values: readonly string[]);
218
+ toOp(): Op;
219
+ renderTypeScript(): string;
220
+ }
221
+ declare class DropEnumTypeCall extends PostgresOpFactoryCallNode {
222
+ readonly factoryName: "dropEnumType";
223
+ readonly operationClass: "destructive";
224
+ readonly schemaName: string;
225
+ readonly typeName: string;
226
+ readonly label: string;
227
+ constructor(schemaName: string, typeName: string);
228
+ toOp(): Op;
229
+ renderTypeScript(): string;
230
+ }
231
+ declare class RenameTypeCall extends PostgresOpFactoryCallNode {
232
+ readonly factoryName: "renameType";
233
+ readonly operationClass: "destructive";
234
+ readonly schemaName: string;
235
+ readonly fromName: string;
236
+ readonly toName: string;
237
+ readonly label: string;
238
+ constructor(schemaName: string, fromName: string, toName: string);
239
+ toOp(): Op;
240
+ renderTypeScript(): string;
241
+ }
242
+ /**
243
+ * Laundered pre-built operation.
244
+ *
245
+ * Wraps an already-materialized `SqlMigrationPlanOperation` — typically one
246
+ * produced by a SQL-family method, a codec control hook, or a component
247
+ * `databaseDependencies.init` declaration — so the planner can carry it
248
+ * alongside IR nodes without reverse-engineering it into a
249
+ * structured call class. Doubles as the user-facing escape hatch for raw
250
+ * migrations: authors can pass a full op shape to `rawSql({...})`.
251
+ *
252
+ * `toOp()` returns the stored op unchanged. `renderTypeScript()` emits
253
+ * `rawSql({...})` with the op serialized as a JSON literal — round-tripping
254
+ * requires every field on the op to be JSON-serializable (no closures).
255
+ */
256
+ declare class RawSqlCall extends PostgresOpFactoryCallNode {
257
+ readonly factoryName: "rawSql";
258
+ readonly operationClass: MigrationOperationClass;
259
+ readonly label: string;
260
+ readonly op: Op;
261
+ constructor(op: Op);
262
+ toOp(): Op;
263
+ renderTypeScript(): string;
264
+ }
265
+ declare class CreateExtensionCall extends PostgresOpFactoryCallNode {
266
+ readonly factoryName: "createExtension";
267
+ readonly operationClass: "additive";
268
+ readonly extensionName: string;
269
+ readonly label: string;
270
+ constructor(extensionName: string);
271
+ toOp(): Op;
272
+ renderTypeScript(): string;
273
+ }
274
+ declare class CreateSchemaCall extends PostgresOpFactoryCallNode {
275
+ readonly factoryName: "createSchema";
276
+ readonly operationClass: "additive";
277
+ readonly schemaName: string;
278
+ readonly label: string;
279
+ constructor(schemaName: string);
280
+ toOp(): Op;
281
+ renderTypeScript(): string;
282
+ }
283
+ /**
284
+ * A planner-generated data-transform stub. `checkSlot` and `runSlot` name
285
+ * the unfilled authoring slots that the rendered `migration.ts` will expose
286
+ * to the user via `placeholder("…")` calls. `toOp()` always throws
287
+ * `PN-MIG-2001`: the planner cannot lower a stubbed transform to a runtime
288
+ * op — the user must fill the rendered `migration.ts` and re-emit.
289
+ */
290
+ declare class DataTransformCall extends PostgresOpFactoryCallNode {
291
+ readonly factoryName: "dataTransform";
292
+ readonly operationClass: MigrationOperationClass;
293
+ readonly label: string;
294
+ readonly checkSlot: string;
295
+ readonly runSlot: string;
296
+ constructor(label: string, checkSlot: string, runSlot: string, operationClass?: MigrationOperationClass);
297
+ toOp(): Op;
298
+ renderTypeScript(): string;
299
+ importRequirements(): readonly ImportRequirement[];
300
+ }
301
+ type PostgresOpFactoryCall = CreateTableCall | DropTableCall | AddColumnCall | DropColumnCall | AlterColumnTypeCall | SetNotNullCall | DropNotNullCall | SetDefaultCall | DropDefaultCall | AddPrimaryKeyCall | AddForeignKeyCall | AddUniqueCall | CreateIndexCall | DropIndexCall | DropConstraintCall | CreateEnumTypeCall | AddEnumValuesCall | DropEnumTypeCall | RenameTypeCall | RawSqlCall | CreateExtensionCall | CreateSchemaCall | DataTransformCall;
302
+ //#endregion
303
+ export { SetDefaultCall as C, RenameTypeCall as S, DropIndexCall as _, AddUniqueCall as a, PostgresOpFactoryCall as b, CreateExtensionCall as c, CreateTableCall as d, DataTransformCall as f, DropEnumTypeCall as g, DropDefaultCall as h, AddPrimaryKeyCall as i, CreateIndexCall as l, DropConstraintCall as m, AddEnumValuesCall as n, AlterColumnTypeCall as o, DropColumnCall as p, AddForeignKeyCall as r, CreateEnumTypeCall as s, AddColumnCall as t, CreateSchemaCall as u, DropNotNullCall as v, SetNotNullCall as w, RawSqlCall as x, DropTableCall as y };
304
+ //# sourceMappingURL=op-factory-call-C3bWXKSP.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op-factory-call-C3bWXKSP.d.mts","names":[],"sources":["../src/core/migrations/op-factory-call.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import "./shared-Bxkt8pNO.mjs";
2
+ import { C as SetDefaultCall, S as RenameTypeCall, _ as DropIndexCall, a as AddUniqueCall, c as CreateExtensionCall, d as CreateTableCall, f as DataTransformCall, g as DropEnumTypeCall, h as DropDefaultCall, i as AddPrimaryKeyCall, l as CreateIndexCall, m as DropConstraintCall, n as AddEnumValuesCall, o as AlterColumnTypeCall, p as DropColumnCall, r as AddForeignKeyCall, s as CreateEnumTypeCall, t as AddColumnCall, u as CreateSchemaCall, v as DropNotNullCall, w as SetNotNullCall, x as RawSqlCall, y as DropTableCall } from "./op-factory-call-C3bWXKSP.mjs";
3
+ export { AddColumnCall, AddEnumValuesCall, AddForeignKeyCall, AddPrimaryKeyCall, AddUniqueCall, AlterColumnTypeCall, CreateEnumTypeCall, CreateExtensionCall, CreateIndexCall, CreateSchemaCall, CreateTableCall, DataTransformCall, DropColumnCall, DropConstraintCall, DropDefaultCall, DropEnumTypeCall, DropIndexCall, DropNotNullCall, DropTableCall, RawSqlCall, RenameTypeCall, SetDefaultCall, SetNotNullCall };
@@ -0,0 +1,3 @@
1
+ import { C as SetNotNullCall, S as SetDefaultCall, _ as DropIndexCall, a as AddUniqueCall, b as RawSqlCall, c as CreateExtensionCall, d as CreateTableCall, f as DataTransformCall, g as DropEnumTypeCall, h as DropDefaultCall, i as AddPrimaryKeyCall, l as CreateIndexCall, m as DropConstraintCall, n as AddEnumValuesCall, o as AlterColumnTypeCall, p as DropColumnCall, r as AddForeignKeyCall, s as CreateEnumTypeCall, t as AddColumnCall, u as CreateSchemaCall, v as DropNotNullCall, x as RenameTypeCall, y as DropTableCall } from "./op-factory-call-BKlruaiC.mjs";
2
+
3
+ export { AddColumnCall, AddEnumValuesCall, AddForeignKeyCall, AddPrimaryKeyCall, AddUniqueCall, AlterColumnTypeCall, CreateEnumTypeCall, CreateExtensionCall, CreateIndexCall, CreateSchemaCall, CreateTableCall, DataTransformCall, DropColumnCall, DropConstraintCall, DropDefaultCall, DropEnumTypeCall, DropIndexCall, DropNotNullCall, DropTableCall, RawSqlCall, RenameTypeCall, SetDefaultCall, SetNotNullCall };
package/dist/pack.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { CodecTypes } from "@prisma-next/adapter-postgres/codec-types";
1
+ import { t as CodecTypes } from "./codecs-D-F2KJqt.mjs";
2
2
 
3
3
  //#region src/core/descriptor-meta.d.ts
4
4
  declare const postgresTargetDescriptorMetaBase: {
package/dist/pack.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { t as postgresTargetDescriptorMeta } from "./descriptor-meta-DkvCmY98.mjs";
1
+ import { t as postgresTargetDescriptorMeta } from "./descriptor-meta-BVoVtyp-.mjs";
2
2
 
3
3
  export { postgresTargetDescriptorMeta as default };
@@ -0,0 +1,98 @@
1
+ import { t as parsePostgresDefault } from "./default-normalizer-DNOpRoOF.mjs";
2
+ import { t as normalizeSchemaNativeType } from "./native-type-normalizer-CInai_oY.mjs";
3
+ import { n as postgresPlannerStrategies, t as planIssues } from "./issue-planner-CFjB0_oO.mjs";
4
+ import { t as TypeScriptRenderablePostgresMigration } from "./planner-produced-postgres-migration-DSSPq8QS.mjs";
5
+ import { extractCodecControlHooks, plannerFailure } from "@prisma-next/family-sql/control";
6
+ import { verifySqlSchema } from "@prisma-next/family-sql/schema-verify";
7
+
8
+ //#region src/core/migrations/planner.ts
9
+ const DEFAULT_PLANNER_CONFIG = { defaultSchema: "public" };
10
+ function createPostgresMigrationPlanner(config = {}) {
11
+ return new PostgresMigrationPlanner({
12
+ ...DEFAULT_PLANNER_CONFIG,
13
+ ...config
14
+ });
15
+ }
16
+ /**
17
+ * Postgres migration planner — a thin wrapper over `planIssues`.
18
+ *
19
+ * `plan()` verifies the live schema against the target contract (producing
20
+ * `SchemaIssue[]`) and delegates to `planIssues` with the unified
21
+ * `postgresPlannerStrategies` list: enum-change, NOT-NULL backfill,
22
+ * type-change, nullable-tightening, codec-hook storage types,
23
+ * component-declared dependency installs, and shared-temp-default /
24
+ * empty-table-guarded NOT-NULL add-column. The same strategy list runs for
25
+ * `migration plan`, `db update`, and `db init`; behavior diverges purely on
26
+ * `policy.allowedOperationClasses` (the data-safe strategies short-circuit
27
+ * when `'data'` is excluded). The issue planner applies operation-class
28
+ * policy gates and emits a single `PostgresOpFactoryCall[]` that drives both
29
+ * the runtime-ops view (via `renderOps`) and the `renderTypeScript()`
30
+ * authoring surface.
31
+ */
32
+ var PostgresMigrationPlanner = class {
33
+ constructor(config) {
34
+ this.config = config;
35
+ }
36
+ plan(options) {
37
+ return this.planSql(options, options.fromHash ?? "");
38
+ }
39
+ emptyMigration(context) {
40
+ return new TypeScriptRenderablePostgresMigration([], {
41
+ from: context.fromHash,
42
+ to: context.toHash
43
+ });
44
+ }
45
+ planSql(options, fromHash) {
46
+ const schemaName = options.schemaName ?? this.config.defaultSchema;
47
+ const policyResult = this.ensureAdditivePolicy(options.policy);
48
+ if (policyResult) return policyResult;
49
+ const schemaIssues = this.collectSchemaIssues(options);
50
+ const codecHooks = extractCodecControlHooks(options.frameworkComponents);
51
+ const storageTypes = options.contract.storage.types ?? {};
52
+ const result = planIssues({
53
+ issues: schemaIssues,
54
+ toContract: options.contract,
55
+ fromContract: options.fromContract ?? null,
56
+ schemaName,
57
+ codecHooks,
58
+ storageTypes,
59
+ schema: options.schema,
60
+ policy: options.policy,
61
+ frameworkComponents: options.frameworkComponents,
62
+ strategies: postgresPlannerStrategies
63
+ });
64
+ if (!result.ok) return plannerFailure(result.failure);
65
+ return Object.freeze({
66
+ kind: "success",
67
+ plan: new TypeScriptRenderablePostgresMigration(result.value.calls, {
68
+ from: fromHash,
69
+ to: options.contract.storage.storageHash
70
+ })
71
+ });
72
+ }
73
+ ensureAdditivePolicy(policy) {
74
+ if (!policy.allowedOperationClasses.includes("additive")) return plannerFailure([{
75
+ kind: "unsupportedOperation",
76
+ summary: "Migration planner requires additive operations be allowed",
77
+ why: "The planner requires the \"additive\" operation class to be allowed in the policy."
78
+ }]);
79
+ return null;
80
+ }
81
+ collectSchemaIssues(options) {
82
+ const allowed = options.policy.allowedOperationClasses;
83
+ const strict = allowed.includes("widening") || allowed.includes("destructive");
84
+ return verifySqlSchema({
85
+ contract: options.contract,
86
+ schema: options.schema,
87
+ strict,
88
+ typeMetadataRegistry: /* @__PURE__ */ new Map(),
89
+ frameworkComponents: options.frameworkComponents,
90
+ normalizeDefault: parsePostgresDefault,
91
+ normalizeNativeType: normalizeSchemaNativeType
92
+ }).schema.issues;
93
+ }
94
+ };
95
+
96
+ //#endregion
97
+ export { createPostgresMigrationPlanner as t };
98
+ //# sourceMappingURL=planner-CLUvVhUN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-CLUvVhUN.mjs","names":["DEFAULT_PLANNER_CONFIG: PlannerConfig","config: PlannerConfig"],"sources":["../src/core/migrations/planner.ts"],"sourcesContent":["import type {\n MigrationOperationPolicy,\n SqlMigrationPlannerPlanOptions,\n SqlPlannerFailureResult,\n} from '@prisma-next/family-sql/control';\nimport { extractCodecControlHooks, plannerFailure } from '@prisma-next/family-sql/control';\nimport { verifySqlSchema } from '@prisma-next/family-sql/schema-verify';\nimport type { TargetBoundComponentDescriptor } from '@prisma-next/framework-components/components';\nimport type {\n MigrationPlanner,\n MigrationPlanWithAuthoringSurface,\n MigrationScaffoldContext,\n SchemaIssue,\n} from '@prisma-next/framework-components/control';\nimport { parsePostgresDefault } from '../default-normalizer';\nimport { normalizeSchemaNativeType } from '../native-type-normalizer';\nimport { planIssues } from './issue-planner';\nimport { TypeScriptRenderablePostgresMigration } from './planner-produced-postgres-migration';\nimport { postgresPlannerStrategies } from './planner-strategies';\n\ntype PlannerFrameworkComponents = SqlMigrationPlannerPlanOptions extends {\n readonly frameworkComponents: infer T;\n}\n ? T\n : ReadonlyArray<unknown>;\n\ntype PlannerOptionsWithComponents = SqlMigrationPlannerPlanOptions & {\n readonly frameworkComponents: PlannerFrameworkComponents;\n};\n\ntype VerifySqlSchemaOptionsWithComponents = Parameters<typeof verifySqlSchema>[0] & {\n readonly frameworkComponents: PlannerFrameworkComponents;\n};\n\ninterface PlannerConfig {\n readonly defaultSchema: string;\n}\n\nconst DEFAULT_PLANNER_CONFIG: PlannerConfig = {\n defaultSchema: 'public',\n};\n\nexport function createPostgresMigrationPlanner(\n config: Partial<PlannerConfig> = {},\n): PostgresMigrationPlanner {\n return new PostgresMigrationPlanner({\n ...DEFAULT_PLANNER_CONFIG,\n ...config,\n });\n}\n\n/**\n * Result of `PostgresMigrationPlanner.plan()`. A discriminated union whose\n * success variant carries a `TypeScriptRenderablePostgresMigration` — a\n * migration object that both the CLI (via `renderTypeScript()`) and the\n * SQL-typed callers (via `operations`, `describe()`, etc.) consume\n * uniformly.\n */\nexport type PostgresPlanResult =\n | { readonly kind: 'success'; readonly plan: TypeScriptRenderablePostgresMigration }\n | SqlPlannerFailureResult;\n\n/**\n * Postgres migration planner — a thin wrapper over `planIssues`.\n *\n * `plan()` verifies the live schema against the target contract (producing\n * `SchemaIssue[]`) and delegates to `planIssues` with the unified\n * `postgresPlannerStrategies` list: enum-change, NOT-NULL backfill,\n * type-change, nullable-tightening, codec-hook storage types,\n * component-declared dependency installs, and shared-temp-default /\n * empty-table-guarded NOT-NULL add-column. The same strategy list runs for\n * `migration plan`, `db update`, and `db init`; behavior diverges purely on\n * `policy.allowedOperationClasses` (the data-safe strategies short-circuit\n * when `'data'` is excluded). The issue planner applies operation-class\n * policy gates and emits a single `PostgresOpFactoryCall[]` that drives both\n * the runtime-ops view (via `renderOps`) and the `renderTypeScript()`\n * authoring surface.\n */\nexport class PostgresMigrationPlanner implements MigrationPlanner<'sql', 'postgres'> {\n constructor(private readonly config: PlannerConfig) {}\n\n plan(options: {\n readonly contract: unknown;\n readonly schema: unknown;\n readonly policy: MigrationOperationPolicy;\n readonly fromHash?: string;\n /**\n * The \"from\" contract (state the planner assumes the database starts\n * at). Only `migration plan` supplies this; `db update` / `db init`\n * reconcile against the live schema with no old contract. When present\n * alongside the `'data'` operation class, strategies that need from/to\n * column shape comparisons (unsafe type change, nullability tightening)\n * activate.\n */\n readonly fromContract?: unknown;\n readonly schemaName?: string;\n readonly frameworkComponents: ReadonlyArray<TargetBoundComponentDescriptor<'sql', string>>;\n }): PostgresPlanResult {\n return this.planSql(options as SqlMigrationPlannerPlanOptions, options.fromHash ?? '');\n }\n\n emptyMigration(context: MigrationScaffoldContext): MigrationPlanWithAuthoringSurface {\n return new TypeScriptRenderablePostgresMigration([], {\n from: context.fromHash,\n to: context.toHash,\n });\n }\n\n private planSql(options: SqlMigrationPlannerPlanOptions, fromHash: string): PostgresPlanResult {\n const schemaName = options.schemaName ?? this.config.defaultSchema;\n const policyResult = this.ensureAdditivePolicy(options.policy);\n if (policyResult) {\n return policyResult;\n }\n\n const schemaIssues = this.collectSchemaIssues(options);\n const codecHooks = extractCodecControlHooks(options.frameworkComponents);\n const storageTypes = options.contract.storage.types ?? {};\n\n const result = planIssues({\n issues: schemaIssues,\n toContract: options.contract,\n // `fromContract` is only supplied by `migration plan`. It is `null` for\n // `db update` / `db init`, which means data-safety strategies needing\n // from/to comparisons (unsafe type change, nullable tightening) are\n // inapplicable there — reconciliation falls through to\n // `mapIssueToCall`'s direct destructive handlers.\n fromContract: options.fromContract ?? null,\n schemaName,\n codecHooks,\n storageTypes,\n schema: options.schema,\n policy: options.policy,\n frameworkComponents: options.frameworkComponents,\n strategies: postgresPlannerStrategies,\n });\n\n if (!result.ok) {\n return plannerFailure(result.failure);\n }\n\n return Object.freeze({\n kind: 'success' as const,\n plan: new TypeScriptRenderablePostgresMigration(result.value.calls, {\n from: fromHash,\n to: options.contract.storage.storageHash,\n }),\n });\n }\n\n private ensureAdditivePolicy(policy: MigrationOperationPolicy) {\n if (!policy.allowedOperationClasses.includes('additive')) {\n return plannerFailure([\n {\n kind: 'unsupportedOperation',\n summary: 'Migration planner requires additive operations be allowed',\n why: 'The planner requires the \"additive\" operation class to be allowed in the policy.',\n },\n ]);\n }\n return null;\n }\n\n private collectSchemaIssues(options: PlannerOptionsWithComponents): readonly SchemaIssue[] {\n // `db init` uses additive-only policy and intentionally ignores extra\n // schema objects. Any reconciliation-capable policy (widening or\n // destructive) must inspect extras to reconcile strict equality.\n const allowed = options.policy.allowedOperationClasses;\n const strict = allowed.includes('widening') || allowed.includes('destructive');\n const verifyOptions: VerifySqlSchemaOptionsWithComponents = {\n contract: options.contract,\n schema: options.schema,\n strict,\n typeMetadataRegistry: new Map(),\n frameworkComponents: options.frameworkComponents,\n normalizeDefault: parsePostgresDefault,\n normalizeNativeType: normalizeSchemaNativeType,\n };\n const verifyResult = verifySqlSchema(verifyOptions);\n return verifyResult.schema.issues;\n }\n}\n"],"mappings":";;;;;;;;AAsCA,MAAMA,yBAAwC,EAC5C,eAAe,UAChB;AAED,SAAgB,+BACd,SAAiC,EAAE,EACT;AAC1B,QAAO,IAAI,yBAAyB;EAClC,GAAG;EACH,GAAG;EACJ,CAAC;;;;;;;;;;;;;;;;;;AA8BJ,IAAa,2BAAb,MAAqF;CACnF,YAAY,AAAiBC,QAAuB;EAAvB;;CAE7B,KAAK,SAgBkB;AACrB,SAAO,KAAK,QAAQ,SAA2C,QAAQ,YAAY,GAAG;;CAGxF,eAAe,SAAsE;AACnF,SAAO,IAAI,sCAAsC,EAAE,EAAE;GACnD,MAAM,QAAQ;GACd,IAAI,QAAQ;GACb,CAAC;;CAGJ,AAAQ,QAAQ,SAAyC,UAAsC;EAC7F,MAAM,aAAa,QAAQ,cAAc,KAAK,OAAO;EACrD,MAAM,eAAe,KAAK,qBAAqB,QAAQ,OAAO;AAC9D,MAAI,aACF,QAAO;EAGT,MAAM,eAAe,KAAK,oBAAoB,QAAQ;EACtD,MAAM,aAAa,yBAAyB,QAAQ,oBAAoB;EACxE,MAAM,eAAe,QAAQ,SAAS,QAAQ,SAAS,EAAE;EAEzD,MAAM,SAAS,WAAW;GACxB,QAAQ;GACR,YAAY,QAAQ;GAMpB,cAAc,QAAQ,gBAAgB;GACtC;GACA;GACA;GACA,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,qBAAqB,QAAQ;GAC7B,YAAY;GACb,CAAC;AAEF,MAAI,CAAC,OAAO,GACV,QAAO,eAAe,OAAO,QAAQ;AAGvC,SAAO,OAAO,OAAO;GACnB,MAAM;GACN,MAAM,IAAI,sCAAsC,OAAO,MAAM,OAAO;IAClE,MAAM;IACN,IAAI,QAAQ,SAAS,QAAQ;IAC9B,CAAC;GACH,CAAC;;CAGJ,AAAQ,qBAAqB,QAAkC;AAC7D,MAAI,CAAC,OAAO,wBAAwB,SAAS,WAAW,CACtD,QAAO,eAAe,CACpB;GACE,MAAM;GACN,SAAS;GACT,KAAK;GACN,CACF,CAAC;AAEJ,SAAO;;CAGT,AAAQ,oBAAoB,SAA+D;EAIzF,MAAM,UAAU,QAAQ,OAAO;EAC/B,MAAM,SAAS,QAAQ,SAAS,WAAW,IAAI,QAAQ,SAAS,cAAc;AAW9E,SADqB,gBATuC;GAC1D,UAAU,QAAQ;GAClB,QAAQ,QAAQ;GAChB;GACA,sCAAsB,IAAI,KAAK;GAC/B,qBAAqB,QAAQ;GAC7B,kBAAkB;GAClB,qBAAqB;GACtB,CACkD,CAC/B,OAAO"}
@@ -0,0 +1,132 @@
1
+ import { i as quoteIdentifier, n as escapeLiteral } from "./sql-utils-r-Lw535w.mjs";
2
+ import { c as qualifyTableName, f as resolveColumnTypeMetadata } from "./planner-sql-checks-7jkgm9TX.mjs";
3
+
4
+ //#region src/core/migrations/planner-ddl-builders.ts
5
+ function buildCreateTableSql(qualifiedTableName, table, codecHooks, storageTypes = {}) {
6
+ const columnDefinitions = Object.entries(table.columns).map(([columnName, column]) => {
7
+ return [
8
+ quoteIdentifier(columnName),
9
+ buildColumnTypeSql(column, codecHooks, storageTypes),
10
+ buildColumnDefaultSql(column.default, column),
11
+ column.nullable ? "" : "NOT NULL"
12
+ ].filter(Boolean).join(" ");
13
+ });
14
+ const constraintDefinitions = [];
15
+ if (table.primaryKey) constraintDefinitions.push(`PRIMARY KEY (${table.primaryKey.columns.map(quoteIdentifier).join(", ")})`);
16
+ return `CREATE TABLE ${qualifiedTableName} (\n ${[...columnDefinitions, ...constraintDefinitions].join(",\n ")}\n)`;
17
+ }
18
+ /**
19
+ * Pattern for safe PostgreSQL type names.
20
+ * Allows letters, digits, underscores, spaces (for "double precision", "character varying"),
21
+ * and trailing [] for array types.
22
+ */
23
+ const SAFE_NATIVE_TYPE_PATTERN = /^[a-zA-Z][a-zA-Z0-9_ ]*(\[\])?$/;
24
+ function assertSafeNativeType(nativeType) {
25
+ if (!SAFE_NATIVE_TYPE_PATTERN.test(nativeType)) throw new Error(`Unsafe native type name in contract: "${nativeType}". Native type names must match /^[a-zA-Z][a-zA-Z0-9_ ]*(\\[\\])?\$/`);
26
+ }
27
+ /**
28
+ * Sanity check against accidental SQL injection from malformed contract files.
29
+ * Rejects semicolons, SQL comment tokens, and dollar-quoting.
30
+ * Not a comprehensive security boundary — the contract is developer-authored.
31
+ */
32
+ function assertSafeDefaultExpression(expression) {
33
+ if (expression.includes(";") || /--|\/\*|\$\$|\bSELECT\b/i.test(expression)) throw new Error(`Unsafe default expression in contract: "${expression}". Default expressions must not contain semicolons, SQL comment tokens, dollar-quoting, or subqueries.`);
34
+ }
35
+ /**
36
+ * Renders the SQL type for a column in DDL context.
37
+ *
38
+ * @param allowPseudoTypes - When true (default), autoincrement integer columns
39
+ * produce SERIAL/BIGSERIAL/SMALLSERIAL pseudo-types. Set to false for contexts
40
+ * like ALTER COLUMN TYPE where pseudo-types are invalid.
41
+ */
42
+ function buildColumnTypeSql(column, codecHooks, storageTypes = {}, allowPseudoTypes = true) {
43
+ const resolved = resolveColumnTypeMetadata(column, storageTypes);
44
+ if (allowPseudoTypes) {
45
+ const columnDefault = column.default;
46
+ if (columnDefault?.kind === "function" && columnDefault.expression === "autoincrement()") {
47
+ if (resolved.nativeType === "int4" || resolved.nativeType === "integer") return "SERIAL";
48
+ if (resolved.nativeType === "int8" || resolved.nativeType === "bigint") return "BIGSERIAL";
49
+ if (resolved.nativeType === "int2" || resolved.nativeType === "smallint") return "SMALLSERIAL";
50
+ }
51
+ }
52
+ const expanded = expandParameterizedTypeSql(resolved, codecHooks);
53
+ if (expanded !== null) return expanded;
54
+ if (column.typeRef) return quoteIdentifier(resolved.nativeType);
55
+ assertSafeNativeType(resolved.nativeType);
56
+ return resolved.nativeType;
57
+ }
58
+ function expandParameterizedTypeSql(column, codecHooks) {
59
+ if (!column.typeParams) return null;
60
+ if (!column.codecId) throw new Error(`Column declares typeParams for nativeType "${column.nativeType}" but has no codecId. Ensure the column is associated with a codec.`);
61
+ const hooks = codecHooks.get(column.codecId);
62
+ if (!hooks?.expandNativeType) {
63
+ if (hooks?.planTypeOperations) return null;
64
+ throw new Error(`Column declares typeParams for nativeType "${column.nativeType}" but no expandNativeType hook is registered for codecId "${column.codecId}". Ensure the extension providing this codec is included in extensionPacks.`);
65
+ }
66
+ const expanded = hooks.expandNativeType({
67
+ nativeType: column.nativeType,
68
+ codecId: column.codecId,
69
+ typeParams: column.typeParams
70
+ });
71
+ return expanded !== column.nativeType ? expanded : null;
72
+ }
73
+ /** Autoincrement columns use SERIAL types, so this returns empty for them. */
74
+ function buildColumnDefaultSql(columnDefault, column) {
75
+ if (!columnDefault) return "";
76
+ switch (columnDefault.kind) {
77
+ case "literal": return `DEFAULT ${renderDefaultLiteral(columnDefault.value, column)}`;
78
+ case "function":
79
+ if (columnDefault.expression === "autoincrement()") return "";
80
+ assertSafeDefaultExpression(columnDefault.expression);
81
+ return `DEFAULT (${columnDefault.expression})`;
82
+ case "sequence": return `DEFAULT nextval('${escapeLiteral(quoteIdentifier(columnDefault.name))}'::regclass)`;
83
+ }
84
+ }
85
+ function renderDefaultLiteral(value, column) {
86
+ const isJsonColumn = column?.nativeType === "json" || column?.nativeType === "jsonb";
87
+ if (value instanceof Date) return `'${escapeLiteral(value.toISOString())}'`;
88
+ if (typeof value === "string") return `'${escapeLiteral(value)}'`;
89
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
90
+ if (value === null) return "NULL";
91
+ const json = JSON.stringify(value);
92
+ if (isJsonColumn) return `'${escapeLiteral(json)}'::${column.nativeType}`;
93
+ return `'${escapeLiteral(json)}'`;
94
+ }
95
+ function buildAddColumnSql(qualifiedTableName, columnName, column, codecHooks, temporaryDefault, storageTypes = {}) {
96
+ const typeSql = buildColumnTypeSql(column, codecHooks, storageTypes);
97
+ const defaultSql = buildColumnDefaultSql(column.default, column) || (temporaryDefault ? `DEFAULT ${temporaryDefault}` : "");
98
+ return [
99
+ `ALTER TABLE ${qualifiedTableName}`,
100
+ `ADD COLUMN ${quoteIdentifier(columnName)} ${typeSql}`,
101
+ defaultSql,
102
+ column.nullable ? "" : "NOT NULL"
103
+ ].filter(Boolean).join(" ");
104
+ }
105
+ const REFERENTIAL_ACTION_SQL = {
106
+ noAction: "NO ACTION",
107
+ restrict: "RESTRICT",
108
+ cascade: "CASCADE",
109
+ setNull: "SET NULL",
110
+ setDefault: "SET DEFAULT"
111
+ };
112
+ function buildForeignKeySql(schemaName, tableName, fkName, foreignKey) {
113
+ let sql = `ALTER TABLE ${qualifyTableName(schemaName, tableName)}
114
+ ADD CONSTRAINT ${quoteIdentifier(fkName)}
115
+ FOREIGN KEY (${foreignKey.columns.map(quoteIdentifier).join(", ")})
116
+ REFERENCES ${qualifyTableName(schemaName, foreignKey.references.table)} (${foreignKey.references.columns.map(quoteIdentifier).join(", ")})`;
117
+ if (foreignKey.onDelete !== void 0) {
118
+ const action = REFERENTIAL_ACTION_SQL[foreignKey.onDelete];
119
+ if (!action) throw new Error(`Unknown referential action for onDelete: ${String(foreignKey.onDelete)}`);
120
+ sql += `\nON DELETE ${action}`;
121
+ }
122
+ if (foreignKey.onUpdate !== void 0) {
123
+ const action = REFERENTIAL_ACTION_SQL[foreignKey.onUpdate];
124
+ if (!action) throw new Error(`Unknown referential action for onUpdate: ${String(foreignKey.onUpdate)}`);
125
+ sql += `\nON UPDATE ${action}`;
126
+ }
127
+ return sql;
128
+ }
129
+
130
+ //#endregion
131
+ export { buildForeignKeySql as a, buildCreateTableSql as i, buildColumnDefaultSql as n, renderDefaultLiteral as o, buildColumnTypeSql as r, buildAddColumnSql as t };
132
+ //# sourceMappingURL=planner-ddl-builders-Dxvw1LHw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-ddl-builders-Dxvw1LHw.mjs","names":["constraintDefinitions: string[]","REFERENTIAL_ACTION_SQL: Record<ReferentialAction, string>"],"sources":["../src/core/migrations/planner-ddl-builders.ts"],"sourcesContent":["import type { CodecControlHooks } from '@prisma-next/family-sql/control';\nimport type {\n ForeignKey,\n ReferentialAction,\n StorageColumn,\n StorageTable,\n StorageTypeInstance,\n} from '@prisma-next/sql-contract/types';\nimport { escapeLiteral, quoteIdentifier } from '../sql-utils';\nimport type { PostgresColumnDefault } from '../types';\nimport { qualifyTableName } from './planner-sql-checks';\nimport { resolveColumnTypeMetadata } from './planner-type-resolution';\n\nexport function buildCreateTableSql(\n qualifiedTableName: string,\n table: StorageTable,\n codecHooks: Map<string, CodecControlHooks>,\n storageTypes: Record<string, StorageTypeInstance> = {},\n): string {\n const columnDefinitions = Object.entries(table.columns).map(\n ([columnName, column]: [string, StorageColumn]) => {\n const parts = [\n quoteIdentifier(columnName),\n buildColumnTypeSql(column, codecHooks, storageTypes),\n buildColumnDefaultSql(column.default, column),\n column.nullable ? '' : 'NOT NULL',\n ].filter(Boolean);\n return parts.join(' ');\n },\n );\n\n const constraintDefinitions: string[] = [];\n if (table.primaryKey) {\n constraintDefinitions.push(\n `PRIMARY KEY (${table.primaryKey.columns.map(quoteIdentifier).join(', ')})`,\n );\n }\n\n const allDefinitions = [...columnDefinitions, ...constraintDefinitions];\n return `CREATE TABLE ${qualifiedTableName} (\\n ${allDefinitions.join(',\\n ')}\\n)`;\n}\n\n/**\n * Pattern for safe PostgreSQL type names.\n * Allows letters, digits, underscores, spaces (for \"double precision\", \"character varying\"),\n * and trailing [] for array types.\n */\nconst SAFE_NATIVE_TYPE_PATTERN = /^[a-zA-Z][a-zA-Z0-9_ ]*(\\[\\])?$/;\n\nfunction assertSafeNativeType(nativeType: string): void {\n if (!SAFE_NATIVE_TYPE_PATTERN.test(nativeType)) {\n throw new Error(\n `Unsafe native type name in contract: \"${nativeType}\". ` +\n 'Native type names must match /^[a-zA-Z][a-zA-Z0-9_ ]*(\\\\[\\\\])?$/',\n );\n }\n}\n\n/**\n * Sanity check against accidental SQL injection from malformed contract files.\n * Rejects semicolons, SQL comment tokens, and dollar-quoting.\n * Not a comprehensive security boundary — the contract is developer-authored.\n */\nfunction assertSafeDefaultExpression(expression: string): void {\n if (expression.includes(';') || /--|\\/\\*|\\$\\$|\\bSELECT\\b/i.test(expression)) {\n throw new Error(\n `Unsafe default expression in contract: \"${expression}\". ` +\n 'Default expressions must not contain semicolons, SQL comment tokens, dollar-quoting, or subqueries.',\n );\n }\n}\n\n/**\n * Renders the SQL type for a column in DDL context.\n *\n * @param allowPseudoTypes - When true (default), autoincrement integer columns\n * produce SERIAL/BIGSERIAL/SMALLSERIAL pseudo-types. Set to false for contexts\n * like ALTER COLUMN TYPE where pseudo-types are invalid.\n */\nexport function buildColumnTypeSql(\n column: StorageColumn,\n codecHooks: Map<string, CodecControlHooks>,\n storageTypes: Record<string, StorageTypeInstance> = {},\n allowPseudoTypes = true,\n): string {\n const resolved = resolveColumnTypeMetadata(column, storageTypes);\n\n if (allowPseudoTypes) {\n const columnDefault = column.default;\n if (columnDefault?.kind === 'function' && columnDefault.expression === 'autoincrement()') {\n if (resolved.nativeType === 'int4' || resolved.nativeType === 'integer') {\n return 'SERIAL';\n }\n if (resolved.nativeType === 'int8' || resolved.nativeType === 'bigint') {\n return 'BIGSERIAL';\n }\n if (resolved.nativeType === 'int2' || resolved.nativeType === 'smallint') {\n return 'SMALLSERIAL';\n }\n }\n }\n\n const expanded = expandParameterizedTypeSql(resolved, codecHooks);\n if (expanded !== null) {\n return expanded;\n }\n\n if (column.typeRef) {\n return quoteIdentifier(resolved.nativeType);\n }\n\n assertSafeNativeType(resolved.nativeType);\n return resolved.nativeType;\n}\n\nfunction expandParameterizedTypeSql(\n column: Pick<StorageColumn, 'nativeType' | 'codecId' | 'typeParams'>,\n codecHooks: Map<string, CodecControlHooks>,\n): string | null {\n if (!column.typeParams) {\n return null;\n }\n\n if (!column.codecId) {\n throw new Error(\n `Column declares typeParams for nativeType \"${column.nativeType}\" but has no codecId. ` +\n 'Ensure the column is associated with a codec.',\n );\n }\n\n const hooks = codecHooks.get(column.codecId);\n if (!hooks?.expandNativeType) {\n if (hooks?.planTypeOperations) {\n return null;\n }\n throw new Error(\n `Column declares typeParams for nativeType \"${column.nativeType}\" ` +\n `but no expandNativeType hook is registered for codecId \"${column.codecId}\". ` +\n 'Ensure the extension providing this codec is included in extensionPacks.',\n );\n }\n\n const expanded = hooks.expandNativeType({\n nativeType: column.nativeType,\n codecId: column.codecId,\n typeParams: column.typeParams,\n });\n\n return expanded !== column.nativeType ? expanded : null;\n}\n\n/** Autoincrement columns use SERIAL types, so this returns empty for them. */\nexport function buildColumnDefaultSql(\n columnDefault: PostgresColumnDefault | undefined,\n column?: StorageColumn,\n): string {\n if (!columnDefault) {\n return '';\n }\n\n switch (columnDefault.kind) {\n case 'literal':\n return `DEFAULT ${renderDefaultLiteral(columnDefault.value, column)}`;\n case 'function': {\n if (columnDefault.expression === 'autoincrement()') {\n return '';\n }\n assertSafeDefaultExpression(columnDefault.expression);\n return `DEFAULT (${columnDefault.expression})`;\n }\n case 'sequence':\n return `DEFAULT nextval('${escapeLiteral(quoteIdentifier(columnDefault.name))}'::regclass)`;\n }\n}\n\nexport function renderDefaultLiteral(value: unknown, column?: StorageColumn): string {\n const isJsonColumn = column?.nativeType === 'json' || column?.nativeType === 'jsonb';\n\n if (value instanceof Date) {\n return `'${escapeLiteral(value.toISOString())}'`;\n }\n if (typeof value === 'string') {\n return `'${escapeLiteral(value)}'`;\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (value === null) {\n return 'NULL';\n }\n const json = JSON.stringify(value);\n if (isJsonColumn) {\n return `'${escapeLiteral(json)}'::${column.nativeType}`;\n }\n return `'${escapeLiteral(json)}'`;\n}\n\nexport function buildAddColumnSql(\n qualifiedTableName: string,\n columnName: string,\n column: StorageColumn,\n codecHooks: Map<string, CodecControlHooks>,\n temporaryDefault?: string | null,\n storageTypes: Record<string, StorageTypeInstance> = {},\n): string {\n const typeSql = buildColumnTypeSql(column, codecHooks, storageTypes);\n const defaultSql =\n buildColumnDefaultSql(column.default, column) ||\n (temporaryDefault ? `DEFAULT ${temporaryDefault}` : '');\n const parts = [\n `ALTER TABLE ${qualifiedTableName}`,\n `ADD COLUMN ${quoteIdentifier(columnName)} ${typeSql}`,\n defaultSql,\n column.nullable ? '' : 'NOT NULL',\n ].filter(Boolean);\n return parts.join(' ');\n}\n\nconst REFERENTIAL_ACTION_SQL: Record<ReferentialAction, string> = {\n noAction: 'NO ACTION',\n restrict: 'RESTRICT',\n cascade: 'CASCADE',\n setNull: 'SET NULL',\n setDefault: 'SET DEFAULT',\n};\n\nexport function buildForeignKeySql(\n schemaName: string,\n tableName: string,\n fkName: string,\n foreignKey: ForeignKey,\n): string {\n let sql = `ALTER TABLE ${qualifyTableName(schemaName, tableName)}\nADD CONSTRAINT ${quoteIdentifier(fkName)}\nFOREIGN KEY (${foreignKey.columns.map(quoteIdentifier).join(', ')})\nREFERENCES ${qualifyTableName(schemaName, foreignKey.references.table)} (${foreignKey.references.columns\n .map(quoteIdentifier)\n .join(', ')})`;\n\n if (foreignKey.onDelete !== undefined) {\n const action = REFERENTIAL_ACTION_SQL[foreignKey.onDelete];\n if (!action) {\n throw new Error(`Unknown referential action for onDelete: ${String(foreignKey.onDelete)}`);\n }\n sql += `\\nON DELETE ${action}`;\n }\n if (foreignKey.onUpdate !== undefined) {\n const action = REFERENTIAL_ACTION_SQL[foreignKey.onUpdate];\n if (!action) {\n throw new Error(`Unknown referential action for onUpdate: ${String(foreignKey.onUpdate)}`);\n }\n sql += `\\nON UPDATE ${action}`;\n }\n\n return sql;\n}\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { t as PostgresColumnDefault } from "./types-ClK03Ojd.mjs";
2
+ import { CodecControlHooks } from "@prisma-next/family-sql/control";
3
+ import { ForeignKey, StorageColumn, StorageTable, StorageTypeInstance } from "@prisma-next/sql-contract/types";
4
+
5
+ //#region src/core/migrations/planner-ddl-builders.d.ts
6
+ declare function buildCreateTableSql(qualifiedTableName: string, table: StorageTable, codecHooks: Map<string, CodecControlHooks>, storageTypes?: Record<string, StorageTypeInstance>): string;
7
+ /**
8
+ * Renders the SQL type for a column in DDL context.
9
+ *
10
+ * @param allowPseudoTypes - When true (default), autoincrement integer columns
11
+ * produce SERIAL/BIGSERIAL/SMALLSERIAL pseudo-types. Set to false for contexts
12
+ * like ALTER COLUMN TYPE where pseudo-types are invalid.
13
+ */
14
+ declare function buildColumnTypeSql(column: StorageColumn, codecHooks: Map<string, CodecControlHooks>, storageTypes?: Record<string, StorageTypeInstance>, allowPseudoTypes?: boolean): string;
15
+ /** Autoincrement columns use SERIAL types, so this returns empty for them. */
16
+ declare function buildColumnDefaultSql(columnDefault: PostgresColumnDefault | undefined, column?: StorageColumn): string;
17
+ declare function renderDefaultLiteral(value: unknown, column?: StorageColumn): string;
18
+ declare function buildAddColumnSql(qualifiedTableName: string, columnName: string, column: StorageColumn, codecHooks: Map<string, CodecControlHooks>, temporaryDefault?: string | null, storageTypes?: Record<string, StorageTypeInstance>): string;
19
+ declare function buildForeignKeySql(schemaName: string, tableName: string, fkName: string, foreignKey: ForeignKey): string;
20
+ //#endregion
21
+ export { buildAddColumnSql, buildColumnDefaultSql, buildColumnTypeSql, buildCreateTableSql, buildForeignKeySql, renderDefaultLiteral };
22
+ //# sourceMappingURL=planner-ddl-builders.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-ddl-builders.d.mts","names":[],"sources":["../src/core/migrations/planner-ddl-builders.ts"],"sourcesContent":[],"mappings":";;;;;iBAagB,mBAAA,oCAEP,0BACK,YAAY,mCACV,eAAe;;AAJ/B;;;;;;AAIsB,iBA8DN,kBAAA,CA9DM,MAAA,EA+DZ,aA/DY,EAAA,UAAA,EAgER,GAhEQ,CAAA,MAAA,EAgEI,iBAhEJ,CAAA,EAAA,YAAA,CAAA,EAiEN,MAjEM,CAAA,MAAA,EAiES,mBAjET,CAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,CAAA,EAAA,MAAA;AA8DtB;AACU,iBAwEM,qBAAA,CAxEN,aAAA,EAyEO,qBAzEP,GAAA,SAAA,EAAA,MAAA,CAAA,EA0EC,aA1ED,CAAA,EAAA,MAAA;AACgB,iBA8FV,oBAAA,CA9FU,KAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EA8FoC,aA9FpC,CAAA,EAAA,MAAA;AAAZ,iBAoHE,iBAAA,CApHF,kBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAuHJ,aAvHI,EAAA,UAAA,EAwHA,GAxHA,CAAA,MAAA,EAwHY,iBAxHZ,CAAA,EAAA,gBAAA,CAAA,EAAA,MAAA,GAAA,IAAA,EAAA,YAAA,CAAA,EA0HE,MA1HF,CAAA,MAAA,EA0HiB,mBA1HjB,CAAA,CAAA,EAAA,MAAA;AACiB,iBAgJf,kBAAA,CAhJe,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAoJjB,UApJiB,CAAA,EAAA,MAAA"}
@@ -0,0 +1,3 @@
1
+ import { a as buildForeignKeySql, i as buildCreateTableSql, n as buildColumnDefaultSql, o as renderDefaultLiteral, r as buildColumnTypeSql, t as buildAddColumnSql } from "./planner-ddl-builders-Dxvw1LHw.mjs";
2
+
3
+ export { buildAddColumnSql, buildColumnDefaultSql, buildColumnTypeSql, buildCreateTableSql, buildForeignKeySql, renderDefaultLiteral };