@prisma-next/target-postgres 0.14.0-dev.60 → 0.14.0-dev.62

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 (127) hide show
  1. package/dist/{authoring-WkqG_MkU.mjs → authoring-CdIZ0yvD.mjs} +147 -38
  2. package/dist/authoring-CdIZ0yvD.mjs.map +1 -0
  3. package/dist/contract-free.d.mts +1 -1
  4. package/dist/contract-free.d.mts.map +1 -1
  5. package/dist/contract-free.mjs +2 -2
  6. package/dist/{control-policy-Co_13Hxa.mjs → control-policy-DKp0HKpY.mjs} +203 -45
  7. package/dist/control-policy-DKp0HKpY.mjs.map +1 -0
  8. package/dist/control.mjs +22 -25
  9. package/dist/control.mjs.map +1 -1
  10. package/dist/{ddl-B-krEXY1.mjs → ddl-gmxHf68z.mjs} +20 -4
  11. package/dist/{ddl-B-krEXY1.mjs.map → ddl-gmxHf68z.mjs.map} +1 -1
  12. package/dist/ddl.d.mts +2 -2
  13. package/dist/ddl.mjs +2 -2
  14. package/dist/{descriptor-meta-BOcKPaLE.mjs → descriptor-meta-DEuXJfpR.mjs} +3 -3
  15. package/dist/{descriptor-meta-BOcKPaLE.mjs.map → descriptor-meta-DEuXJfpR.mjs.map} +1 -1
  16. package/dist/{diff-database-schema-BOsDnH64.mjs → diff-database-schema-D2sjvMw9.mjs} +55 -19
  17. package/dist/diff-database-schema-D2sjvMw9.mjs.map +1 -0
  18. package/dist/diff-database-schema.d.mts +4 -4
  19. package/dist/diff-database-schema.d.mts.map +1 -1
  20. package/dist/diff-database-schema.mjs +1 -1
  21. package/dist/issue-planner.d.mts +1 -1
  22. package/dist/issue-planner.d.mts.map +1 -1
  23. package/dist/issue-planner.mjs +1 -1
  24. package/dist/migration.d.mts +2 -2
  25. package/dist/migration.mjs +2 -2
  26. package/dist/{nodes-BtQyZha6.d.mts → nodes-Bc2N3tMy.d.mts} +27 -3
  27. package/dist/nodes-Bc2N3tMy.d.mts.map +1 -0
  28. package/dist/{nodes-B815pj_X.mjs → nodes-DJC5B8Id.mjs} +32 -2
  29. package/dist/nodes-DJC5B8Id.mjs.map +1 -0
  30. package/dist/{op-factory-call-DxNNKUeZ.mjs → op-factory-call-C4flTtTG.mjs} +105 -6
  31. package/dist/op-factory-call-C4flTtTG.mjs.map +1 -0
  32. package/dist/{op-factory-call-D6_7-7Vc.d.mts → op-factory-call-CSIg5XDu.d.mts} +26 -3
  33. package/dist/{op-factory-call-D6_7-7Vc.d.mts.map → op-factory-call-CSIg5XDu.d.mts.map} +1 -1
  34. package/dist/op-factory-call.d.mts +2 -2
  35. package/dist/op-factory-call.mjs +2 -2
  36. package/dist/pack.d.mts +146 -3
  37. package/dist/pack.d.mts.map +1 -1
  38. package/dist/pack.mjs +1 -1
  39. package/dist/{planner-CNrc1Odu.mjs → planner-BtEd5LMr.mjs} +32 -64
  40. package/dist/planner-BtEd5LMr.mjs.map +1 -0
  41. package/dist/{planner-ddl-builders-B8Nn6nHN.mjs → planner-ddl-builders-BKlmGDJl.mjs} +7 -3
  42. package/dist/planner-ddl-builders-BKlmGDJl.mjs.map +1 -0
  43. package/dist/planner-ddl-builders.d.mts.map +1 -1
  44. package/dist/planner-ddl-builders.mjs +1 -1
  45. package/dist/{planner-produced-postgres-migration-a-tjfKsA.d.mts → planner-produced-postgres-migration-CXue-6M9.d.mts} +2 -2
  46. package/dist/{planner-produced-postgres-migration-a-tjfKsA.d.mts.map → planner-produced-postgres-migration-CXue-6M9.d.mts.map} +1 -1
  47. package/dist/{planner-produced-postgres-migration-NI-oGKcw.mjs → planner-produced-postgres-migration-Jat3hg4u.mjs} +2 -2
  48. package/dist/{planner-produced-postgres-migration-NI-oGKcw.mjs.map → planner-produced-postgres-migration-Jat3hg4u.mjs.map} +1 -1
  49. package/dist/planner-produced-postgres-migration.d.mts +1 -1
  50. package/dist/planner-produced-postgres-migration.mjs +1 -1
  51. package/dist/{planner-sql-checks-AXoxB1Jl.mjs → planner-sql-checks-Br1c_QsH.mjs} +3 -3
  52. package/dist/{planner-sql-checks-AXoxB1Jl.mjs.map → planner-sql-checks-Br1c_QsH.mjs.map} +1 -1
  53. package/dist/planner-sql-checks.mjs +1 -1
  54. package/dist/planner.d.mts +3 -3
  55. package/dist/planner.d.mts.map +1 -1
  56. package/dist/planner.mjs +2 -2
  57. package/dist/{postgres-contract-view-Dg-N7KA7.mjs → postgres-contract-view-BAPW0ec1.mjs} +3 -3
  58. package/dist/{postgres-contract-view-Dg-N7KA7.mjs.map → postgres-contract-view-BAPW0ec1.mjs.map} +1 -1
  59. package/dist/{postgres-database-schema-node-CfdTY-Qs.d.mts → postgres-database-schema-node-CJv5bfbs.d.mts} +70 -26
  60. package/dist/postgres-database-schema-node-CJv5bfbs.d.mts.map +1 -0
  61. package/dist/{postgres-migration-ChyRsWvE.mjs → postgres-migration-ChLMQRd-.mjs} +19 -3
  62. package/dist/postgres-migration-ChLMQRd-.mjs.map +1 -0
  63. package/dist/{postgres-migration-Bzzi0Asr.d.mts → postgres-migration-DkmgGNcv.d.mts} +21 -2
  64. package/dist/postgres-migration-DkmgGNcv.d.mts.map +1 -0
  65. package/dist/{postgres-role-schema-node-BiSTCTNg.mjs → postgres-role-schema-node-Cm-j0ZGM.mjs} +20 -25
  66. package/dist/postgres-role-schema-node-Cm-j0ZGM.mjs.map +1 -0
  67. package/dist/{postgres-schema-DTLA_aRi.mjs → postgres-schema-DWQ0-CPb.mjs} +32 -4
  68. package/dist/postgres-schema-DWQ0-CPb.mjs.map +1 -0
  69. package/dist/{postgres-schema-CU4gF6QZ.d.mts → postgres-schema-DsrtYp2v.d.mts} +13 -1
  70. package/dist/postgres-schema-DsrtYp2v.d.mts.map +1 -0
  71. package/dist/{postgres-table-schema-node-9FCtCUz2.mjs → postgres-table-schema-node-D6LvInCe.mjs} +71 -8
  72. package/dist/postgres-table-schema-node-D6LvInCe.mjs.map +1 -0
  73. package/dist/{resolve-ddl-schema-Ca88Tg6W.mjs → resolve-ddl-schema-CAza65Iy.mjs} +2 -2
  74. package/dist/{resolve-ddl-schema-Ca88Tg6W.mjs.map → resolve-ddl-schema-CAza65Iy.mjs.map} +1 -1
  75. package/dist/runtime.mjs +1 -1
  76. package/dist/schema-ir-annotations.mjs +1 -1
  77. package/dist/{sql-utils-DcfMz4MQ.mjs → sql-utils-SU4FDvIV.mjs} +12 -3
  78. package/dist/{sql-utils-DcfMz4MQ.mjs.map → sql-utils-SU4FDvIV.mjs.map} +1 -1
  79. package/dist/sql-utils.d.mts +8 -1
  80. package/dist/sql-utils.d.mts.map +1 -1
  81. package/dist/sql-utils.mjs +2 -2
  82. package/dist/types.d.mts +3 -3
  83. package/dist/types.mjs +4 -4
  84. package/package.json +20 -20
  85. package/src/contract-free/ddl.ts +27 -0
  86. package/src/core/authoring.ts +136 -25
  87. package/src/core/ddl/nodes.ts +44 -0
  88. package/src/core/migrations/contract-to-postgres-database-schema-node.ts +12 -1
  89. package/src/core/migrations/control-policy.ts +172 -45
  90. package/src/core/migrations/diff-database-schema.ts +48 -13
  91. package/src/core/migrations/issue-planner.ts +77 -4
  92. package/src/core/migrations/op-factory-call.ts +84 -0
  93. package/src/core/migrations/operations/native-enum-types.ts +62 -0
  94. package/src/core/migrations/planner-ddl-builders.ts +12 -2
  95. package/src/core/migrations/planner.ts +30 -62
  96. package/src/core/migrations/postgres-migration.ts +31 -0
  97. package/src/core/migrations/verify-postgres-namespaces.ts +0 -1
  98. package/src/core/postgres-role.ts +22 -0
  99. package/src/core/postgres-schema.ts +22 -1
  100. package/src/core/postgres-validators.ts +1 -0
  101. package/src/core/psl-infer/infer-psl-contract.ts +7 -16
  102. package/src/core/schema-ir/node-storage-coordinate.ts +26 -0
  103. package/src/core/schema-ir/postgres-database-schema-node.ts +5 -4
  104. package/src/core/schema-ir/postgres-namespace-schema-node.ts +18 -27
  105. package/src/core/schema-ir/postgres-native-enum-schema-node.ts +83 -0
  106. package/src/core/schema-ir/postgres-role-schema-node.ts +4 -2
  107. package/src/core/schema-ir/schema-node-kinds.ts +19 -3
  108. package/src/core/sql-utils.ts +15 -2
  109. package/src/exports/ddl.ts +2 -0
  110. package/src/exports/op-factory-call.ts +2 -0
  111. package/src/exports/sql-utils.ts +1 -0
  112. package/src/exports/types.ts +4 -1
  113. package/dist/authoring-WkqG_MkU.mjs.map +0 -1
  114. package/dist/control-policy-Co_13Hxa.mjs.map +0 -1
  115. package/dist/diff-database-schema-BOsDnH64.mjs.map +0 -1
  116. package/dist/nodes-B815pj_X.mjs.map +0 -1
  117. package/dist/nodes-BtQyZha6.d.mts.map +0 -1
  118. package/dist/op-factory-call-DxNNKUeZ.mjs.map +0 -1
  119. package/dist/planner-CNrc1Odu.mjs.map +0 -1
  120. package/dist/planner-ddl-builders-B8Nn6nHN.mjs.map +0 -1
  121. package/dist/postgres-database-schema-node-CfdTY-Qs.d.mts.map +0 -1
  122. package/dist/postgres-migration-Bzzi0Asr.d.mts.map +0 -1
  123. package/dist/postgres-migration-ChyRsWvE.mjs.map +0 -1
  124. package/dist/postgres-role-schema-node-BiSTCTNg.mjs.map +0 -1
  125. package/dist/postgres-schema-CU4gF6QZ.d.mts.map +0 -1
  126. package/dist/postgres-schema-DTLA_aRi.mjs.map +0 -1
  127. package/dist/postgres-table-schema-node-9FCtCUz2.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"op-factory-call-D6_7-7Vc.d.mts","names":[],"sources":["../src/core/migrations/operations/shared.ts","../src/core/migrations/op-factory-call.ts"],"mappings":"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"}
1
+ {"version":3,"file":"op-factory-call-CSIg5XDu.d.mts","names":[],"sources":["../src/core/migrations/operations/shared.ts","../src/core/migrations/op-factory-call.ts"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { C as SetDefaultCall, S as RawSqlCall, _ as DropDefaultCall, a as AddPrimaryKeyCall, b as DropTableCall, d as CreateSchemaCall, f as CreateTableCall, g as DropConstraintCall, h as DropColumnCall, i as AddNotNullColumnWithTempDefaultCall, l as CreateExtensionCall, m as DropCheckConstraintCall, n as AddColumnCall, o as AddUniqueCall, p as DataTransformCall, r as AddForeignKeyCall, s as AlterColumnTypeCall, t as AddCheckConstraintCall, u as CreateIndexCall, v as DropIndexCall, w as SetNotNullCall, y as DropNotNullCall } from "./op-factory-call-D6_7-7Vc.mjs";
2
- export { AddCheckConstraintCall, AddColumnCall, AddForeignKeyCall, AddNotNullColumnWithTempDefaultCall, AddPrimaryKeyCall, AddUniqueCall, AlterColumnTypeCall, CreateExtensionCall, CreateIndexCall, CreateSchemaCall, CreateTableCall, DataTransformCall, DropCheckConstraintCall, DropColumnCall, DropConstraintCall, DropDefaultCall, DropIndexCall, DropNotNullCall, DropTableCall, RawSqlCall, SetDefaultCall, SetNotNullCall };
1
+ import { E as SetNotNullCall, S as DropTableCall, T as SetDefaultCall, _ as DropConstraintCall, a as AddPrimaryKeyCall, b as DropNativeEnumTypeCall, d as CreateNativeEnumTypeCall, f as CreateSchemaCall, g as DropColumnCall, h as DropCheckConstraintCall, i as AddNotNullColumnWithTempDefaultCall, l as CreateExtensionCall, m as DataTransformCall, n as AddColumnCall, o as AddUniqueCall, p as CreateTableCall, r as AddForeignKeyCall, s as AlterColumnTypeCall, t as AddCheckConstraintCall, u as CreateIndexCall, v as DropDefaultCall, w as RawSqlCall, x as DropNotNullCall, y as DropIndexCall } from "./op-factory-call-CSIg5XDu.mjs";
2
+ export { AddCheckConstraintCall, AddColumnCall, AddForeignKeyCall, AddNotNullColumnWithTempDefaultCall, AddPrimaryKeyCall, AddUniqueCall, AlterColumnTypeCall, CreateExtensionCall, CreateIndexCall, CreateNativeEnumTypeCall, CreateSchemaCall, CreateTableCall, DataTransformCall, DropCheckConstraintCall, DropColumnCall, DropConstraintCall, DropDefaultCall, DropIndexCall, DropNativeEnumTypeCall, DropNotNullCall, DropTableCall, RawSqlCall, SetDefaultCall, SetNotNullCall };
@@ -1,2 +1,2 @@
1
- import { C as DropTableCall, D as SetDefaultCall, O as SetNotNullCall, T as RawSqlCall, _ as DropColumnCall, a as AddNotNullColumnWithTempDefaultCall, b as DropIndexCall, c as AlterColumnTypeCall, f as CreateSchemaCall, g as DropCheckConstraintCall, l as CreateExtensionCall, m as DataTransformCall, n as AddColumnCall, o as AddPrimaryKeyCall, p as CreateTableCall, r as AddForeignKeyCall, s as AddUniqueCall, t as AddCheckConstraintCall, u as CreateIndexCall, v as DropConstraintCall, x as DropNotNullCall, y as DropDefaultCall } from "./op-factory-call-DxNNKUeZ.mjs";
2
- export { AddCheckConstraintCall, AddColumnCall, AddForeignKeyCall, AddNotNullColumnWithTempDefaultCall, AddPrimaryKeyCall, AddUniqueCall, AlterColumnTypeCall, CreateExtensionCall, CreateIndexCall, CreateSchemaCall, CreateTableCall, DataTransformCall, DropCheckConstraintCall, DropColumnCall, DropConstraintCall, DropDefaultCall, DropIndexCall, DropNotNullCall, DropTableCall, RawSqlCall, SetDefaultCall, SetNotNullCall };
1
+ import { A as SetNotNullCall, C as DropNotNullCall, D as RawSqlCall, S as DropNativeEnumTypeCall, T as DropTableCall, _ as DropCheckConstraintCall, a as AddNotNullColumnWithTempDefaultCall, b as DropDefaultCall, c as AlterColumnTypeCall, d as CreateNativeEnumTypeCall, h as DataTransformCall, k as SetDefaultCall, l as CreateExtensionCall, m as CreateTableCall, n as AddColumnCall, o as AddPrimaryKeyCall, p as CreateSchemaCall, r as AddForeignKeyCall, s as AddUniqueCall, t as AddCheckConstraintCall, u as CreateIndexCall, v as DropColumnCall, x as DropIndexCall, y as DropConstraintCall } from "./op-factory-call-C4flTtTG.mjs";
2
+ export { AddCheckConstraintCall, AddColumnCall, AddForeignKeyCall, AddNotNullColumnWithTempDefaultCall, AddPrimaryKeyCall, AddUniqueCall, AlterColumnTypeCall, CreateExtensionCall, CreateIndexCall, CreateNativeEnumTypeCall, CreateSchemaCall, CreateTableCall, DataTransformCall, DropCheckConstraintCall, DropColumnCall, DropConstraintCall, DropDefaultCall, DropIndexCall, DropNativeEnumTypeCall, DropNotNullCall, DropTableCall, RawSqlCall, SetDefaultCall, SetNotNullCall };
package/dist/pack.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Y as postgresQualifyColumnType } from "./codecs-Cm-nS4mQ.mjs";
2
2
  import { r as CodecTypes } from "./codec-types-BiIWziRO.mjs";
3
3
  import { t as PostgresRlsPolicy } from "./postgres-rls-policy--CSddvMR.mjs";
4
- import { a as postgresCreateNamespace, c as PostgresRlsEnablement, d as PostgresRoleInput, l as PostgresRlsEnablementInput, o as PostgresNativeEnum, u as PostgresRole } from "./postgres-schema-CU4gF6QZ.mjs";
4
+ import { a as postgresCreateNamespace, c as PostgresRlsEnablement, d as PostgresRoleInput, l as PostgresRlsEnablementInput, o as PostgresNativeEnum, u as PostgresRole } from "./postgres-schema-DsrtYp2v.mjs";
5
5
  import { PslExtensionBlock } from "@prisma-next/framework-components/authoring";
6
6
 
7
7
  //#region src/core/authoring.d.ts
@@ -167,6 +167,7 @@ declare const postgresTargetDescriptorMetaBase: {
167
167
  kind: "role";
168
168
  name: string;
169
169
  namespaceId: string;
170
+ control?: "external";
170
171
  }, {}>;
171
172
  readonly output: {
172
173
  readonly factory: (input: PostgresRoleInput) => PostgresRole;
@@ -200,7 +201,7 @@ declare const postgresTargetDescriptorMetaBase: {
200
201
  withCheck?: string;
201
202
  }, {}>;
202
203
  readonly output: {
203
- readonly factory: (block: RlsPolicyExtensionBlock, _ctx: import("@prisma-next/framework-components/authoring").AuthoringEntityContext) => PostgresRlsPolicy;
204
+ readonly factory: (block: RlsPolicyExtensionBlock, ctx: import("@prisma-next/framework-components/authoring").AuthoringEntityContext) => PostgresRlsPolicy | undefined;
204
205
  };
205
206
  };
206
207
  readonly native_enum: {
@@ -210,7 +211,7 @@ declare const postgresTargetDescriptorMetaBase: {
210
211
  kind: "postgres-enum";
211
212
  typeName: string;
212
213
  members: readonly string[];
213
- control?: "managed" | "tolerated" | "external" | "observed";
214
+ control?: "external" | "managed" | "tolerated" | "observed";
214
215
  }, {}>;
215
216
  readonly output: {
216
217
  factory: (block: import("@prisma-next/psl-parser").PslExtensionBlock, ctx: import("@prisma-next/framework-components/authoring").AuthoringEntityContext) => PostgresNativeEnum | undefined;
@@ -255,6 +256,148 @@ declare const postgresTargetDescriptorMetaBase: {
255
256
  readonly attribute: "rls";
256
257
  };
257
258
  };
259
+ readonly policy_delete: {
260
+ readonly kind: "pslBlock";
261
+ readonly keyword: "policy_delete";
262
+ readonly discriminator: "policy";
263
+ readonly name: {
264
+ readonly required: true;
265
+ };
266
+ readonly parameters: {
267
+ readonly target: {
268
+ readonly kind: "ref";
269
+ readonly refKind: "model";
270
+ readonly scope: "same-namespace";
271
+ readonly required: true;
272
+ };
273
+ readonly roles: {
274
+ readonly kind: "list";
275
+ readonly of: {
276
+ readonly kind: "ref";
277
+ readonly refKind: "role";
278
+ readonly scope: "cross-space";
279
+ };
280
+ };
281
+ readonly using: {
282
+ readonly kind: "value";
283
+ readonly codecId: "pg/text@1";
284
+ readonly required: true;
285
+ };
286
+ };
287
+ readonly requiresModelAttribute: {
288
+ readonly parameter: "target";
289
+ readonly attribute: "rls";
290
+ };
291
+ };
292
+ readonly policy_insert: {
293
+ readonly kind: "pslBlock";
294
+ readonly keyword: "policy_insert";
295
+ readonly discriminator: "policy";
296
+ readonly name: {
297
+ readonly required: true;
298
+ };
299
+ readonly parameters: {
300
+ readonly target: {
301
+ readonly kind: "ref";
302
+ readonly refKind: "model";
303
+ readonly scope: "same-namespace";
304
+ readonly required: true;
305
+ };
306
+ readonly roles: {
307
+ readonly kind: "list";
308
+ readonly of: {
309
+ readonly kind: "ref";
310
+ readonly refKind: "role";
311
+ readonly scope: "cross-space";
312
+ };
313
+ };
314
+ readonly withCheck: {
315
+ readonly kind: "value";
316
+ readonly codecId: "pg/text@1";
317
+ readonly required: true;
318
+ };
319
+ };
320
+ readonly requiresModelAttribute: {
321
+ readonly parameter: "target";
322
+ readonly attribute: "rls";
323
+ };
324
+ };
325
+ readonly policy_update: {
326
+ readonly kind: "pslBlock";
327
+ readonly keyword: "policy_update";
328
+ readonly discriminator: "policy";
329
+ readonly name: {
330
+ readonly required: true;
331
+ };
332
+ readonly parameters: {
333
+ readonly target: {
334
+ readonly kind: "ref";
335
+ readonly refKind: "model";
336
+ readonly scope: "same-namespace";
337
+ readonly required: true;
338
+ };
339
+ readonly roles: {
340
+ readonly kind: "list";
341
+ readonly of: {
342
+ readonly kind: "ref";
343
+ readonly refKind: "role";
344
+ readonly scope: "cross-space";
345
+ };
346
+ };
347
+ readonly using: {
348
+ readonly kind: "value";
349
+ readonly codecId: "pg/text@1";
350
+ readonly required: true;
351
+ };
352
+ readonly withCheck: {
353
+ readonly kind: "value";
354
+ readonly codecId: "pg/text@1";
355
+ readonly required: true;
356
+ };
357
+ };
358
+ readonly requiresModelAttribute: {
359
+ readonly parameter: "target";
360
+ readonly attribute: "rls";
361
+ };
362
+ };
363
+ readonly policy_all: {
364
+ readonly kind: "pslBlock";
365
+ readonly keyword: "policy_all";
366
+ readonly discriminator: "policy";
367
+ readonly name: {
368
+ readonly required: true;
369
+ };
370
+ readonly parameters: {
371
+ readonly target: {
372
+ readonly kind: "ref";
373
+ readonly refKind: "model";
374
+ readonly scope: "same-namespace";
375
+ readonly required: true;
376
+ };
377
+ readonly roles: {
378
+ readonly kind: "list";
379
+ readonly of: {
380
+ readonly kind: "ref";
381
+ readonly refKind: "role";
382
+ readonly scope: "cross-space";
383
+ };
384
+ };
385
+ readonly using: {
386
+ readonly kind: "value";
387
+ readonly codecId: "pg/text@1";
388
+ readonly required: true;
389
+ };
390
+ readonly withCheck: {
391
+ readonly kind: "value";
392
+ readonly codecId: "pg/text@1";
393
+ readonly required: true;
394
+ };
395
+ };
396
+ readonly requiresModelAttribute: {
397
+ readonly parameter: "target";
398
+ readonly attribute: "rls";
399
+ };
400
+ };
258
401
  readonly native_enum: {
259
402
  readonly kind: "pslBlock";
260
403
  readonly keyword: "native_enum";
@@ -1 +1 @@
1
- {"version":3,"file":"pack.d.mts","names":[],"sources":["../src/core/authoring.ts","../src/core/descriptor-meta.ts"],"mappings":";;;;;;;UAgDiB,uBAAA,SAAgC,iBAAiB;EAAA,SACvD,WAAW;AAAA;;;cCpChB,gCAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAYI,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEG,4BAAA,SAAqC,gCAAA;EAAA,SACvC,YAAA,GAAe,UAAU;AAAA"}
1
+ {"version":3,"file":"pack.d.mts","names":[],"sources":["../src/core/authoring.ts","../src/core/descriptor-meta.ts"],"mappings":";;;;;;;UAiDiB,uBAAA,SAAgC,iBAAiB;EAAA,SACvD,WAAW;AAAA;;;cCrChB,gCAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAYI,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEG,4BAAA,SAAqC,gCAAA;EAAA,SACvC,YAAA,GAAe,UAAU;AAAA"}
package/dist/pack.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as postgresTargetDescriptorMeta } from "./descriptor-meta-BOcKPaLE.mjs";
1
+ import { t as postgresTargetDescriptorMeta } from "./descriptor-meta-DEuXJfpR.mjs";
2
2
  export { postgresTargetDescriptorMeta as default };
@@ -1,13 +1,12 @@
1
1
  import { t as DEFAULT_NAMESPACE_ID } from "./namespace-ids-xtp_ZY86.mjs";
2
- import { h as PostgresRlsPolicy, r as isPostgresSchema } from "./postgres-schema-DTLA_aRi.mjs";
2
+ import { g as PostgresRlsPolicy, r as isPostgresSchema } from "./postgres-schema-DWQ0-CPb.mjs";
3
3
  import { n as parseRlsPolicyWireName } from "./wire-name-rHHtr1h0.mjs";
4
- import { n as PostgresSchemaNodeKind } from "./postgres-table-schema-node-9FCtCUz2.mjs";
5
- import { i as PostgresDatabaseSchemaNode, n as PostgresPolicySchemaNode, r as PostgresNamespaceSchemaNode } from "./postgres-role-schema-node-BiSTCTNg.mjs";
6
- import { t as resolveDdlSchemaForNamespaceStorage } from "./resolve-ddl-schema-Ca88Tg6W.mjs";
7
- import { t as buildPostgresPlanDiff } from "./diff-database-schema-BOsDnH64.mjs";
8
- import { E as RenamePostgresRlsPolicyCall, S as DropPostgresRlsPolicyCall, d as CreatePostgresRlsPolicyCall } from "./op-factory-call-DxNNKUeZ.mjs";
9
- import { a as resolvePostgresNodeIssueCreationFactoryName, c as issueSchemaName, d as postgresPlannerStrategies, i as resolvePostgresNodeIssueControlPolicySubject, l as issueTableName, n as resolveNamespaceIdForDdlSchema, o as coalesceSubtreeIssues, r as resolvePostgresCallControlPolicySubject, s as issueNode, t as formatPostgresControlPolicySubjectLabel, u as planIssues } from "./control-policy-Co_13Hxa.mjs";
10
- import { t as TypeScriptRenderablePostgresMigration } from "./planner-produced-postgres-migration-NI-oGKcw.mjs";
4
+ import { i as PostgresDatabaseSchemaNode, n as PostgresPolicySchemaNode, r as PostgresNamespaceSchemaNode } from "./postgres-role-schema-node-Cm-j0ZGM.mjs";
5
+ import { t as resolveDdlSchemaForNamespaceStorage } from "./resolve-ddl-schema-CAza65Iy.mjs";
6
+ import { t as buildPostgresPlanDiff } from "./diff-database-schema-D2sjvMw9.mjs";
7
+ import { a as resolvePostgresNodeIssueCreationFactoryName, c as issueSchemaName, d as postgresNodeStorageCoordinate, i as resolvePostgresNodeIssueControlPolicySubject, l as planIssues, n as resolveNamespaceIdForDdlSchema, o as coalesceSubtreeIssues, r as resolvePostgresCallControlPolicySubject, s as issueNode, t as renderPostgresSuppression, u as postgresPlannerStrategies } from "./control-policy-DKp0HKpY.mjs";
8
+ import { O as RenamePostgresRlsPolicyCall, f as CreatePostgresRlsPolicyCall, w as DropPostgresRlsPolicyCall } from "./op-factory-call-C4flTtTG.mjs";
9
+ import { t as TypeScriptRenderablePostgresMigration } from "./planner-produced-postgres-migration-Jat3hg4u.mjs";
11
10
  import { UNBOUND_NAMESPACE_ID } from "@prisma-next/framework-components/ir";
12
11
  import { blindCast } from "@prisma-next/utils/casts";
13
12
  import { extractCodecControlHooks, partitionCallsByControlPolicy, partitionIssuesByControlPolicy, planFieldEventOperations, plannerFailure } from "@prisma-next/family-sql/control";
@@ -85,8 +84,7 @@ function verifyPostgresNamespacePresence(input) {
85
84
  if (existing.has(ddlName)) continue;
86
85
  const namespace = new PostgresNamespaceSchemaNode({
87
86
  schemaName: ddlName,
88
- tables: {},
89
- nativeEnumTypeNames: []
87
+ tables: {}
90
88
  });
91
89
  issues.push({
92
90
  path: ["database", ddlName],
@@ -159,8 +157,7 @@ var PostgresMigrationPlanner = class {
159
157
  issues: schemaIssues,
160
158
  contract: options.contract,
161
159
  resolveControlPolicySubject: (issue) => resolvePostgresNodeIssueControlPolicySubject(issue, options.contract),
162
- resolveCreationFactoryName: resolvePostgresNodeIssueCreationFactoryName,
163
- formatSubjectLabel: (factoryName, subject) => formatPostgresControlPolicySubjectLabel(factoryName, subject, options.contract)
160
+ resolveCreationFactoryName: resolvePostgresNodeIssueCreationFactoryName
164
161
  });
165
162
  const result = planIssues({
166
163
  issues: issuePartition.plannable,
@@ -179,8 +176,7 @@ var PostgresMigrationPlanner = class {
179
176
  calls: this.planPostgresSchemaDiff(options, policyDiffIssues),
180
177
  contract: options.contract,
181
178
  resolveControlPolicySubject: (call) => resolvePostgresCallControlPolicySubject(call, options.contract),
182
- resolveFactoryName: (call) => call.factoryName,
183
- formatSubjectLabel: (factoryName, subject) => formatPostgresControlPolicySubjectLabel(factoryName, subject, options.contract)
179
+ resolveFactoryName: (call) => call.factoryName
184
180
  });
185
181
  const fieldEventPartition = partitionCallsByControlPolicy({
186
182
  calls: blindCast(planFieldEventOperations({
@@ -190,8 +186,7 @@ var PostgresMigrationPlanner = class {
190
186
  })),
191
187
  contract: options.contract,
192
188
  resolveControlPolicySubject: (call) => resolvePostgresCallControlPolicySubject(call, options.contract),
193
- resolveFactoryName: (call) => call.factoryName,
194
- formatSubjectLabel: (factoryName, subject) => formatPostgresControlPolicySubjectLabel(factoryName, subject, options.contract)
189
+ resolveFactoryName: (call) => call.factoryName
195
190
  });
196
191
  const calls = [
197
192
  ...result.value.calls,
@@ -199,10 +194,10 @@ var PostgresMigrationPlanner = class {
199
194
  ...fieldEventPartition.kept
200
195
  ];
201
196
  const warnings = [
202
- ...issuePartition.warnings,
203
- ...schemaDiffPartition.warnings,
204
- ...fieldEventPartition.warnings
205
- ];
197
+ ...issuePartition.suppressions,
198
+ ...schemaDiffPartition.suppressions,
199
+ ...fieldEventPartition.suppressions
200
+ ].map((record) => renderPostgresSuppression(record, options.contract));
206
201
  return Object.freeze({
207
202
  kind: "success",
208
203
  plan: new TypeScriptRenderablePostgresMigration(calls, {
@@ -314,56 +309,29 @@ function isPolicyDiffIssue(issue) {
314
309
  return node !== void 0 && PostgresPolicySchemaNode.is(node);
315
310
  }
316
311
  /**
317
- * Drops a `not-expected` issue when it is a whole extra TABLE that some
318
- * contract space owns, asking the ownership oracle per node.
319
- *
320
- * The consultation applies ONLY to table-level extras a live table this
321
- * space's contract lacks identified by asking the issue's own node
322
- * (`nodeKind === table`), never by counting path segments. `declaresEntity`
323
- * answers over the whole composition (self included), keyed on the schema-IR
324
- * entity coordinate so a genuine orphan in one namespace is never conflated
325
- * with a same-named table a sibling space declares in another, or with a
326
- * same-named non-table entity (an enum, an RLS policy) a sibling declares in
327
- * the SAME namespace: a positive answer means another space owns THIS table
328
- * in THIS namespace (a table this space owned would be in its expected tree,
329
- * never an extra) — leave it. A negative answer means no space owns it — a
330
- * genuine orphan to drop. `entityKind` is the literal `'table'` here: this
331
- * function only ever asks about a node already confirmed to be
332
- * `PostgresSchemaNodeKind.table` (checked just above), and the diff tree's
333
- * `nodeKind` vocabulary (`'postgres-table'`) is distinct from the storage
334
- * `entries` vocabulary `elementCoordinates` walks (`'table'`) — the literal
335
- * is that storage-entries spelling, not the node kind.
336
- *
337
- * The issue path carries the *resolved DDL schema* (e.g. `public`), but a
338
- * contract space's own declared namespace id can be the unbound sentinel
339
- * (`__unbound__`) that resolves to that schema — the two spellings would
340
- * never string-match. `resolveNamespaceIdForDdlSchema` recovers the raw
341
- * namespace id THIS space's own contract would use for that DDL schema, so
342
- * a table this space's own unbound namespace declares (and any sibling
343
- * whose own unbound namespace resolves the same way) is compared on the
344
- * same coordinate the aggregate's `elementCoordinates` walk yields.
345
- *
346
- * A DEEPER extra (an extra column/constraint on a table this space DOES own —
347
- * only the child drifted, so the table is in the expected tree) is this
348
- * space's own drift and is always kept for dropping; asking the oracle there
349
- * would wrongly suppress it, because the owned table answers `true`. Shallower
350
- * issues (namespace/root) are never ownership-scoped here. No oracle ⇒ every
351
- * extra is kept (single-space plan).
312
+ * Drops a `not-expected` issue when it is a whole extra storage entity (a table
313
+ * or a native enum) that some space in the composition owns. Each such node
314
+ * yields its own storage coordinate (see {@link postgresNodeStorageCoordinate}),
315
+ * so `declaresEntity` answers over the whole composition on one uniform
316
+ * coordinate: a positive answer means a sibling owns this entity here — leave
317
+ * it; a negative answer means a genuine orphan — drop it. A node with no storage
318
+ * coordinate (a namespace, or a deeper column/constraint drift on an owned
319
+ * table) is this space's own and is always kept. No oracle ⇒ keep everything.
352
320
  */
353
321
  function retainUnownedExtras(issues, ownership, contract) {
354
322
  if (ownership === void 0) return issues;
355
323
  return issues.filter((issue) => {
356
324
  if (issue.reason !== "not-expected") return true;
357
325
  const node = issueNode(issue);
358
- if (node === void 0 || node.nodeKind !== PostgresSchemaNodeKind.table) return true;
326
+ if (node === void 0) return true;
327
+ const coordinate = postgresNodeStorageCoordinate(node);
328
+ if (coordinate === void 0) return true;
359
329
  const ddlSchemaName = issueSchemaName(issue);
360
- const tableName = issueTableName(issue);
361
- if (ddlSchemaName === void 0 || tableName === void 0) return true;
330
+ if (ddlSchemaName === void 0) return true;
362
331
  const namespaceId = resolveNamespaceIdForDdlSchema(contract, ddlSchemaName);
363
332
  return !ownership.declaresEntity({
364
333
  namespaceId,
365
- entityKind: "table",
366
- entityName: tableName
334
+ ...coordinate
367
335
  });
368
336
  });
369
337
  }
@@ -380,9 +348,9 @@ function retainUnownedExtras(issues, ownership, contract) {
380
348
  * Returns the real `PostgresNamespaceSchemaNode` reference rather than a
381
349
  * projection: `storageTypePlanCallStrategy` hands this same value to codec
382
350
  * `planTypeOperations` hooks as `schema`, and hooks read the Postgres-specific
383
- * `nativeEnumTypeNames` field off it (via `PostgresNamespaceSchemaNode.is`) to
384
- * decide whether a native enum type already exists — a projection that only
385
- * copies `tables` would silently drop that signal. `StrategyContext.schema`'s
351
+ * `nativeEnums` field off it (via `PostgresNamespaceSchemaNode.is`) to decide
352
+ * whether a native enum type already exists — a projection that only copies
353
+ * `tables` would silently drop that signal. `StrategyContext.schema`'s
386
354
  * declared type (`SqlSchemaIR`, shared with SQLite's flat shape) doesn't
387
355
  * capture this, so the return is `blindCast` the same way `namespaceSchemaNodes`
388
356
  * in the family's relational walk already treats a namespace node as a
@@ -419,4 +387,4 @@ function policyNodeToContractPolicy(node) {
419
387
  //#endregion
420
388
  export { createPostgresMigrationPlanner as t };
421
389
 
422
- //# sourceMappingURL=planner-CNrc1Odu.mjs.map
390
+ //# sourceMappingURL=planner-BtEd5LMr.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-BtEd5LMr.mjs","names":["#lowerer"],"sources":["../src/core/migrations/verify-postgres-namespaces.ts","../src/core/migrations/planner.ts"],"sourcesContent":["import type { Contract } from '@prisma-next/contract/types';\nimport type { SchemaDiffIssue } from '@prisma-next/framework-components/control';\nimport { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';\nimport type { SqlStorage } from '@prisma-next/sql-contract/types';\nimport type { SqlSchemaIRNode } from '@prisma-next/sql-schema-ir/types';\nimport { DEFAULT_NAMESPACE_ID } from '../namespace-ids';\nimport { isPostgresSchema } from '../postgres-schema';\nimport { PostgresDatabaseSchemaNode } from '../schema-ir/postgres-database-schema-node';\nimport { PostgresNamespaceSchemaNode } from '../schema-ir/postgres-namespace-schema-node';\nimport type { SqlSchemaDiffNode } from '../schema-ir/schema-node-kinds';\n\n/**\n * Resolves the live-database schema name for a given namespace\n * coordinate. Mirrors `resolveDdlSchemaForNamespace` in\n * `planner-strategies.ts` so the verifier's projection and the\n * planner's projection always agree — Postgres-aware namespaces (the\n * production path) dispatch to `ddlSchemaName(storage)`, and bare\n * object payloads (used by some tests) fall back to the coordinate\n * itself.\n */\nfunction resolveDdlSchemaName(storage: SqlStorage, namespaceId: string): string {\n const namespace = storage.namespaces[namespaceId];\n if (isPostgresSchema(namespace)) {\n return namespace.ddlSchemaName(storage);\n }\n return namespaceId;\n}\n\n/**\n * Reads the introspected list of schema names from the database-root schema\n * node. `existingSchemas` is database-level, so it lives on the\n * `PostgresDatabaseSchemaNode` root — not on the per-schema namespace nodes.\n *\n * Defaults to the always-present `public` schema when the node is not the\n * database root — a fresh Postgres database always carries `public` (unless an\n * operator dropped it manually), so any verifier path that runs without an\n * enriched introspection still suppresses the redundant `CREATE SCHEMA\n * \"public\"`.\n *\n * Production introspection (`PostgresControlAdapter.introspect`) is the\n * authoritative source: it queries `pg_namespace` and sets `existingSchemas`\n * on the returned root. Tests that want to assert against a richer initial\n * state construct a `PostgresDatabaseSchemaNode` explicitly.\n */\nfunction existingSchemasFromSchema(schema: SqlSchemaIRNode): readonly string[] {\n if (PostgresDatabaseSchemaNode.is(schema)) {\n return schema.existingSchemas;\n }\n return [DEFAULT_NAMESPACE_ID];\n}\n\n/**\n * Emits a `postgres-namespace` `not-found` diff issue for every\n * contract-declared Postgres namespace whose live container does not yet\n * exist. The planner prepends these (node-typed, synthesized) to the\n * relational diff issues so a multi-schema plan emits `CREATE SCHEMA`\n * before the tables that need it — a planner-only concern (verify already\n * rejects via the `not-found` table issues a missing schema already\n * produces), so this is not part of the shared diff.\n *\n * A namespace's live container is the schema returned by its\n * polymorphic `ddlSchemaName(storage)` method — named schemas resolve\n * to their own id; the unbound singleton returns `UNBOUND_NAMESPACE_ID`\n * and is skipped explicitly (late-bound namespaces have no fixed DDL\n * schema). Issues are emitted only when the resolved name is a real,\n * creatable schema (not the unbound sentinel) and is missing from the\n * introspected list. `public` is suppressed implicitly because the\n * introspection (or its sensible default) always carries it.\n *\n * Each emitted issue's path is `['database', ddlName]` — an ancestor of\n * every table path under that schema, so it must never be run through\n * `coalesceSubtreeIssues` alongside the table diff (it would swallow the\n * table-level `not-found` issues that drive `CREATE TABLE`); the planner\n * adds these AFTER coalescing the relational issues, and they are not\n * subject to sibling-space ownership scoping (mirrors the retired\n * coordinate walk, which prepended namespace issues after that filter).\n */\nexport function verifyPostgresNamespacePresence(input: {\n readonly contract: Contract<SqlStorage>;\n readonly schema: SqlSchemaIRNode;\n}): readonly SchemaDiffIssue<SqlSchemaDiffNode>[] {\n const { contract, schema } = input;\n const existing = new Set(existingSchemasFromSchema(schema));\n const issues: SchemaDiffIssue<SqlSchemaDiffNode>[] = [];\n const namespaceIds = Object.keys(contract.storage.namespaces).sort();\n for (const namespaceId of namespaceIds) {\n if (namespaceId === UNBOUND_NAMESPACE_ID) continue;\n const ddlName = resolveDdlSchemaName(contract.storage, namespaceId);\n if (ddlName === UNBOUND_NAMESPACE_ID) continue;\n if (existing.has(ddlName)) continue;\n const namespace = new PostgresNamespaceSchemaNode({\n schemaName: ddlName,\n tables: {},\n });\n issues.push({\n path: ['database', ddlName],\n reason: 'not-found',\n expected: namespace,\n });\n }\n return issues;\n}\n","import type { Contract } from '@prisma-next/contract/types';\nimport type {\n MigrationOperationPolicy,\n SqlMigrationPlannerPlanOptions,\n SqlPlannerConflict,\n SqlPlannerFailureResult,\n} from '@prisma-next/family-sql/control';\nimport {\n extractCodecControlHooks,\n partitionCallsByControlPolicy,\n partitionIssuesByControlPolicy,\n planFieldEventOperations,\n plannerFailure,\n} from '@prisma-next/family-sql/control';\nimport type { ExecuteRequestLowerer } from '@prisma-next/family-sql/control-adapter';\nimport type { TargetBoundComponentDescriptor } from '@prisma-next/framework-components/components';\nimport type {\n MigrationPlanner,\n MigrationPlanWithAuthoringSurface,\n MigrationScaffoldContext,\n SchemaDiffIssue,\n SchemaOwnership,\n} from '@prisma-next/framework-components/control';\nimport { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';\nimport type { SqlStorage } from '@prisma-next/sql-contract/types';\nimport type { SqlSchemaIR } from '@prisma-next/sql-schema-ir/types';\nimport { blindCast } from '@prisma-next/utils/casts';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { PostgresRlsPolicy } from '../postgres-rls-policy';\nimport { parseRlsPolicyWireName } from '../rls/wire-name';\nimport { postgresNodeStorageCoordinate } from '../schema-ir/node-storage-coordinate';\nimport { PostgresDatabaseSchemaNode } from '../schema-ir/postgres-database-schema-node';\nimport { PostgresPolicySchemaNode } from '../schema-ir/postgres-policy-schema-node';\nimport type { SqlSchemaDiffNode } from '../schema-ir/schema-node-kinds';\nimport {\n renderPostgresSuppression,\n resolveNamespaceIdForDdlSchema,\n resolvePostgresCallControlPolicySubject,\n resolvePostgresNodeIssueControlPolicySubject,\n resolvePostgresNodeIssueCreationFactoryName,\n} from './control-policy';\nimport { buildPostgresPlanDiff } from './diff-database-schema';\nimport { coalesceSubtreeIssues, issueNode, issueSchemaName, planIssues } from './issue-planner';\nimport type { PostgresOpFactoryCall } from './op-factory-call';\nimport {\n CreatePostgresRlsPolicyCall,\n DropPostgresRlsPolicyCall,\n RenamePostgresRlsPolicyCall,\n} from './op-factory-call';\nimport { TypeScriptRenderablePostgresMigration } from './planner-produced-postgres-migration';\nimport { postgresPlannerStrategies } from './planner-strategies';\nimport { resolveDdlSchemaForNamespaceStorage } from './resolve-ddl-schema';\nimport { verifyPostgresNamespacePresence } from './verify-postgres-namespaces';\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\nexport function createPostgresMigrationPlanner(\n lowerer: ExecuteRequestLowerer,\n): PostgresMigrationPlanner {\n return new PostgresMigrationPlanner(lowerer);\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 | {\n readonly kind: 'success';\n readonly plan: TypeScriptRenderablePostgresMigration;\n readonly warnings?: readonly SqlPlannerConflict[];\n }\n | SqlPlannerFailureResult;\n\n/**\n * Postgres migration planner — a thin wrapper over `planIssues`.\n *\n * `plan()` diffs the target contract against the live schema via the one\n * differ (`buildPostgresPlanDiff`, producing node-typed `SchemaDiffIssue[]`)\n * and delegates to `planIssues` with the unified `postgresPlannerStrategies`\n * list: NOT-NULL backfill, type-change, nullable-tightening, codec-hook\n * storage types, component-declared dependency installs, and\n * shared-temp-default / empty-table-guarded NOT-NULL add-column. The same\n * strategy list runs for `migration plan`, `db update`, and `db init`;\n * behavior diverges purely on `policy.allowedOperationClasses` (the\n * data-safe strategies short-circuit when `'data'` is excluded). The issue\n * planner applies operation-class policy gates and emits a single\n * `PostgresOpFactoryCall[]` that drives both the runtime-ops view (via\n * `renderOps`) and the `renderTypeScript()` authoring surface. RLS policy\n * drift (the structural half of the same one-differ tree) is handled\n * separately via `planPostgresSchemaDiff`.\n */\nexport class PostgresMigrationPlanner implements MigrationPlanner<'sql', 'postgres'> {\n readonly #lowerer: ExecuteRequestLowerer | undefined;\n\n constructor(lowerer?: ExecuteRequestLowerer) {\n this.#lowerer = lowerer;\n }\n\n plan(options: {\n readonly contract: unknown;\n readonly schema: unknown;\n readonly policy: MigrationOperationPolicy;\n /**\n * The \"from\" contract (state the planner assumes the database starts\n * at), or `null` for reconciliation flows. Only `migration plan` ever\n * supplies a non-null value; `db update` / `db init` reconcile against\n * the live schema and pass `null`. When present alongside the\n * `'data'` operation class, strategies that need from/to column-shape\n * comparisons (unsafe type change, nullability tightening) activate.\n *\n * Typed as the framework `Contract | null` to satisfy the\n * `MigrationPlanner` interface contract; `planSql` narrows to the SQL\n * shape via `SqlMigrationPlannerPlanOptions`. Used to populate\n * `describe().from` on the produced plan as\n * `fromContract?.storage.storageHash ?? null`.\n */\n readonly fromContract: Contract | null;\n readonly schemaName?: string;\n readonly frameworkComponents: ReadonlyArray<TargetBoundComponentDescriptor<'sql', string>>;\n /**\n * Contract space this plan applies to. Stamped onto the produced\n * {@link TypeScriptRenderablePostgresMigration.spaceId} so the runner keys\n * the marker row by the right space.\n */\n readonly spaceId: string;\n /**\n * Ownership oracle over the contract-space composition — see\n * {@link SqlMigrationPlannerPlanOptions.ownership}.\n */\n readonly ownership?: SchemaOwnership;\n }): PostgresPlanResult {\n return this.planSql(options as SqlMigrationPlannerPlanOptions);\n }\n\n emptyMigration(\n context: MigrationScaffoldContext,\n spaceId: string,\n ): MigrationPlanWithAuthoringSurface {\n return new TypeScriptRenderablePostgresMigration(\n [],\n {\n from: context.fromHash,\n to: context.toHash,\n },\n spaceId,\n this.#lowerer,\n );\n }\n\n private planSql(options: SqlMigrationPlannerPlanOptions): PostgresPlanResult {\n const schemaName =\n options.schemaName ??\n Object.keys(options.contract.storage.namespaces).find((id) => id !== UNBOUND_NAMESPACE_ID) ??\n UNBOUND_NAMESPACE_ID;\n const policyResult = this.ensureAdditivePolicy(options.policy);\n if (policyResult) {\n return policyResult;\n }\n\n // The one combined tree diff drives the whole plan: relational findings\n // become structural DDL via `planIssues`, policy findings become RLS ops\n // via `planPostgresSchemaDiff`. Verify runs its own full-tree node diff\n // (`diffSchema`) over the same schema and rejects on a\n // surviving failure.\n PostgresDatabaseSchemaNode.assert(options.schema);\n const { issues: rawIssues } = buildPostgresPlanDiff({\n contract: options.contract,\n actualSchema: options.schema,\n frameworkComponents: options.frameworkComponents,\n });\n const policyDiffIssues = rawIssues.filter((issue) => isPolicyDiffIssue(issue));\n // Role diff issues resolve to the `external` control policy (see\n // `resolvePostgresNodeIssueControlPolicySubject`'s role branch), so the\n // control-policy partition below suppresses them to zero ops on its own,\n // before `mapNodeIssueToCall` ever sees them — no separate exclusion\n // needed here.\n const relationalDiffIssues = rawIssues.filter((issue) => !isPolicyDiffIssue(issue));\n\n // The generic differ is total and un-gated: strict-mode extras filtering\n // (dropping `not-expected` findings outside strict mode, mirroring the\n // retired coordinate walk's `if (strict) { ...extra_* } }` guards),\n // subtree coalescing (a missing/extra table also emits an issue for\n // every child under it — redundant once the table-level Create/Drop call\n // already accounts for the whole subtree), and ownership are all post-diff\n // planner steps.\n //\n // Ownership: a live extra is only this plan's to drop when no contract\n // space owns it. The differ ran against THIS space's contract, so a table\n // a sibling space owns surfaces here as `not-expected`; the planner asks\n // the ownership oracle (the passive aggregate) whether any space declares\n // it and, if so, leaves it alone — it is a sibling's table, not an orphan.\n // A table no space owns stays a genuine extra to drop under a destructive\n // policy. Ownership lives in the aggregate; the planner only asks. Absent\n // oracle (single-space, none handed) keeps every extra. Coalescing MUST\n // run before this so a sibling-owned table's child issues have already\n // collapsed into the one table-level issue that carries the table name.\n const strict =\n options.policy.allowedOperationClasses.includes('widening') ||\n options.policy.allowedOperationClasses.includes('destructive');\n const coalesced = coalesceSubtreeIssues(relationalDiffIssues);\n const owned = retainUnownedExtras(coalesced, options.ownership, options.contract);\n const gated = strict ? owned : owned.filter((issue) => issue.reason !== 'not-expected');\n\n // Namespace presence (`CREATE SCHEMA`) is a planner-only op-generation\n // concern stitched in here rather than inside the shared diff — verify\n // never needs it (a missing schema already surfaces as a `not-found`\n // table in the relational findings). These synthesized issues are added\n // AFTER coalescing/scoping (never coalesced against the table diff —\n // their path is an ancestor of every table path under that schema, so\n // running them through the same coalesce would swallow the table-level\n // `not-found` issues that drive `CREATE TABLE`) and are NOT subject to\n // sibling-space scoping, matching the retired coordinate walk exactly.\n const namespaceIssues = verifyPostgresNamespacePresence({\n contract: options.contract,\n schema: options.schema,\n });\n const schemaIssues = [...namespaceIssues, ...gated];\n\n const codecHooks = extractCodecControlHooks(options.frameworkComponents);\n const storageTypes = options.contract.storage.types ?? {};\n // The strategy layer reads the live schema by bare table name for existence\n // checks (shared-temp-default safety, FK/unique probes), so it takes one\n // per-schema namespace node — never the whole tree root, and never a flat\n // merge of every namespace (which would collide same-named tables across\n // schemas). Probing more than one namespace at once is future work.\n const relationalSchema = relationalNamespaceNode(options.schema, schemaName);\n\n // Input-side control-policy partition. `external` / `observed` subjects\n // — and non-creation issues for `tolerated` subjects — are dropped from\n // the planner's input entirely; the planner never observes them, never\n // diffs them, never generates DDL for them. Suppression warnings are\n // built directly from the suppressed partition (one per subject), so the\n // user-visible message survives even when the planner would have failed\n // to model the subject's live shape.\n const issuePartition = partitionIssuesByControlPolicy({\n issues: schemaIssues,\n contract: options.contract,\n resolveControlPolicySubject: (issue) =>\n resolvePostgresNodeIssueControlPolicySubject(issue, options.contract),\n resolveCreationFactoryName: resolvePostgresNodeIssueCreationFactoryName,\n });\n\n const result = planIssues({\n issues: issuePartition.plannable,\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 // `mapNodeIssueToCall`'s direct destructive handlers.\n fromContract: options.fromContract,\n schemaName,\n codecHooks,\n storageTypes,\n ...ifDefined('schema', relationalSchema),\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 const schemaDiffCalls = this.planPostgresSchemaDiff(options, policyDiffIssues);\n const schemaDiffPartition = partitionCallsByControlPolicy({\n calls: schemaDiffCalls,\n contract: options.contract,\n resolveControlPolicySubject: (call) =>\n resolvePostgresCallControlPolicySubject(call, options.contract),\n resolveFactoryName: (call) => call.factoryName,\n });\n\n // Inline `onFieldEvent`-emitted ops after structural DDL. The fixed\n // ordering is `structural → added → dropped → altered`, with\n // within-group sorting by `(tableName, fieldName)` so re-emits are\n // byte-stable. The hook fires only at the application emitter —\n // extension-space planning never reaches this helper.\n const fieldEventOps = planFieldEventOperations({\n priorContract: options.fromContract,\n newContract: options.contract,\n codecHooks,\n });\n // Codec hook ops are target-agnostic `OpFactoryCall`; Postgres planning\n // lifts them at this integration boundary (see field-event-planner JSDoc).\n const fieldEventPostgresCalls = blindCast<\n readonly PostgresOpFactoryCall[],\n 'Codec hook ops conform to PostgresOpFactoryCall at the app emitter boundary'\n >(fieldEventOps);\n const fieldEventPartition = partitionCallsByControlPolicy({\n calls: fieldEventPostgresCalls,\n contract: options.contract,\n resolveControlPolicySubject: (call) =>\n resolvePostgresCallControlPolicySubject(call, options.contract),\n resolveFactoryName: (call) => call.factoryName,\n });\n const calls = [...result.value.calls, ...schemaDiffPartition.kept, ...fieldEventPartition.kept];\n const warnings: SqlPlannerConflict[] = [\n ...issuePartition.suppressions,\n ...schemaDiffPartition.suppressions,\n ...fieldEventPartition.suppressions,\n ].map((record) => renderPostgresSuppression(record, options.contract));\n\n return Object.freeze({\n kind: 'success' as const,\n plan: new TypeScriptRenderablePostgresMigration(\n calls,\n {\n from: options.fromContract?.storage.storageHash ?? null,\n to: options.contract.storage.storageHash,\n },\n options.spaceId,\n this.#lowerer,\n ),\n ...(warnings.length > 0 ? { warnings: Object.freeze(warnings) } : {}),\n });\n }\n\n /**\n * Maps the RLS policy presence findings of the one combined tree diff\n * (`buildPostgresPlanDiff`, already ownership-filtered) into\n * `CREATE POLICY` / `DROP POLICY` / `ALTER POLICY … RENAME TO` ops. It\n * does not re-diff — it consumes exactly the policy-node subset of the\n * shared diff's issues. Enablement is NOT decided here: `ENABLE`/`DISABLE\n * ROW LEVEL SECURITY` derive from the table's marker-driven `rlsEnabled`\n * attribute diff on the relational side.\n *\n * Rename post-pass: a `not-found` and a `not-expected` policy on the SAME\n * table whose wire-name content hashes match but prefixes differ are one\n * prefix-only rename, collapsed into a single non-destructive\n * `RenamePostgresRlsPolicyCall`. Multi-candidate hash groups pair\n * deterministically by sorted wire name; leftovers proceed as\n * create/drop. Unparseable wire names never pair.\n *\n * The pairing runs only when the policy allows `widening` (rename's\n * class). Without it (db-init's additive-only set), pairing degrades\n * deliberately to the additive half: the new name is CREATEd and the old\n * policy survives live until a widening/destructive-allowed plan runs —\n * emitting an ungated widening rename would only fail at the runner's\n * class re-enforcement.\n */\n private planPostgresSchemaDiff(\n options: PlannerOptionsWithComponents,\n filteredDiffIssues: readonly SchemaDiffIssue<SqlSchemaDiffNode>[],\n ): readonly PostgresOpFactoryCall[] {\n const allowsDestructive = options.policy.allowedOperationClasses.includes('destructive');\n const allowsWidening = options.policy.allowedOperationClasses.includes('widening');\n\n interface PolicyFinding {\n readonly node: PostgresPolicySchemaNode;\n readonly schemaForTable: string;\n }\n const missing: PolicyFinding[] = [];\n const extra: PolicyFinding[] = [];\n\n for (const issue of filteredDiffIssues) {\n // 'not-equal' is unreachable for content-addressed policies: the wire name\n // encodes the body hash, so two policies sharing a local key (same name)\n // are always equal and isEqualTo never returns false.\n if (issue.reason === 'not-found') {\n const expected = issue.expected;\n PostgresPolicySchemaNode.assert(expected);\n // expected.namespaceId is the DDL schema name (resolved during projection);\n // this re-resolution is a no-op as long as PostgresSchema.ddlSchemaName() returns this.id.\n missing.push({\n node: expected,\n schemaForTable: resolveDdlSchemaForNamespaceStorage(\n options.contract.storage,\n expected.namespaceId,\n ),\n });\n } else if (issue.reason === 'not-expected') {\n const actual = issue.actual;\n PostgresPolicySchemaNode.assert(actual);\n extra.push({\n node: actual,\n schemaForTable: resolveDdlSchemaForNamespaceStorage(\n options.contract.storage,\n actual.namespaceId,\n ),\n });\n }\n }\n\n const calls: PostgresOpFactoryCall[] = [];\n const renamedExtras = new Set<PolicyFinding>();\n const renamedMissing = new Set<PolicyFinding>();\n const pairingKey = (finding: PolicyFinding, hash: string): string =>\n JSON.stringify([finding.schemaForTable, finding.node.tableName, hash]);\n\n if (allowsWidening) {\n const extrasByGroup = new Map<string, PolicyFinding[]>();\n for (const finding of extra) {\n const parsed = parseRlsPolicyWireName(finding.node.name);\n if (parsed === undefined) continue;\n const key = pairingKey(finding, parsed.hash);\n const group = extrasByGroup.get(key) ?? [];\n group.push(finding);\n extrasByGroup.set(key, group);\n }\n for (const group of extrasByGroup.values()) {\n group.sort((a, b) => (a.node.name < b.node.name ? -1 : a.node.name > b.node.name ? 1 : 0));\n }\n\n const sortedMissing = [...missing].sort((a, b) =>\n a.node.name < b.node.name ? -1 : a.node.name > b.node.name ? 1 : 0,\n );\n for (const missingFinding of sortedMissing) {\n const parsed = parseRlsPolicyWireName(missingFinding.node.name);\n if (parsed === undefined) continue;\n const candidates = extrasByGroup.get(pairingKey(missingFinding, parsed.hash));\n const candidate = candidates?.shift();\n if (candidate === undefined) continue;\n // Same name would never surface as missing+extra (the differ pairs by\n // name), so a matched candidate always differs in prefix only.\n renamedExtras.add(candidate);\n renamedMissing.add(missingFinding);\n calls.push(\n new RenamePostgresRlsPolicyCall(\n missingFinding.schemaForTable,\n missingFinding.node.tableName,\n candidate.node.name,\n missingFinding.node.name,\n ),\n );\n }\n }\n\n for (const finding of missing) {\n if (renamedMissing.has(finding)) continue;\n calls.push(\n new CreatePostgresRlsPolicyCall(\n finding.schemaForTable,\n finding.node.tableName,\n policyNodeToContractPolicy(finding.node),\n ),\n );\n }\n if (allowsDestructive) {\n for (const finding of extra) {\n if (renamedExtras.has(finding)) continue;\n calls.push(\n new DropPostgresRlsPolicyCall(\n finding.schemaForTable,\n finding.node.tableName,\n finding.node.name,\n ),\n );\n }\n }\n\n return calls;\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\n/**\n * A diff issue whose node is an RLS policy — the structural half of the one\n * combined tree diff, routed to `planPostgresSchemaDiff` instead of\n * `planIssues`.\n */\nfunction isPolicyDiffIssue(issue: SchemaDiffIssue<SqlSchemaDiffNode>): boolean {\n const node = issue.expected ?? issue.actual;\n return node !== undefined && PostgresPolicySchemaNode.is(node);\n}\n\n/**\n * Drops a `not-expected` issue when it is a whole extra storage entity (a table\n * or a native enum) that some space in the composition owns. Each such node\n * yields its own storage coordinate (see {@link postgresNodeStorageCoordinate}),\n * so `declaresEntity` answers over the whole composition on one uniform\n * coordinate: a positive answer means a sibling owns this entity here — leave\n * it; a negative answer means a genuine orphan — drop it. A node with no storage\n * coordinate (a namespace, or a deeper column/constraint drift on an owned\n * table) is this space's own and is always kept. No oracle ⇒ keep everything.\n */\nfunction retainUnownedExtras(\n issues: readonly SchemaDiffIssue<SqlSchemaDiffNode>[],\n ownership: SchemaOwnership | undefined,\n contract: Contract<SqlStorage>,\n): readonly SchemaDiffIssue<SqlSchemaDiffNode>[] {\n if (ownership === undefined) return issues;\n return issues.filter((issue) => {\n if (issue.reason !== 'not-expected') return true;\n const node = issueNode(issue);\n if (node === undefined) return true;\n const coordinate = postgresNodeStorageCoordinate(node);\n if (coordinate === undefined) return true;\n const ddlSchemaName = issueSchemaName(issue);\n if (ddlSchemaName === undefined) return true;\n const namespaceId = resolveNamespaceIdForDdlSchema(contract, ddlSchemaName);\n return !ownership.declaresEntity({ namespaceId, ...coordinate });\n });\n}\n\n/**\n * Returns the one namespace node the relational strategy layer probes for\n * live-table existence and reads codec-hook context off — the namespace\n * matching the planner's resolved schema name, or the first namespace when\n * none matches. `undefined` when the tree has no namespaces, so the strategy\n * context uses its empty-schema default.\n *\n * The relational strategies key tables by bare name, so they can only probe one\n * namespace at a time; probing across every namespace at once is future work.\n *\n * Returns the real `PostgresNamespaceSchemaNode` reference rather than a\n * projection: `storageTypePlanCallStrategy` hands this same value to codec\n * `planTypeOperations` hooks as `schema`, and hooks read the Postgres-specific\n * `nativeEnums` field off it (via `PostgresNamespaceSchemaNode.is`) to decide\n * whether a native enum type already exists — a projection that only copies\n * `tables` would silently drop that signal. `StrategyContext.schema`'s\n * declared type (`SqlSchemaIR`, shared with SQLite's flat shape) doesn't\n * capture this, so the return is `blindCast` the same way `namespaceSchemaNodes`\n * in the family's relational walk already treats a namespace node as a\n * structurally-`SqlSchemaIR`-shaped value.\n */\nfunction relationalNamespaceNode(\n schema: PostgresDatabaseSchemaNode,\n schemaName: string,\n): SqlSchemaIR | undefined {\n const namespaceNodes = Object.values(schema.namespaces);\n const namespaceNode =\n namespaceNodes.find((node) => node.schemaName === schemaName) ?? namespaceNodes[0];\n if (namespaceNode === undefined) return undefined;\n return blindCast<\n SqlSchemaIR,\n 'PostgresNamespaceSchemaNode carries tables (+ nativeEnums, read by codec hooks via PostgresNamespaceSchemaNode.is) structurally compatible with the SqlSchemaIR shape the strategy layer declares'\n >(namespaceNode);\n}\n\n/**\n * Rebuilds the `PostgresRlsPolicy` contract entity `CreatePostgresRlsPolicyCall`\n * carries (its `renderTypeScript`/`createRlsPolicy` paths serialize the whole\n * entity, `namespaceId` included). This reconstructs rather than looking the\n * original up in the contract on purpose: the diff node's `namespaceId` is the\n * *resolved DDL schema* (set when the expected tree was built), which is the\n * value the emitted op must carry; the contract-stored entity holds the raw,\n * pre-resolution coordinate, so a lookup would change the migration output.\n */\nfunction policyNodeToContractPolicy(node: PostgresPolicySchemaNode): PostgresRlsPolicy {\n return new PostgresRlsPolicy({\n name: node.name,\n prefix: node.prefix,\n tableName: node.tableName,\n namespaceId: node.namespaceId,\n operation: node.operation,\n roles: [...node.roles],\n ...ifDefined('using', node.using),\n ...ifDefined('withCheck', node.withCheck),\n permissive: node.permissive,\n });\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { i as quoteIdentifier, n as escapeLiteral } from "./sql-utils-DcfMz4MQ.mjs";
1
+ import { a as quoteQualifiedName, i as quoteIdentifier, n as escapeLiteral } from "./sql-utils-SU4FDvIV.mjs";
2
2
  import { t as resolveColumnTypeMetadata } from "./planner-type-resolution-Bt2f_q-F.mjs";
3
3
  import { ifDefined } from "@prisma-next/utils/defined";
4
4
  //#region src/core/migrations/planner-ddl-builders.ts
@@ -36,10 +36,14 @@ function buildColumnTypeSql(column, codecHooks, storageTypes = {}, allowPseudoTy
36
36
  if (resolved.nativeType === "int2" || resolved.nativeType === "smallint") return "SMALLSERIAL";
37
37
  }
38
38
  }
39
+ if (typeof resolved.typeParams?.["typeName"] === "string") {
40
+ const quoted = quoteQualifiedName(resolved.nativeType);
41
+ return column.many ? `${quoted}[]` : quoted;
42
+ }
39
43
  const expanded = expandParameterizedTypeSql(resolved, codecHooks);
40
44
  if (expanded !== null) return column.many ? `${expanded}[]` : expanded;
41
45
  if (column.typeRef) {
42
- const base = quoteIdentifier(resolved.nativeType);
46
+ const base = quoteQualifiedName(resolved.nativeType);
43
47
  return column.many ? `${base}[]` : base;
44
48
  }
45
49
  assertSafeNativeType(resolved.nativeType);
@@ -90,4 +94,4 @@ function renderArrayLiteralDefault(elements) {
90
94
  //#endregion
91
95
  export { buildColumnTypeSql as n, renderDefaultLiteral as r, buildColumnDefaultSql as t };
92
96
 
93
- //# sourceMappingURL=planner-ddl-builders-B8Nn6nHN.mjs.map
97
+ //# sourceMappingURL=planner-ddl-builders-BKlmGDJl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-ddl-builders-BKlmGDJl.mjs","names":[],"sources":["../src/core/migrations/planner-ddl-builders.ts"],"sourcesContent":["import type { CodecControlHooks } from '@prisma-next/family-sql/control';\nimport type { StorageColumn, StorageTypeInstance } from '@prisma-next/sql-contract/types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { escapeLiteral, quoteIdentifier, quoteQualifiedName } from '../sql-utils';\nimport type { PostgresColumnDefault } from '../types';\nimport { resolveColumnTypeMetadata } from './planner-type-resolution';\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: ReadonlyMap<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 // A column whose codec supplied a `typeParams.typeName` references a named\n // database type (e.g. a native enum), not a parameterized builtin: render it\n // as its quoted, schema-qualified type-name identifier. DDL-render only — the\n // verify comparison value (`resolvedNativeType`) stays the bare name the\n // family expander produces, matching introspection.\n if (typeof resolved.typeParams?.['typeName'] === 'string') {\n const quoted = quoteQualifiedName(resolved.nativeType);\n return column.many ? `${quoted}[]` : quoted;\n }\n\n const expanded = expandParameterizedTypeSql(resolved, codecHooks);\n if (expanded !== null) {\n return column.many ? `${expanded}[]` : expanded;\n }\n\n if (column.typeRef) {\n const base = quoteQualifiedName(resolved.nativeType);\n return column.many ? `${base}[]` : base;\n }\n\n assertSafeNativeType(resolved.nativeType);\n return column.many ? `${resolved.nativeType}[]` : resolved.nativeType;\n}\n\nfunction expandParameterizedTypeSql(\n column: Pick<StorageColumn, 'nativeType' | 'codecId' | 'typeParams'>,\n codecHooks: ReadonlyMap<string, CodecControlHooks>,\n): string | null {\n if (!column.typeParams || Object.keys(column.typeParams).length === 0) {\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 ...ifDefined('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?: Pick<StorageColumn, 'many' | 'nativeType'>,\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(\n value: unknown,\n column?: Pick<StorageColumn, 'many' | 'nativeType'>,\n): string {\n const isJsonColumn = column?.nativeType === 'json' || column?.nativeType === 'jsonb';\n\n if (column?.many && Array.isArray(value)) {\n return renderArrayLiteralDefault(value);\n }\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\nfunction renderArrayLiteralDefault(elements: unknown[]): string {\n if (elements.length === 0) {\n return \"'{}'\";\n }\n const rendered = elements.map((el) => renderDefaultLiteral(el)).join(', ');\n return `ARRAY[${rendered}]`;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"planner-ddl-builders.d.mts","names":[],"sources":["../src/core/migrations/planner-ddl-builders.ts"],"mappings":";;;;;;;AA4CA;;;;;iBAAgB,kBAAA,CACd,MAAA,EAAQ,aAAA,EACR,UAAA,EAAY,WAAA,SAAoB,iBAAA,GAChC,YAAA,GAAc,MAAA,SAAe,mBAAA,GAC7B,gBAAA;;iBAsEc,qBAAA,CACd,aAAA,EAAe,qBAAA,cACf,MAAA,GAAS,IAAA,CAAK,aAAA;AAAA,iBAqBA,oBAAA,CACd,KAAA,WACA,MAAA,GAAS,IAAI,CAAC,aAAA"}
1
+ {"version":3,"file":"planner-ddl-builders.d.mts","names":[],"sources":["../src/core/migrations/planner-ddl-builders.ts"],"mappings":";;;;;;;AA4CA;;;;;iBAAgB,kBAAA,CACd,MAAA,EAAQ,aAAA,EACR,UAAA,EAAY,WAAA,SAAoB,iBAAA,GAChC,YAAA,GAAc,MAAA,SAAe,mBAAA,GAC7B,gBAAA;;iBAgFc,qBAAA,CACd,aAAA,EAAe,qBAAA,cACf,MAAA,GAAS,IAAA,CAAK,aAAA;AAAA,iBAqBA,oBAAA,CACd,KAAA,WACA,MAAA,GAAS,IAAI,CAAC,aAAA"}
@@ -1,2 +1,2 @@
1
- import { n as buildColumnTypeSql, r as renderDefaultLiteral, t as buildColumnDefaultSql } from "./planner-ddl-builders-B8Nn6nHN.mjs";
1
+ import { n as buildColumnTypeSql, r as renderDefaultLiteral, t as buildColumnDefaultSql } from "./planner-ddl-builders-BKlmGDJl.mjs";
2
2
  export { buildColumnDefaultSql, buildColumnTypeSql, renderDefaultLiteral };
@@ -1,5 +1,5 @@
1
1
  import { t as PostgresPlanTargetDetails } from "./planner-target-details-HkP4RrRO.mjs";
2
- import { t as PostgresMigration } from "./postgres-migration-Bzzi0Asr.mjs";
2
+ import { t as PostgresMigration } from "./postgres-migration-DkmgGNcv.mjs";
3
3
  import { SqlMigrationPlanOperation } from "@prisma-next/family-sql/control";
4
4
  import { MigrationPlanWithAuthoringSurface, OpFactoryCall } from "@prisma-next/framework-components/control";
5
5
  import { MigrationMeta } from "@prisma-next/migration-tools/migration";
@@ -21,4 +21,4 @@ declare class TypeScriptRenderablePostgresMigration extends PostgresMigration im
21
21
  }
22
22
  //#endregion
23
23
  export { TypeScriptRenderablePostgresMigration as t };
24
- //# sourceMappingURL=planner-produced-postgres-migration-a-tjfKsA.d.mts.map
24
+ //# sourceMappingURL=planner-produced-postgres-migration-CXue-6M9.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-produced-postgres-migration-a-tjfKsA.d.mts","names":[],"sources":["../src/core/migrations/planner-produced-postgres-migration.ts"],"mappings":";;;;;;;;cAqCa,qCAAA,SACH,iBAAA,YACG,iCAAA;EAAA;cAcT,KAAA,WAAgB,aAAA,IAChB,IAAA,EAAM,aAAA,EACN,OAAA,UACA,OAAA,GAAU,qBAAA;EAAA,IASC,UAAA,cACT,yBAAA,CAA0B,yBAAA,IAC1B,OAAA,CAAQ,yBAAA,CAA0B,yBAAA;EAM7B,QAAA,IAAY,aAAA;EARR;;;;;EAAA,IAiBT,OAAA;EAIJ,gBAAA;AAAA"}
1
+ {"version":3,"file":"planner-produced-postgres-migration-CXue-6M9.d.mts","names":[],"sources":["../src/core/migrations/planner-produced-postgres-migration.ts"],"mappings":";;;;;;;;cAqCa,qCAAA,SACH,iBAAA,YACG,iCAAA;EAAA;cAcT,KAAA,WAAgB,aAAA,IAChB,IAAA,EAAM,aAAA,EACN,OAAA,UACA,OAAA,GAAU,qBAAA;EAAA,IASC,UAAA,cACT,yBAAA,CAA0B,yBAAA,IAC1B,OAAA,CAAQ,yBAAA,CAA0B,yBAAA;EAM7B,QAAA,IAAY,aAAA;EARR;;;;;EAAA,IAiBT,OAAA;EAIJ,gBAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- import { t as PostgresMigration } from "./postgres-migration-ChyRsWvE.mjs";
1
+ import { t as PostgresMigration } from "./postgres-migration-ChLMQRd-.mjs";
2
2
  import { t as renderOps } from "./render-ops-BREh1kHe.mjs";
3
3
  import { t as renderCallsToTypeScript } from "./render-typescript-7yqILcwr.mjs";
4
4
  //#region src/core/migrations/planner-produced-postgres-migration.ts
@@ -40,4 +40,4 @@ var TypeScriptRenderablePostgresMigration = class extends PostgresMigration {
40
40
  //#endregion
41
41
  export { TypeScriptRenderablePostgresMigration as t };
42
42
 
43
- //# sourceMappingURL=planner-produced-postgres-migration-NI-oGKcw.mjs.map
43
+ //# sourceMappingURL=planner-produced-postgres-migration-Jat3hg4u.mjs.map