@prisma/orm-target-postgres 8.0.0-rc.16-dev.6 → 8.0.0-rc.16-dev.8

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 (98) hide show
  1. package/dist/{adapter-RtS8vD8U-BnPjAiLV.mjs → adapter-RtS8vD8U-CkJSaICZ.mjs} +2 -2
  2. package/dist/{adapter-RtS8vD8U-BnPjAiLV.mjs.map → adapter-RtS8vD8U-CkJSaICZ.mjs.map} +1 -1
  3. package/dist/adapter.mjs +2 -2
  4. package/dist/adapter__adapter.mjs +2 -2
  5. package/dist/adapter__control.mjs +4 -4
  6. package/dist/adapter__runtime.mjs +3 -3
  7. package/dist/{authoring-B2hHIzvd-D5NgHs0e.mjs → authoring-_2G2lsLt-VmVbrMPn.mjs} +3 -3
  8. package/dist/{authoring-B2hHIzvd-D5NgHs0e.mjs.map → authoring-_2G2lsLt-VmVbrMPn.mjs.map} +1 -1
  9. package/dist/{contract-free-DaK6wmmo.mjs → contract-free-BMKFjlIG.mjs} +3 -3
  10. package/dist/{contract-free-DaK6wmmo.mjs.map → contract-free-BMKFjlIG.mjs.map} +1 -1
  11. package/dist/{control-Bpd77Aeq.mjs → control-M3kIGGHk.mjs} +9 -9
  12. package/dist/{control-Bpd77Aeq.mjs.map → control-M3kIGGHk.mjs.map} +1 -1
  13. package/dist/{control-adapter-Co30P4lH-e6oCFCC2.mjs → control-adapter-Co30P4lH-CpxXk5cz.mjs} +2 -2
  14. package/dist/{control-adapter-Co30P4lH-e6oCFCC2.mjs.map → control-adapter-Co30P4lH-CpxXk5cz.mjs.map} +1 -1
  15. package/dist/{control-policy-B7t5CB1S-CotIwNO4.mjs → control-policy-C0KC3-Gw-DseKgAtX.mjs} +54 -33
  16. package/dist/control-policy-C0KC3-Gw-DseKgAtX.mjs.map +1 -0
  17. package/dist/{ddl-C_vTj7b5-vyGLBKLo.mjs → ddl-D5hYRCTf-DRSajCVT.mjs} +3 -3
  18. package/dist/{ddl-C_vTj7b5-vyGLBKLo.mjs.map → ddl-D5hYRCTf-DRSajCVT.mjs.map} +1 -1
  19. package/dist/{descriptor-meta-ARufwwWW-C5hsT7UQ.mjs → descriptor-meta-ARufwwWW-ChZm5Hg5.mjs} +2 -2
  20. package/dist/{descriptor-meta-ARufwwWW-C5hsT7UQ.mjs.map → descriptor-meta-ARufwwWW-ChZm5Hg5.mjs.map} +1 -1
  21. package/dist/{descriptor-meta-C8lkQFHe-Cluy19Tk.mjs → descriptor-meta-WHc6Kv-m-BLzsaP0M.mjs} +4 -4
  22. package/dist/{descriptor-meta-C8lkQFHe-Cluy19Tk.mjs.map → descriptor-meta-WHc6Kv-m-BLzsaP0M.mjs.map} +1 -1
  23. package/dist/{diff-database-schema-KGNaKzKp-Bt2yYSIt.mjs → diff-database-schema-D9YbaVKX-DZ5wOErP.mjs} +5 -5
  24. package/dist/{diff-database-schema-KGNaKzKp-Bt2yYSIt.mjs.map → diff-database-schema-D9YbaVKX-DZ5wOErP.mjs.map} +1 -1
  25. package/dist/{infer-psl-contract-DoIdoifj-Co9thnGu.mjs → infer-psl-contract-D-3st5lU-DKQhhsut.mjs} +3 -3
  26. package/dist/{infer-psl-contract-DoIdoifj-Co9thnGu.mjs.map → infer-psl-contract-D-3st5lU-DKQhhsut.mjs.map} +1 -1
  27. package/dist/{issue-planner-pmBrIrEN.d.mts → issue-planner-BwcfQagl.d.mts} +2 -2
  28. package/dist/{issue-planner-pmBrIrEN.d.mts.map → issue-planner-BwcfQagl.d.mts.map} +1 -1
  29. package/dist/{migration-D189kh3f.d.mts → migration-D5f4UTR3.d.mts} +3 -3
  30. package/dist/{migration-D189kh3f.d.mts.map → migration-D5f4UTR3.d.mts.map} +1 -1
  31. package/dist/migration-PTHAY9Cv.mjs.map +1 -1
  32. package/dist/{op-factory-call-CqKUB1XP-CsEGx4Jd.d.mts → op-factory-call-BaT4DlIo-BnVxOrwv.d.mts} +51 -17
  33. package/dist/op-factory-call-BaT4DlIo-BnVxOrwv.d.mts.map +1 -0
  34. package/dist/{op-factory-call-BAgAln5R-BTkhp29z.mjs → op-factory-call-CXlapjuM-BHZNE4Ph.mjs} +133 -40
  35. package/dist/op-factory-call-CXlapjuM-BHZNE4Ph.mjs.map +1 -0
  36. package/dist/op-factory-call-CwFkWbuo.d.mts +1 -0
  37. package/dist/{planner-CvUO8Zpn.d.mts → planner-BkGEylgU.d.mts} +17 -8
  38. package/dist/planner-BkGEylgU.d.mts.map +1 -0
  39. package/dist/{planner-DSTSuAc8-BAfUo5KV.mjs → planner-DwfHmYme-P1dFkpQ4.mjs} +216 -26
  40. package/dist/planner-DwfHmYme-P1dFkpQ4.mjs.map +1 -0
  41. package/dist/{planner-produced-postgres-migration-DT3i_p3G-CyQUv3ac.d.mts → planner-produced-postgres-migration-BwZrjNPg-Ch67sFwK.d.mts} +3 -3
  42. package/dist/planner-produced-postgres-migration-BwZrjNPg-Ch67sFwK.d.mts.map +1 -0
  43. package/dist/{planner-produced-postgres-migration-D7-3OBb_-BGHFKj3i.mjs → planner-produced-postgres-migration-DBUj6Imx-DhpHjroB.mjs} +4 -4
  44. package/dist/{planner-produced-postgres-migration-D7-3OBb_-BGHFKj3i.mjs.map → planner-produced-postgres-migration-DBUj6Imx-DhpHjroB.mjs.map} +1 -1
  45. package/dist/planner-produced-postgres-migration-eDPWYNBo.d.mts +1 -0
  46. package/dist/{planner-sql-checks-rqOH8naU-B6xOE5lC.mjs → planner-sql-checks-DCGV2qdu-eaeFLtn8.mjs} +3 -3
  47. package/dist/{planner-sql-checks-rqOH8naU-B6xOE5lC.mjs.map → planner-sql-checks-DCGV2qdu-eaeFLtn8.mjs.map} +1 -1
  48. package/dist/{postgres-contract-view-C1bi3x4v-BAfk6euQ.mjs → postgres-contract-view-CL-YTH_3-Diah6i2a.mjs} +4 -4
  49. package/dist/{postgres-contract-view-C1bi3x4v-BAfk6euQ.mjs.map → postgres-contract-view-CL-YTH_3-Diah6i2a.mjs.map} +1 -1
  50. package/dist/{postgres-migration-e8UybR1y-C_m4i1jp.d.mts → postgres-migration-D2Xs7BfD-Df3OpTyw.d.mts} +37 -4
  51. package/dist/postgres-migration-D2Xs7BfD-Df3OpTyw.d.mts.map +1 -0
  52. package/dist/postgres-migration-DjCmSHjA-D8CPJqkC.mjs +1075 -0
  53. package/dist/postgres-migration-DjCmSHjA-D8CPJqkC.mjs.map +1 -0
  54. package/dist/{postgres-schema-AlEVkXXS-ZfXWYddl.mjs → postgres-schema-COkaqci7-C6JpiSha.mjs} +6 -6
  55. package/dist/postgres-schema-COkaqci7-C6JpiSha.mjs.map +1 -0
  56. package/dist/{prisma7-binding-B4BfqE0o.mjs → prisma7-binding-CAzQh1rQ.mjs} +5 -5
  57. package/dist/{prisma7-binding-B4BfqE0o.mjs.map → prisma7-binding-CAzQh1rQ.mjs.map} +1 -1
  58. package/dist/{render-ops-D2vJApKB-B281fzmn.mjs → render-ops-B5FbJGYf-CnmbaalQ.mjs} +16 -9
  59. package/dist/render-ops-B5FbJGYf-CnmbaalQ.mjs.map +1 -0
  60. package/dist/{resolve-ddl-schema-BthOWVjF-DuZ9iUh-.mjs → resolve-ddl-schema-DD69Bwve-e-BpAfFa.mjs} +3 -3
  61. package/dist/{resolve-ddl-schema-BthOWVjF-DuZ9iUh-.mjs.map → resolve-ddl-schema-DD69Bwve-e-BpAfFa.mjs.map} +1 -1
  62. package/dist/target.d.mts +9 -9
  63. package/dist/target.mjs +17 -17
  64. package/dist/target__contract-free.mjs +3 -3
  65. package/dist/target__control.mjs +3 -3
  66. package/dist/target__diff-database-schema.mjs +1 -1
  67. package/dist/target__issue-planner.d.mts +1 -1
  68. package/dist/target__issue-planner.mjs +1 -1
  69. package/dist/target__migration.d.mts +2 -2
  70. package/dist/target__migration.mjs +2 -2
  71. package/dist/target__op-factory-call.d.mts +3 -3
  72. package/dist/target__op-factory-call.mjs +2 -2
  73. package/dist/target__pack.mjs +1 -1
  74. package/dist/target__planner-produced-postgres-migration.d.mts +2 -2
  75. package/dist/target__planner-produced-postgres-migration.mjs +1 -1
  76. package/dist/target__planner-sql-checks.mjs +1 -1
  77. package/dist/target__planner.d.mts +1 -1
  78. package/dist/target__planner.mjs +2 -2
  79. package/dist/target__prisma7-binding.mjs +1 -1
  80. package/dist/target__render-ops.mjs +1 -1
  81. package/dist/target__runtime.mjs +2 -2
  82. package/dist/target__runtime.mjs.map +1 -1
  83. package/dist/target__schema-ir-annotations.mjs +1 -1
  84. package/dist/target__types.mjs +1 -1
  85. package/package.json +9 -9
  86. package/dist/control-policy-B7t5CB1S-CotIwNO4.mjs.map +0 -1
  87. package/dist/op-factory-call-BAgAln5R-BTkhp29z.mjs.map +0 -1
  88. package/dist/op-factory-call-CqKUB1XP-CsEGx4Jd.d.mts.map +0 -1
  89. package/dist/op-factory-call-D5UJ7cDi.d.mts +0 -1
  90. package/dist/planner-CvUO8Zpn.d.mts.map +0 -1
  91. package/dist/planner-DSTSuAc8-BAfUo5KV.mjs.map +0 -1
  92. package/dist/planner-produced-postgres-migration-BI_aepPp.d.mts +0 -1
  93. package/dist/planner-produced-postgres-migration-DT3i_p3G-CyQUv3ac.d.mts.map +0 -1
  94. package/dist/postgres-migration-CeX6vfEU-DsmCRCnD.mjs +0 -596
  95. package/dist/postgres-migration-CeX6vfEU-DsmCRCnD.mjs.map +0 -1
  96. package/dist/postgres-migration-e8UybR1y-C_m4i1jp.d.mts.map +0 -1
  97. package/dist/postgres-schema-AlEVkXXS-ZfXWYddl.mjs.map +0 -1
  98. package/dist/render-ops-D2vJApKB-B281fzmn.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-contract-view-C1bi3x4v-BAfk6euQ.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/postgres-contract-view-C1bi3x4v.mjs"],"sourcesContent":["import { S as PG_TEXT_CODEC_ID, _ as PG_INT_CODEC_ID } from \"./codec-ids-Cb0yO-IS.mjs\";\nimport { t as createPostgresBuiltinDataTypeLookup } from \"./data-types-DRkmmE9S.mjs\";\nimport { r as createPostgresBuiltinCodecLookup } from \"./codec-registry-CKBDkxX7.mjs\";\nimport { n as postgresAuthoringEntityTypes } from \"./authoring-B2hHIzvd.mjs\";\nimport { a as nativeEnumEntityKind, c as roleEntityKind, o as policyEntityKind, s as rlsEnablementEntityKind, t as PostgresSchema } from \"./postgres-schema-AlEVkXXS.mjs\";\nimport { requiredSchemaKeys } from \"@internal/framework-components/codec\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\nimport { isAuthoringEntityTypeDescriptor } from \"@internal/framework-components/authoring\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { buildSqlSchemaQualifiedView } from \"@internal/sql-contract/contract-view\";\nimport { createPreserveEmptyPredicate } from \"@internal/contract/hashing-utils\";\nimport { SqlContractSerializerBase } from \"@internal/family-sql/ir\";\nimport { sqlContractCanonicalizationHooks } from \"@internal/sql-contract/canonicalization-hooks\";\n//#region src/core/postgres-contract-serializer.ts\nconst POSTGRES_AUTHORING_CTX = {\n\tfamily: \"sql\",\n\ttarget: \"postgres\",\n\tcodecLookup: createPostgresBuiltinCodecLookup(),\n\tdataTypeLookup: createPostgresBuiltinDataTypeLookup(),\n\tenumInferenceCodecs: {\n\t\ttext: PG_TEXT_CODEC_ID,\n\t\tint: PG_INT_CODEC_ID\n\t}\n};\nfunction isAuthoringEntityTypeFactoryOutput(output) {\n\treturn typeof output === \"object\" && output !== null && \"factory\" in output && typeof output.factory === \"function\";\n}\n/**\n* Walks a pack's entity-type namespace tree and emits hydration factories\n* keyed by the descriptor's `discriminator`. Used for `storage.types`\n* (codec-triple hydration). Namespace entries hydration dispatches by\n* entries key, not discriminator — handled by `hydrateNamespaceEntities`.\n*/\nfunction collectStorageTypesHydrators(namespace) {\n\tconst registry = /* @__PURE__ */ new Map();\n\tconst walk = (node) => {\n\t\tfor (const value of Object.values(node)) {\n\t\t\tif (isAuthoringEntityTypeDescriptor(value)) {\n\t\t\t\tif (isAuthoringEntityTypeFactoryOutput(value.output)) {\n\t\t\t\t\tconst { factory } = value.output;\n\t\t\t\t\tregistry.set(value.discriminator, (raw) => factory(raw, POSTGRES_AUTHORING_CTX));\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (typeof value === \"object\" && value !== null) walk(value);\n\t\t}\n\t};\n\twalk(namespace);\n\treturn registry;\n}\n/**\n* The canonicalization walk drops a field whose value equals its type's\n* default, which for a required field of an entity kind means the emitted\n* contract fails that kind's own schema on the next read (a RESTRICTIVE\n* policy's `permissive: false` is the live case). The set of fields that must\n* survive is therefore the required keys of the registered entity kinds —\n* read off the schemas rather than listed by hand, so a kind that gains a\n* required field is covered the day it gains one.\n*/\nfunction requiredEntityFieldsSurviveDefaults(kinds) {\n\treturn createPreserveEmptyPredicate(kinds.flatMap((kind) => requiredKeysOf(kind.schema).map((key) => [\n\t\t\"storage\",\n\t\t\"namespaces\",\n\t\t\"*\",\n\t\t\"entries\",\n\t\tkind.kind,\n\t\t\"*\",\n\t\tkey\n\t])));\n}\nfunction requiredKeysOf(schema) {\n\tconst keys = requiredSchemaKeys(schema);\n\tif (keys === void 0) throw new InternalError(\"entity-kind schema does not expose arktype object props; the required-field preserve set cannot be derived\");\n\treturn keys;\n}\nvar PostgresContractSerializer = class extends SqlContractSerializerBase {\n\tshouldPreserveEmpty;\n\tconstructor(extraPackEntityKinds = []) {\n\t\tconst storageTypesHydrators = collectStorageTypesHydrators(postgresAuthoringEntityTypes);\n\t\tconst entityKinds = [\n\t\t\tpolicyEntityKind,\n\t\t\troleEntityKind,\n\t\t\trlsEnablementEntityKind,\n\t\t\tnativeEnumEntityKind,\n\t\t\t...extraPackEntityKinds\n\t\t];\n\t\tsuper(storageTypesHydrators, entityKinds);\n\t\tconst preserveRequired = requiredEntityFieldsSurviveDefaults(entityKinds);\n\t\tthis.shouldPreserveEmpty = (path) => preserveRequired(path) || sqlContractCanonicalizationHooks.shouldPreserveEmpty(path);\n\t}\n\thydrateSqlNamespaceEntry(nsId, raw) {\n\t\tconst { id, entries } = blindCast(super.hydrateSqlNamespaceEntry(nsId, raw));\n\t\tconst allSlotsEmpty = Object.values(entries).every((slot) => slot === void 0 || Object.keys(slot).length === 0);\n\t\tif (id === UNBOUND_NAMESPACE_ID && allSlotsEmpty) return PostgresSchema.unbound;\n\t\tconst valueSetSlot = entries[\"valueSet\"];\n\t\tconst hasValueSets = valueSetSlot !== void 0 && Object.keys(valueSetSlot).length > 0;\n\t\treturn new PostgresSchema({\n\t\t\tid,\n\t\t\tentries: {\n\t\t\t\t...entries,\n\t\t\t\ttable: entries[\"table\"] ?? {},\n\t\t\t\t...hasValueSets ? { valueSet: valueSetSlot } : {}\n\t\t\t}\n\t\t});\n\t}\n\tserializeContract(contract) {\n\t\tconst { storage, ...rest } = contract;\n\t\tconst namespacesJson = {};\n\t\tfor (const [nsId, ns] of Object.entries(storage.namespaces)) {\n\t\t\tconst isUnboundSlot = ns.id === UNBOUND_NAMESPACE_ID;\n\t\t\tnamespacesJson[nsId] = {\n\t\t\t\tid: ns.id,\n\t\t\t\tkind: isUnboundSlot ? \"postgres-unbound-schema\" : \"postgres-schema\",\n\t\t\t\tentries: this.serializeNamespaceEntries(ns.entries)\n\t\t\t};\n\t\t}\n\t\tconst storageOut = {\n\t\t\tstorageHash: String(storage.storageHash),\n\t\t\tnamespaces: namespacesJson\n\t\t};\n\t\tif (storage.types !== void 0) {\n\t\t\tconst typesOut = {};\n\t\t\tfor (const [name, entry] of Object.entries(storage.types)) typesOut[name] = this.serializeJsonObject(entry);\n\t\t\tstorageOut[\"types\"] = typesOut;\n\t\t}\n\t\treturn blindCast({\n\t\t\t...rest,\n\t\t\tstorage: storageOut\n\t\t});\n\t}\n};\n//#endregion\n//#region src/core/postgres-contract-view.ts\nconst PostgresContractView = {\n\t/** Wrap an already-deserialized Postgres contract in a schema-qualified view. */\n\tfrom(contract) {\n\t\treturn buildSqlSchemaQualifiedView(contract);\n\t},\n\t/** Deserialize a Postgres contract JSON envelope and wrap it in a view. */\n\tfromJson(json) {\n\t\treturn buildSqlSchemaQualifiedView(new PostgresContractSerializer().deserializeContract(json));\n\t}\n};\n//#endregion\nexport { PostgresContractSerializer as n, PostgresContractView as t };\n\n//# sourceMappingURL=postgres-contract-view-C1bi3x4v.mjs.map"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAM,yBAAyB;CAC9B,QAAQ;CACR,QAAQ;CACR,aAAa,iCAAiC;CAC9C,gBAAgB,oCAAoC;CACpD,qBAAqB;EACpB,MAAM;EACN,KAAK;CACN;AACD;AACA,SAAS,mCAAmC,QAAQ;CACnD,OAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,aAAa,UAAU,OAAO,OAAO,YAAY;AAC1G;;;;;;;AAOA,SAAS,6BAA6B,WAAW;CAChD,MAAM,2BAA2B,IAAI,IAAI;CACzC,MAAM,QAAQ,SAAS;EACtB,KAAK,MAAM,SAAS,OAAO,OAAO,IAAI,GAAG;GACxC,IAAI,gCAAgC,KAAK,GAAG;IAC3C,IAAI,mCAAmC,MAAM,MAAM,GAAG;KACrD,MAAM,EAAE,YAAY,MAAM;KAC1B,SAAS,IAAI,MAAM,gBAAgB,QAAQ,QAAQ,KAAK,sBAAsB,CAAC;IAChF;IACA;GACD;GACA,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,KAAK,KAAK;EAC5D;CACD;CACA,KAAK,SAAS;CACd,OAAO;AACR;;;;;;;;;;AAUA,SAAS,oCAAoC,OAAO;CACnD,OAAO,6BAA6B,MAAM,SAAS,SAAS,eAAe,KAAK,MAAM,CAAC,CAAC,KAAK,QAAQ;EACpG;EACA;EACA;EACA;EACA,KAAK;EACL;EACA;CACD,CAAC,CAAC,CAAC;AACJ;AACA,SAAS,eAAe,QAAQ;CAC/B,MAAM,OAAO,mBAAmB,MAAM;CACtC,IAAI,SAAS,KAAK,GAAG,MAAM,IAAI,cAAc,4GAA4G;CACzJ,OAAO;AACR;AACA,IAAI,6BAA6B,cAAc,0BAA0B;CACxE;CACA,YAAY,uBAAuB,CAAC,GAAG;EACtC,MAAM,wBAAwB,6BAA6B,4BAA4B;EACvF,MAAM,cAAc;GACnB;GACA;GACA;GACA;GACA,GAAG;EACJ;EACA,MAAM,uBAAuB,WAAW;EACxC,MAAM,mBAAmB,oCAAoC,WAAW;EACxE,KAAK,uBAAuB,SAAS,iBAAiB,IAAI,KAAK,iCAAiC,oBAAoB,IAAI;CACzH;CACA,yBAAyB,MAAM,KAAK;EACnC,MAAM,EAAE,IAAI,YAAY,UAAU,MAAM,yBAAyB,MAAM,GAAG,CAAC;EAC3E,MAAM,gBAAgB,OAAO,OAAO,OAAO,CAAC,CAAC,OAAO,SAAS,SAAS,KAAK,KAAK,OAAO,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC;EAC9G,IAAI,OAAO,wBAAwB,eAAe,OAAO,eAAe;EACxE,MAAM,eAAe,QAAQ;EAC7B,MAAM,eAAe,iBAAiB,KAAK,KAAK,OAAO,KAAK,YAAY,CAAC,CAAC,SAAS;EACnF,OAAO,IAAI,eAAe;GACzB;GACA,SAAS;IACR,GAAG;IACH,OAAO,QAAQ,YAAY,CAAC;IAC5B,GAAG,eAAe,EAAE,UAAU,aAAa,IAAI,CAAC;GACjD;EACD,CAAC;CACF;CACA,kBAAkB,UAAU;EAC3B,MAAM,EAAE,SAAS,GAAG,SAAS;EAC7B,MAAM,iBAAiB,CAAC;EACxB,KAAK,MAAM,CAAC,MAAM,OAAO,OAAO,QAAQ,QAAQ,UAAU,GAAG;GAC5D,MAAM,gBAAgB,GAAG,OAAO;GAChC,eAAe,QAAQ;IACtB,IAAI,GAAG;IACP,MAAM,gBAAgB,4BAA4B;IAClD,SAAS,KAAK,0BAA0B,GAAG,OAAO;GACnD;EACD;EACA,MAAM,aAAa;GAClB,aAAa,OAAO,QAAQ,WAAW;GACvC,YAAY;EACb;EACA,IAAI,QAAQ,UAAU,KAAK,GAAG;GAC7B,MAAM,WAAW,CAAC;GAClB,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,KAAK,GAAG,SAAS,QAAQ,KAAK,oBAAoB,KAAK;GAC1G,WAAW,WAAW;EACvB;EACA,OAAO,UAAU;GAChB,GAAG;GACH,SAAS;EACV,CAAC;CACF;AACD;AAGA,MAAM,uBAAuB;;CAE5B,KAAK,UAAU;EACd,OAAO,4BAA4B,QAAQ;CAC5C;;CAEA,SAAS,MAAM;EACd,OAAO,4BAA4B,IAAI,2BAA2B,CAAC,CAAC,oBAAoB,IAAI,CAAC;CAC9F;AACD"}
1
+ {"version":3,"file":"postgres-contract-view-CL-YTH_3-Diah6i2a.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/postgres-contract-view-CL-YTH_3.mjs"],"sourcesContent":["import { S as PG_TEXT_CODEC_ID, _ as PG_INT_CODEC_ID } from \"./codec-ids-Cb0yO-IS.mjs\";\nimport { t as createPostgresBuiltinDataTypeLookup } from \"./data-types-DRkmmE9S.mjs\";\nimport { r as createPostgresBuiltinCodecLookup } from \"./codec-registry-CKBDkxX7.mjs\";\nimport { n as postgresAuthoringEntityTypes } from \"./authoring-_2G2lsLt.mjs\";\nimport { a as nativeEnumEntityKind, c as roleEntityKind, o as policyEntityKind, s as rlsEnablementEntityKind, t as PostgresSchema } from \"./postgres-schema-COkaqci7.mjs\";\nimport { requiredSchemaKeys } from \"@internal/framework-components/codec\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\nimport { isAuthoringEntityTypeDescriptor } from \"@internal/framework-components/authoring\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { buildSqlSchemaQualifiedView } from \"@internal/sql-contract/contract-view\";\nimport { createPreserveEmptyPredicate } from \"@internal/contract/hashing-utils\";\nimport { SqlContractSerializerBase } from \"@internal/family-sql/ir\";\nimport { sqlContractCanonicalizationHooks } from \"@internal/sql-contract/canonicalization-hooks\";\n//#region src/core/postgres-contract-serializer.ts\nconst POSTGRES_AUTHORING_CTX = {\n\tfamily: \"sql\",\n\ttarget: \"postgres\",\n\tcodecLookup: createPostgresBuiltinCodecLookup(),\n\tdataTypeLookup: createPostgresBuiltinDataTypeLookup(),\n\tenumInferenceCodecs: {\n\t\ttext: PG_TEXT_CODEC_ID,\n\t\tint: PG_INT_CODEC_ID\n\t}\n};\nfunction isAuthoringEntityTypeFactoryOutput(output) {\n\treturn typeof output === \"object\" && output !== null && \"factory\" in output && typeof output.factory === \"function\";\n}\n/**\n* Walks a pack's entity-type namespace tree and emits hydration factories\n* keyed by the descriptor's `discriminator`. Used for `storage.types`\n* (codec-triple hydration). Namespace entries hydration dispatches by\n* entries key, not discriminator — handled by `hydrateNamespaceEntities`.\n*/\nfunction collectStorageTypesHydrators(namespace) {\n\tconst registry = /* @__PURE__ */ new Map();\n\tconst walk = (node) => {\n\t\tfor (const value of Object.values(node)) {\n\t\t\tif (isAuthoringEntityTypeDescriptor(value)) {\n\t\t\t\tif (isAuthoringEntityTypeFactoryOutput(value.output)) {\n\t\t\t\t\tconst { factory } = value.output;\n\t\t\t\t\tregistry.set(value.discriminator, (raw) => factory(raw, POSTGRES_AUTHORING_CTX));\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (typeof value === \"object\" && value !== null) walk(value);\n\t\t}\n\t};\n\twalk(namespace);\n\treturn registry;\n}\n/**\n* The canonicalization walk drops a field whose value equals its type's\n* default, which for a required field of an entity kind means the emitted\n* contract fails that kind's own schema on the next read (a RESTRICTIVE\n* policy's `permissive: false` is the live case). The set of fields that must\n* survive is therefore the required keys of the registered entity kinds —\n* read off the schemas rather than listed by hand, so a kind that gains a\n* required field is covered the day it gains one.\n*/\nfunction requiredEntityFieldsSurviveDefaults(kinds) {\n\treturn createPreserveEmptyPredicate(kinds.flatMap((kind) => requiredKeysOf(kind.schema).map((key) => [\n\t\t\"storage\",\n\t\t\"namespaces\",\n\t\t\"*\",\n\t\t\"entries\",\n\t\tkind.kind,\n\t\t\"*\",\n\t\tkey\n\t])));\n}\nfunction requiredKeysOf(schema) {\n\tconst keys = requiredSchemaKeys(schema);\n\tif (keys === void 0) throw new InternalError(\"entity-kind schema does not expose arktype object props; the required-field preserve set cannot be derived\");\n\treturn keys;\n}\nvar PostgresContractSerializer = class extends SqlContractSerializerBase {\n\tshouldPreserveEmpty;\n\tconstructor(extraPackEntityKinds = []) {\n\t\tconst storageTypesHydrators = collectStorageTypesHydrators(postgresAuthoringEntityTypes);\n\t\tconst entityKinds = [\n\t\t\tpolicyEntityKind,\n\t\t\troleEntityKind,\n\t\t\trlsEnablementEntityKind,\n\t\t\tnativeEnumEntityKind,\n\t\t\t...extraPackEntityKinds\n\t\t];\n\t\tsuper(storageTypesHydrators, entityKinds);\n\t\tconst preserveRequired = requiredEntityFieldsSurviveDefaults(entityKinds);\n\t\tthis.shouldPreserveEmpty = (path) => preserveRequired(path) || sqlContractCanonicalizationHooks.shouldPreserveEmpty(path);\n\t}\n\thydrateSqlNamespaceEntry(nsId, raw) {\n\t\tconst { id, entries } = blindCast(super.hydrateSqlNamespaceEntry(nsId, raw));\n\t\tconst allSlotsEmpty = Object.values(entries).every((slot) => slot === void 0 || Object.keys(slot).length === 0);\n\t\tif (id === UNBOUND_NAMESPACE_ID && allSlotsEmpty) return PostgresSchema.unbound;\n\t\tconst valueSetSlot = entries[\"valueSet\"];\n\t\tconst hasValueSets = valueSetSlot !== void 0 && Object.keys(valueSetSlot).length > 0;\n\t\treturn new PostgresSchema({\n\t\t\tid,\n\t\t\tentries: {\n\t\t\t\t...entries,\n\t\t\t\ttable: entries[\"table\"] ?? {},\n\t\t\t\t...hasValueSets ? { valueSet: valueSetSlot } : {}\n\t\t\t}\n\t\t});\n\t}\n\tserializeContract(contract) {\n\t\tconst { storage, ...rest } = contract;\n\t\tconst namespacesJson = {};\n\t\tfor (const [nsId, ns] of Object.entries(storage.namespaces)) {\n\t\t\tconst isUnboundSlot = ns.id === UNBOUND_NAMESPACE_ID;\n\t\t\tnamespacesJson[nsId] = {\n\t\t\t\tid: ns.id,\n\t\t\t\tkind: isUnboundSlot ? \"postgres-unbound-schema\" : \"postgres-schema\",\n\t\t\t\tentries: this.serializeNamespaceEntries(ns.entries)\n\t\t\t};\n\t\t}\n\t\tconst storageOut = {\n\t\t\tstorageHash: String(storage.storageHash),\n\t\t\tnamespaces: namespacesJson\n\t\t};\n\t\tif (storage.types !== void 0) {\n\t\t\tconst typesOut = {};\n\t\t\tfor (const [name, entry] of Object.entries(storage.types)) typesOut[name] = this.serializeJsonObject(entry);\n\t\t\tstorageOut[\"types\"] = typesOut;\n\t\t}\n\t\treturn blindCast({\n\t\t\t...rest,\n\t\t\tstorage: storageOut\n\t\t});\n\t}\n};\n//#endregion\n//#region src/core/postgres-contract-view.ts\nconst PostgresContractView = {\n\t/** Wrap an already-deserialized Postgres contract in a schema-qualified view. */\n\tfrom(contract) {\n\t\treturn buildSqlSchemaQualifiedView(contract);\n\t},\n\t/** Deserialize a Postgres contract JSON envelope and wrap it in a view. */\n\tfromJson(json) {\n\t\treturn buildSqlSchemaQualifiedView(new PostgresContractSerializer().deserializeContract(json));\n\t}\n};\n//#endregion\nexport { PostgresContractSerializer as n, PostgresContractView as t };\n\n//# sourceMappingURL=postgres-contract-view-CL-YTH_3.mjs.map"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { r as RenderedRlsPolicyLiteral } from "./postgres-rls-policy-CnDxf3z9-C3LIHAIG.mjs";
2
2
  import { t as PostgresPlanTargetDetails } from "./planner-target-details-HkP4RrRO-_xPQVPF0.mjs";
3
3
  import { n as DataTransformOptions } from "./data-transform-Ck5FbyNO-BNE7QlAo.mjs";
4
- import { N as RenamableConstraintKind, f as CreateIndexExtras, k as ForeignKeySpec, l as AlterColumnTypeOptions } from "./op-factory-call-CqKUB1XP-CsEGx4Jd.mjs";
4
+ import { A as ForeignKeySpec, P as RenamableConstraintKind, l as AlterColumnTypeClass, p as CreateIndexExtras, u as AlterColumnTypeOptions } from "./op-factory-call-BaT4DlIo-BnVxOrwv.mjs";
5
5
  import { t as PostgresContractView } from "./postgres-contract-view-2OP5JnXl-D2fpy4-8.mjs";
6
6
  import { DdlColumn, DdlTableConstraint } from "@prisma/orm-family-sql/relational-core/ast";
7
7
  import { SqlStorage } from "@prisma/orm-family-sql/contract/types";
@@ -10,7 +10,7 @@ import { SqlMigrationPlanOperation } from "@prisma/orm-family-sql/family/control
10
10
  import { Migration } from "@prisma/orm-family-sql/family/migration";
11
11
  import { Contract } from "@prisma/orm-framework/contract/types";
12
12
  import { SqlControlAdapter } from "@prisma/orm-family-sql/family/control-adapter";
13
- //#region ../../../3-targets/3-targets/postgres/dist/postgres-migration-e8UybR1y.d.mts
13
+ //#region ../../../3-targets/3-targets/postgres/dist/postgres-migration-D2Xs7BfD.d.mts
14
14
  //#region src/core/migrations/postgres-migration.d.ts
15
15
  /**
16
16
  * Target-owned base class for Postgres migrations.
@@ -178,13 +178,45 @@ declare abstract class PostgresMigration<Start extends Contract<SqlStorage> = Co
178
178
  readonly kind?: 'foreignKey' | 'unique' | 'primaryKey';
179
179
  }): Promise<SqlMigrationPlanOperation<PostgresPlanTargetDetails>>;
180
180
  /**
181
- * Emit the operations that rename a table: the table rename, then a rename of each primary key, unique constraint, foreign key, index and check whose name was derived from the old table name, read from this migration's start and end contracts. Spread the result into `operations`: `...this.renameTable({ table: 'userProfile', to: 'UserProfile' })`. `schema` names the table's namespace when more than one declares the table. Throws `MIGRATION.TABLE_RENAME_UNMATCHED` when the start contract lacks the table or the end contract lacks the new name.
181
+ * Emit the operations that rename a table: the table rename, then a rename of each primary key,
182
+ * unique constraint, foreign key, index and check whose name was derived from the old table name.
183
+ * The old name is resolved against the schema as this migration's earlier rename calls
184
+ * (`renameTable`, `renameIndex`, `renameConstraint`, `renameRlsPolicy`) leave it, and the new
185
+ * name against the end contract, so the companions start from names an earlier rename gave.
186
+ * Spread the result into `operations`:
187
+ * `...this.renameTable({ table: 'userProfile', to: 'UserProfile' })`. `schema` names the table's
188
+ * namespace when more than one declares the table. Throws `MIGRATION.TABLE_RENAME_UNMATCHED` when
189
+ * the table does not exist at that point of the migration or the end contract lacks the new name.
182
190
  */
183
191
  protected renameTable(options: {
184
192
  readonly schema?: string;
185
193
  readonly table: string;
186
194
  readonly to: string;
187
195
  }): readonly Promise<SqlMigrationPlanOperation<PostgresPlanTargetDetails>>[];
196
+ /**
197
+ * Emit the operations that rename a column: the column rename, then a rename of each unique
198
+ * constraint, foreign key and index on the column whose name was derived from the old column
199
+ * name, to the name the end contract gives it. The column is resolved against the schema as this
200
+ * migration's earlier rename calls leave it, so a column of a table an earlier `renameTable`
201
+ * renamed is named on the table's new name. Spread the result into `operations`:
202
+ * `...this.renameColumn({ table: 'User', column: 'name', to: 'fullName' })`. `schema` names the
203
+ * table's namespace when more than one declares the table. Throws
204
+ * `MIGRATION.COLUMN_RENAME_UNMATCHED` when the table or column does not exist at that point of
205
+ * the migration, the table already has the new column, or the end contract lacks it.
206
+ */
207
+ protected renameColumn(options: {
208
+ readonly schema?: string;
209
+ readonly table: string;
210
+ readonly column: string;
211
+ readonly to: string;
212
+ }): readonly Promise<SqlMigrationPlanOperation<PostgresPlanTargetDetails>>[];
213
+ /**
214
+ * The start contract's schema with this read's rename calls applied in order. It is built only
215
+ * when a `renameTable` needs it, so a migration that renames no table never reads its start
216
+ * contract.
217
+ */
218
+ private schemaAfterRenames;
219
+ protected beginOperationsRead(): void;
188
220
  protected dropTable(options: {
189
221
  readonly schema: string;
190
222
  readonly table: string;
@@ -199,6 +231,7 @@ declare abstract class PostgresMigration<Start extends Contract<SqlStorage> = Co
199
231
  readonly table: string;
200
232
  readonly column: string;
201
233
  readonly options: AlterColumnTypeOptions;
234
+ readonly operationClass?: AlterColumnTypeClass;
202
235
  }): Promise<SqlMigrationPlanOperation<PostgresPlanTargetDetails>>;
203
236
  protected setNotNull(options: {
204
237
  readonly schema: string;
@@ -277,4 +310,4 @@ declare abstract class PostgresMigration<Start extends Contract<SqlStorage> = Co
277
310
  }
278
311
  //#endregion
279
312
  export { PostgresMigration as t };
280
- //# sourceMappingURL=postgres-migration-e8UybR1y-C_m4i1jp.d.mts.map
313
+ //# sourceMappingURL=postgres-migration-D2Xs7BfD-Df3OpTyw.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration-D2Xs7BfD-Df3OpTyw.d.mts","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/postgres-migration-D2Xs7BfD.d.mts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAwCuB,kBAAkB,cAAc,SAAS,cAAc,SAAS,aAAa,YAAY,SAAS,cAAc,SAAS,qBAAqB,UAAU,uCAAuC,OAAO;;WAElN;;;;;;;qBAOU,gBAAgB;EACnC,YAAY,QAAQ;UACZ;;;;;;UAMA;;;;;;MAMJ,eAAe,qBAAqB;;;;;MAKpC,iBAAiB,qBAAqB;;;;;;YAMhC,cAAc,kBAAkB,SAAS,aAAa,UAAU,WAAW,cAAc,SAAS,uBAAuB,QAAQ,0BAA0B;;;;;;YAM3J,YAAY;aACX;aACA;aACA;aACA,kBAAkB;aAClB,uBAAuB;MAC9B,QAAQ,0BAA0B;;;;;;YAM5B,aAAa;aACZ;aACA;MACP,QAAQ,0BAA0B;;;;;;;YAO5B,qBAAqB;aACpB;aACA;aACA;MACP,QAAQ,0BAA0B;;;;;YAK5B,mBAAmB;aAClB;aACA;MACP,QAAQ,0BAA0B;;;;;;;YAO5B,mBAAmB;aAClB;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,UAAU;aACT;aACA;aACA,QAAQ;MACf,QAAQ,0BAA0B;YAC5B,cAAc;aACb;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,UAAU;aACT;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,cAAc;aACb;aACA;aACA,YAAY;MACnB,QAAQ,0BAA0B;YAC5B,mBAAmB;aAClB;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,sBAAsB;aACrB;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,iBAAiB;aAChB;aACA;aACA,MAAM;aACN;aACA;MACP,QAAQ,0BAA0B;YAC5B,oBAAoB;aACnB;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,eAAe;aACd;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;;;;;;;;;;;;YAY5B,YAAY;aACX;aACA;aACA;eACE,QAAQ,0BAA0B;;;;;;;;;;;;YAYrC,aAAa;aACZ;aACA;aACA;aACA;eACE,QAAQ,0BAA0B;;;;;;UAMvC;YACE;YACA,UAAU;aACT;aACA;MACP,QAAQ,0BAA0B;YAC5B,WAAW;aACV;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,gBAAgB;aACf;aACA;aACA;aACA,SAAS;aACT,iBAAiB;MACxB,QAAQ,0BAA0B;YAC5B,WAAW;aACV;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,YAAY;aACX;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,WAAW;aACV;aACA;aACA,QAAQ;aACR;MACP,QAAQ,0BAA0B;YAC5B,YAAY;aACX;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,YAAY;aACX;aACA;aACA;aACA,SAAS;;aAET;aACA;;aAEA;aACA;OACN,QAAQ,0BAA0B;YAC7B,YAAY;aACX;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,UAAU;aACT;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,iBAAiB;aAChB;aACA;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,uBAAuB;aACtB;aACA;MACP,QAAQ,0BAA0B;YAC5B,wBAAwB;aACvB;aACA;MACP,QAAQ,0BAA0B;YAC5B,gBAAgB;aACf;aACA;aACA,QAAQ;MACf,QAAQ,0BAA0B;YAC5B,cAAc;aACb;aACA;aACA;MACP,QAAQ,0BAA0B;YAC5B,gBAAgB;aACf;aACA;aACA;aACA;MACP,QAAQ,0BAA0B"}