@prisma/orm-target-postgres 0.16.0-dev.36
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.
- package/LICENSE +201 -0
- package/README.md +23 -0
- package/dist/adapter-CWvVo0PV.d.mts +22 -0
- package/dist/adapter-CWvVo0PV.d.mts.map +1 -0
- package/dist/adapter-DhqcO3YO-jzwDVcCv.mjs +70 -0
- package/dist/adapter-DhqcO3YO-jzwDVcCv.mjs.map +1 -0
- package/dist/adapter.d.mts +12 -0
- package/dist/adapter.mjs +7 -0
- package/dist/adapter__adapter.d.mts +2 -0
- package/dist/adapter__adapter.mjs +2 -0
- package/dist/adapter__column-types.d.mts +2 -0
- package/dist/adapter__column-types.mjs +2 -0
- package/dist/adapter__control.d.mts +5 -0
- package/dist/adapter__control.mjs +441 -0
- package/dist/adapter__control.mjs.map +1 -0
- package/dist/adapter__operation-types.d.mts +2 -0
- package/dist/adapter__operation-types.mjs +1 -0
- package/dist/adapter__runtime.d.mts +2 -0
- package/dist/adapter__runtime.mjs +38 -0
- package/dist/adapter__runtime.mjs.map +1 -0
- package/dist/adapter__types.d.mts +4 -0
- package/dist/adapter__types.mjs +1 -0
- package/dist/authoring-03FwIL2k-kPjZAp3s.mjs +757 -0
- package/dist/authoring-03FwIL2k-kPjZAp3s.mjs.map +1 -0
- package/dist/canonicalize-CQlxSR4D-MnrT5gtW.d.mts +34 -0
- package/dist/canonicalize-CQlxSR4D-MnrT5gtW.d.mts.map +1 -0
- package/dist/canonicalize-CrN3u_xM-D4MrOqcB.mjs +59 -0
- package/dist/canonicalize-CrN3u_xM-D4MrOqcB.mjs.map +1 -0
- package/dist/codec-descriptor-Bec_zukr-BfvtUqhm.d.mts +37 -0
- package/dist/codec-descriptor-Bec_zukr-BfvtUqhm.d.mts.map +1 -0
- package/dist/codec-descriptor-Bg-_412t.d.mts +1 -0
- package/dist/codec-descriptor-CB6x0xEu-C-Zn2IEz.mjs +135 -0
- package/dist/codec-descriptor-CB6x0xEu-C-Zn2IEz.mjs.map +1 -0
- package/dist/codec-ids-CsOU3xDv-mPI0INiF.d.mts +33 -0
- package/dist/codec-ids-CsOU3xDv-mPI0INiF.d.mts.map +1 -0
- package/dist/codec-ids-fgafMLR7.d.mts +1 -0
- package/dist/codec-ids-tX7Svtz--BuOfRaVU.mjs +33 -0
- package/dist/codec-ids-tX7Svtz--BuOfRaVU.mjs.map +1 -0
- package/dist/codec-types-BHwY9Ff-.d.mts +2 -0
- package/dist/codec-types-mWhnDEAf-CAQzGFnF.d.mts +82 -0
- package/dist/codec-types-mWhnDEAf-CAQzGFnF.d.mts.map +1 -0
- package/dist/codecs-CBl0nD44-CaWPc1bd.mjs +1486 -0
- package/dist/codecs-CBl0nD44-CaWPc1bd.mjs.map +1 -0
- package/dist/codecs-CHIVTNZs.mjs +15 -0
- package/dist/codecs-CHIVTNZs.mjs.map +1 -0
- package/dist/codecs-Cvqvb9pV-Cdc51FKY.d.mts +589 -0
- package/dist/codecs-Cvqvb9pV-Cdc51FKY.d.mts.map +1 -0
- package/dist/codecs-DBn-uIv-.d.mts +15 -0
- package/dist/codecs-DBn-uIv-.d.mts.map +1 -0
- package/dist/column-types-BH-MU6uU.d.mts +108 -0
- package/dist/column-types-BH-MU6uU.d.mts.map +1 -0
- package/dist/column-types-CwAyCgp2.mjs +126 -0
- package/dist/column-types-CwAyCgp2.mjs.map +1 -0
- package/dist/contract-free-BZUS18FU.mjs +118 -0
- package/dist/contract-free-BZUS18FU.mjs.map +1 -0
- package/dist/contract-free-DzpGxLfb.d.mts +258 -0
- package/dist/contract-free-DzpGxLfb.d.mts.map +1 -0
- package/dist/control-2F195jJk.d.mts +11 -0
- package/dist/control-2F195jJk.d.mts.map +1 -0
- package/dist/control-6WFTtLAM.mjs +60 -0
- package/dist/control-6WFTtLAM.mjs.map +1 -0
- package/dist/control-B-FTbEnE.d.mts +22 -0
- package/dist/control-B-FTbEnE.d.mts.map +1 -0
- package/dist/control-D85zv_aY.d.mts +199 -0
- package/dist/control-D85zv_aY.d.mts.map +1 -0
- package/dist/control-DRMWptiJ.mjs +1355 -0
- package/dist/control-DRMWptiJ.mjs.map +1 -0
- package/dist/control-adapter-B9t0g7Pf-HrCxlM65.mjs +1901 -0
- package/dist/control-adapter-B9t0g7Pf-HrCxlM65.mjs.map +1 -0
- package/dist/control-policy-Cl3RRSPg-CT3QGpR3.mjs +1257 -0
- package/dist/control-policy-Cl3RRSPg-CT3QGpR3.mjs.map +1 -0
- package/dist/data-transform-BSM7TQpE.d.mts +1 -0
- package/dist/data-transform-ChZzy2dP-CxVCat_8.mjs +53 -0
- package/dist/data-transform-ChZzy2dP-CxVCat_8.mjs.map +1 -0
- package/dist/data-transform-Ck5FbyNO-BNE7QlAo.d.mts +38 -0
- package/dist/data-transform-Ck5FbyNO-BNE7QlAo.d.mts.map +1 -0
- package/dist/ddl-B4Rh8ntj.d.mts +1 -0
- package/dist/ddl-BdP4q3KY-Duef4uHw.mjs +395 -0
- package/dist/ddl-BdP4q3KY-Duef4uHw.mjs.map +1 -0
- package/dist/default-normalizer-B36TOul4.d.mts +31 -0
- package/dist/default-normalizer-B36TOul4.d.mts.map +1 -0
- package/dist/default-normalizer-Ba5ZebHM-isV86rjy.mjs +253 -0
- package/dist/default-normalizer-Ba5ZebHM-isV86rjy.mjs.map +1 -0
- package/dist/descriptor-meta-2IlVC6_d-DnV00Qd_.mjs +351 -0
- package/dist/descriptor-meta-2IlVC6_d-DnV00Qd_.mjs.map +1 -0
- package/dist/descriptor-meta-DnHabAS3-C53XXPQw.mjs +28 -0
- package/dist/descriptor-meta-DnHabAS3-C53XXPQw.mjs.map +1 -0
- package/dist/descriptor-meta-runtime-UwYdV8fD-B_m_Ha8r.mjs +13 -0
- package/dist/descriptor-meta-runtime-UwYdV8fD-B_m_Ha8r.mjs.map +1 -0
- package/dist/diff-database-schema-BfRs2vrG-D2o4KII0.mjs +390 -0
- package/dist/diff-database-schema-BfRs2vrG-D2o4KII0.mjs.map +1 -0
- package/dist/diff-database-schema-DsoNznGC.d.mts +38 -0
- package/dist/diff-database-schema-DsoNznGC.d.mts.map +1 -0
- package/dist/driver.d.mts +3 -0
- package/dist/driver.mjs +2 -0
- package/dist/driver__control.d.mts +2 -0
- package/dist/driver__control.mjs +2 -0
- package/dist/driver__runtime.d.mts +2 -0
- package/dist/driver__runtime.mjs +597 -0
- package/dist/driver__runtime.mjs.map +1 -0
- package/dist/errors-DCcVX4j1.d.mts +32 -0
- package/dist/errors-DCcVX4j1.d.mts.map +1 -0
- package/dist/errors-kYxOQjdD-D4T3rbVp.mjs +39 -0
- package/dist/errors-kYxOQjdD-D4T3rbVp.mjs.map +1 -0
- package/dist/issue-planner-jkY6p-Ca.d.mts +105 -0
- package/dist/issue-planner-jkY6p-Ca.d.mts.map +1 -0
- package/dist/migration-CBSAPE8S.d.mts +25 -0
- package/dist/migration-CBSAPE8S.d.mts.map +1 -0
- package/dist/migration-PTHAY9Cv.mjs +21 -0
- package/dist/migration-PTHAY9Cv.mjs.map +1 -0
- package/dist/namespace-ids-xtp_ZY86-Cpp8PTxD.mjs +7 -0
- package/dist/namespace-ids-xtp_ZY86-Cpp8PTxD.mjs.map +1 -0
- package/dist/native-type-normalizer-DqJlOTeX.d.mts +19 -0
- package/dist/native-type-normalizer-DqJlOTeX.d.mts.map +1 -0
- package/dist/native-type-normalizer-yvd3tqv-.mjs +38 -0
- package/dist/native-type-normalizer-yvd3tqv-.mjs.map +1 -0
- package/dist/nodes-BU-V-aZA-RqwPH68u.d.mts +235 -0
- package/dist/nodes-BU-V-aZA-RqwPH68u.d.mts.map +1 -0
- package/dist/nodes-DAvDJLvJ-BBdvFXNa.mjs +255 -0
- package/dist/nodes-DAvDJLvJ-BBdvFXNa.mjs.map +1 -0
- package/dist/normalize-error-CNjgVO71-CLlZ3CuJ.mjs +121 -0
- package/dist/normalize-error-CNjgVO71-CLlZ3CuJ.mjs.map +1 -0
- package/dist/op-factory-call-DifL68KT-Bo6pxs-R.mjs +2009 -0
- package/dist/op-factory-call-DifL68KT-Bo6pxs-R.mjs.map +1 -0
- package/dist/op-factory-call-FEA5mnWH.d.mts +1 -0
- package/dist/op-factory-call-jd4cgfjA-CyNT4YVn.d.mts +521 -0
- package/dist/op-factory-call-jd4cgfjA-CyNT4YVn.d.mts.map +1 -0
- package/dist/operation-types-BfRocNI8.d.mts +22 -0
- package/dist/operation-types-BfRocNI8.d.mts.map +1 -0
- package/dist/pack-DFM4tmob.d.mts +610 -0
- package/dist/pack-DFM4tmob.d.mts.map +1 -0
- package/dist/planner-Bmje9ii8-B99fEsNM.mjs +588 -0
- package/dist/planner-Bmje9ii8-B99fEsNM.mjs.map +1 -0
- package/dist/planner-DL4Bh5Nk.d.mts +163 -0
- package/dist/planner-DL4Bh5Nk.d.mts.map +1 -0
- package/dist/planner-ddl-builders-CbfICQfm-CxYiLrhX.mjs +102 -0
- package/dist/planner-ddl-builders-CbfICQfm-CxYiLrhX.mjs.map +1 -0
- package/dist/planner-ddl-builders-ijp60-JO.d.mts +19 -0
- package/dist/planner-ddl-builders-ijp60-JO.d.mts.map +1 -0
- package/dist/planner-identity-values-BmHn5C6U-BYBbUAyR.mjs +90 -0
- package/dist/planner-identity-values-BmHn5C6U-BYBbUAyR.mjs.map +1 -0
- package/dist/planner-identity-values-TfEhnoWa.d.mts +25 -0
- package/dist/planner-identity-values-TfEhnoWa.d.mts.map +1 -0
- package/dist/planner-produced-postgres-migration-B0PQLLUb-qsS6cQqX.d.mts +25 -0
- package/dist/planner-produced-postgres-migration-B0PQLLUb-qsS6cQqX.d.mts.map +1 -0
- package/dist/planner-produced-postgres-migration-C3GPZWeC.d.mts +1 -0
- package/dist/planner-produced-postgres-migration-Cicg2sXg-Ck9iDxGI.mjs +47 -0
- package/dist/planner-produced-postgres-migration-Cicg2sXg-Ck9iDxGI.mjs.map +1 -0
- package/dist/planner-schema-lookup-C4DHAddq.d.mts +21 -0
- package/dist/planner-schema-lookup-C4DHAddq.d.mts.map +1 -0
- package/dist/planner-schema-lookup-kMIVP2y--CdO4VlnF.mjs +57 -0
- package/dist/planner-schema-lookup-kMIVP2y--CdO4VlnF.mjs.map +1 -0
- package/dist/planner-sql-checks-CFgbRTJw.d.mts +20 -0
- package/dist/planner-sql-checks-CFgbRTJw.d.mts.map +1 -0
- package/dist/planner-sql-checks-DRc_78n8-C9nHOrvU.mjs +152 -0
- package/dist/planner-sql-checks-DRc_78n8-C9nHOrvU.mjs.map +1 -0
- package/dist/planner-target-details-HkP4RrRO-_xPQVPF0.d.mts +12 -0
- package/dist/planner-target-details-HkP4RrRO-_xPQVPF0.d.mts.map +1 -0
- package/dist/planner-type-resolution-Bt2f_q-F-C4T6YTae.mjs +15 -0
- package/dist/planner-type-resolution-Bt2f_q-F-C4T6YTae.mjs.map +1 -0
- package/dist/postgres-contract-view-2OP5JnXl-D2fpy4-8.d.mts +36 -0
- package/dist/postgres-contract-view-2OP5JnXl-D2fpy4-8.d.mts.map +1 -0
- package/dist/postgres-contract-view-FdLX7dV9-Cat1VKV9.mjs +144 -0
- package/dist/postgres-contract-view-FdLX7dV9-Cat1VKV9.mjs.map +1 -0
- package/dist/postgres-database-schema-node-CyfpHXDr-BqyozkQE.d.mts +285 -0
- package/dist/postgres-database-schema-node-CyfpHXDr-BqyozkQE.d.mts.map +1 -0
- package/dist/postgres-migration-CDJj7CvD-Bsqs_fVo.d.mts +260 -0
- package/dist/postgres-migration-CDJj7CvD-Bsqs_fVo.d.mts.map +1 -0
- package/dist/postgres-migration-CJshdIZn-DYYjgdD0.mjs +201 -0
- package/dist/postgres-migration-CJshdIZn-DYYjgdD0.mjs.map +1 -0
- package/dist/postgres-native-enum-CdP3b_-R-Cgz9KEKx.mjs +45 -0
- package/dist/postgres-native-enum-CdP3b_-R-Cgz9KEKx.mjs.map +1 -0
- package/dist/postgres-rls-policy-CnDxf3z9-C3LIHAIG.d.mts +61 -0
- package/dist/postgres-rls-policy-CnDxf3z9-C3LIHAIG.d.mts.map +1 -0
- package/dist/postgres-role-schema-node-B8Z5i5D--PObwlU2Z.mjs +204 -0
- package/dist/postgres-role-schema-node-B8Z5i5D--PObwlU2Z.mjs.map +1 -0
- package/dist/postgres-schema-KSzLDONj-CsXGoY8b.mjs +421 -0
- package/dist/postgres-schema-KSzLDONj-CsXGoY8b.mjs.map +1 -0
- package/dist/postgres-schema-Xsjt3RKO-Buv2X8ai.d.mts +269 -0
- package/dist/postgres-schema-Xsjt3RKO-Buv2X8ai.d.mts.map +1 -0
- package/dist/postgres-table-schema-node-BBkitBQh-DT1T5VWU.mjs +212 -0
- package/dist/postgres-table-schema-node-BBkitBQh-DT1T5VWU.mjs.map +1 -0
- package/dist/render-ops-DPwhZt2W.d.mts +11 -0
- package/dist/render-ops-DPwhZt2W.d.mts.map +1 -0
- package/dist/render-ops-DxzTxSsv-Bz85uUHk.mjs +34 -0
- package/dist/render-ops-DxzTxSsv-Bz85uUHk.mjs.map +1 -0
- package/dist/render-typescript-6sCFvMBh.d.mts +21 -0
- package/dist/render-typescript-6sCFvMBh.d.mts.map +1 -0
- package/dist/render-typescript-Cw3lFO28-Cx0lXWmv.mjs +117 -0
- package/dist/render-typescript-Cw3lFO28-Cx0lXWmv.mjs.map +1 -0
- package/dist/resolve-ddl-schema-CxqlLW47-0GiHRziS.mjs +22 -0
- package/dist/resolve-ddl-schema-CxqlLW47-0GiHRziS.mjs.map +1 -0
- package/dist/runtime-BbSRVwdd.d.mts +12 -0
- package/dist/runtime-BbSRVwdd.d.mts.map +1 -0
- package/dist/runtime-CDewySU9.d.mts +55 -0
- package/dist/runtime-CDewySU9.d.mts.map +1 -0
- package/dist/runtime-_TfO66h5.d.mts +32 -0
- package/dist/runtime-_TfO66h5.d.mts.map +1 -0
- package/dist/schema-ir-annotations-DuuYh0gl.d.mts +15 -0
- package/dist/schema-ir-annotations-DuuYh0gl.d.mts.map +1 -0
- package/dist/schema-node-kinds-qlnURWJy-Bo30pwTM.d.mts +30 -0
- package/dist/schema-node-kinds-qlnURWJy-Bo30pwTM.d.mts.map +1 -0
- package/dist/sql-utils-BnBlQxyh-DaX9Nb7Z.mjs +90 -0
- package/dist/sql-utils-BnBlQxyh-DaX9Nb7Z.mjs.map +1 -0
- package/dist/sql-utils-DW6fkczF.d.mts +62 -0
- package/dist/sql-utils-DW6fkczF.d.mts.map +1 -0
- package/dist/table-source-ikHOZmhD-DriY1Lcr.d.mts +15 -0
- package/dist/table-source-ikHOZmhD-DriY1Lcr.d.mts.map +1 -0
- package/dist/target.d.mts +47 -0
- package/dist/target.mjs +34 -0
- package/dist/target__codec-descriptor.d.mts +3 -0
- package/dist/target__codec-descriptor.mjs +2 -0
- package/dist/target__codec-ids.d.mts +3 -0
- package/dist/target__codec-ids.mjs +2 -0
- package/dist/target__codec-types.d.mts +4 -0
- package/dist/target__codec-types.mjs +1 -0
- package/dist/target__codecs.d.mts +3 -0
- package/dist/target__codecs.mjs +3 -0
- package/dist/target__contract-free.d.mts +3 -0
- package/dist/target__contract-free.mjs +4 -0
- package/dist/target__control.d.mts +2 -0
- package/dist/target__control.mjs +2 -0
- package/dist/target__data-transform.d.mts +3 -0
- package/dist/target__data-transform.mjs +2 -0
- package/dist/target__ddl.d.mts +4 -0
- package/dist/target__ddl.mjs +2 -0
- package/dist/target__default-normalizer.d.mts +2 -0
- package/dist/target__default-normalizer.mjs +2 -0
- package/dist/target__diff-database-schema.d.mts +2 -0
- package/dist/target__diff-database-schema.mjs +2 -0
- package/dist/target__errors.d.mts +2 -0
- package/dist/target__errors.mjs +2 -0
- package/dist/target__issue-planner.d.mts +2 -0
- package/dist/target__issue-planner.mjs +2 -0
- package/dist/target__migration.d.mts +4 -0
- package/dist/target__migration.mjs +5 -0
- package/dist/target__native-type-normalizer.d.mts +2 -0
- package/dist/target__native-type-normalizer.mjs +2 -0
- package/dist/target__op-factory-call.d.mts +3 -0
- package/dist/target__op-factory-call.mjs +2 -0
- package/dist/target__pack.d.mts +2 -0
- package/dist/target__pack.mjs +2 -0
- package/dist/target__planner-ddl-builders.d.mts +2 -0
- package/dist/target__planner-ddl-builders.mjs +2 -0
- package/dist/target__planner-identity-values.d.mts +2 -0
- package/dist/target__planner-identity-values.mjs +2 -0
- package/dist/target__planner-produced-postgres-migration.d.mts +3 -0
- package/dist/target__planner-produced-postgres-migration.mjs +2 -0
- package/dist/target__planner-schema-lookup.d.mts +2 -0
- package/dist/target__planner-schema-lookup.mjs +2 -0
- package/dist/target__planner-sql-checks.d.mts +2 -0
- package/dist/target__planner-sql-checks.mjs +2 -0
- package/dist/target__planner-target-details.d.mts +2 -0
- package/dist/target__planner-target-details.mjs +1 -0
- package/dist/target__planner.d.mts +2 -0
- package/dist/target__planner.mjs +3 -0
- package/dist/target__render-ops.d.mts +2 -0
- package/dist/target__render-ops.mjs +2 -0
- package/dist/target__render-typescript.d.mts +2 -0
- package/dist/target__render-typescript.mjs +2 -0
- package/dist/target__rls-canonicalize.d.mts +2 -0
- package/dist/target__rls-canonicalize.mjs +2 -0
- package/dist/target__runtime.d.mts +3 -0
- package/dist/target__runtime.mjs +23 -0
- package/dist/target__runtime.mjs.map +1 -0
- package/dist/target__schema-ir-annotations.d.mts +2 -0
- package/dist/target__schema-ir-annotations.mjs +2 -0
- package/dist/target__sql-utils.d.mts +2 -0
- package/dist/target__sql-utils.mjs +2 -0
- package/dist/target__types.d.mts +7 -0
- package/dist/target__types.mjs +5 -0
- package/dist/types-CkryN1AS-6MNZLjLY.d.mts +27 -0
- package/dist/types-CkryN1AS-6MNZLjLY.d.mts.map +1 -0
- package/dist/types-Cp_Jf2tk.d.mts +1 -0
- package/dist/types-ue6jkJyF-BQJzjx1P.d.mts +10 -0
- package/dist/types-ue6jkJyF-BQJzjx1P.d.mts.map +1 -0
- package/dist/types-xa86TkcV.d.mts +32 -0
- package/dist/types-xa86TkcV.d.mts.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import { b as PG_TEXT_CODEC_ID } from "./codec-ids-tX7Svtz--BuOfRaVU.mjs";
|
|
2
|
+
import { t as PostgresNativeEnum } from "./postgres-native-enum-CdP3b_-R-Cgz9KEKx.mjs";
|
|
3
|
+
import { t as escapeLiteral } from "./sql-utils-BnBlQxyh-DaX9Nb7Z.mjs";
|
|
4
|
+
import { TableSource } from "@prisma/orm-family-sql/relational-core/ast";
|
|
5
|
+
import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
6
|
+
import { UNBOUND_NAMESPACE_ID, freezeNode, hydrateNamespaceEntities } from "@prisma/orm-framework/components/ir";
|
|
7
|
+
import { SqlNamespaceBase, SqlNode } from "@prisma/orm-family-sql/contract/types";
|
|
8
|
+
import { type } from "arktype";
|
|
9
|
+
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
10
|
+
import { nameOf, parseNaming } from "@prisma/orm-family-sql/schema-ir/naming";
|
|
11
|
+
import { invariant } from "@prisma/orm-framework/utils/assertions";
|
|
12
|
+
import { composeSqlEntityKinds } from "@prisma/orm-family-sql/contract/entity-kinds";
|
|
13
|
+
import { cfExpr } from "@prisma/orm-family-sql/relational-core/contract-free";
|
|
14
|
+
//#region ../../../3-targets/3-targets/postgres/dist/postgres-schema-KSzLDONj.mjs
|
|
15
|
+
/**
|
|
16
|
+
* Postgres contract-IR marker for `@@rls` on a model: the table named here is
|
|
17
|
+
* RLS-controlled (`ENABLE ROW LEVEL SECURITY` is driven by this marker, never
|
|
18
|
+
* by the policy set).
|
|
19
|
+
*
|
|
20
|
+
* This is an authored, serialized Contract-IR entity — it is registered as an
|
|
21
|
+
* entity kind, extends `SqlNode`, and is stored in `contract.json` under
|
|
22
|
+
* `entries.rls[tableName]`. Target-only concept — no SQL-family abstract.
|
|
23
|
+
* Frozen at construction via `freezeNode(this)`. The `kind: 'rls'`
|
|
24
|
+
* discriminant is enumerable so it survives JSON serialization; the literal
|
|
25
|
+
* matches the entries key (one-string rule).
|
|
26
|
+
*/
|
|
27
|
+
var PostgresRlsEnablement = class extends SqlNode {
|
|
28
|
+
kind = "rls";
|
|
29
|
+
tableName;
|
|
30
|
+
namespaceId;
|
|
31
|
+
constructor(input) {
|
|
32
|
+
super();
|
|
33
|
+
this.tableName = input.tableName;
|
|
34
|
+
this.namespaceId = input.namespaceId;
|
|
35
|
+
freezeNode(this);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Postgres contract-IR class for a row-level security policy (`CREATE POLICY … ON …`).
|
|
40
|
+
*
|
|
41
|
+
* This is an authored, serialized Contract-IR entity — it is registered as an entity
|
|
42
|
+
* kind, extends `SqlNode`, and is stored in `contract.json`. It is NOT a DiffableNode;
|
|
43
|
+
* the schema-diff tree uses `PostgresPolicySchemaNode` for that role.
|
|
44
|
+
*
|
|
45
|
+
* Target-only concept — no SQL-family abstract. Extends `SqlNode` directly.
|
|
46
|
+
* Frozen at construction via `freezeNode(this)`. The `kind: 'policy'`
|
|
47
|
+
* discriminant is enumerable (overrides SqlNode's non-enumerable `'sql'`) so it
|
|
48
|
+
* survives JSON serialization and enables dispatch. The literal matches the
|
|
49
|
+
* entries key (one-string rule: node.kind === entries key === entity kind).
|
|
50
|
+
*/
|
|
51
|
+
var PostgresRlsPolicy = class extends SqlNode {
|
|
52
|
+
kind = "policy";
|
|
53
|
+
name;
|
|
54
|
+
tableName;
|
|
55
|
+
namespaceId;
|
|
56
|
+
operation;
|
|
57
|
+
roles;
|
|
58
|
+
permissive;
|
|
59
|
+
constructor(input) {
|
|
60
|
+
super();
|
|
61
|
+
this.name = nameOf(input.naming);
|
|
62
|
+
if (input.naming.kind === "wire") this.prefix = input.naming.prefix;
|
|
63
|
+
this.tableName = input.tableName;
|
|
64
|
+
this.namespaceId = input.namespaceId;
|
|
65
|
+
this.operation = input.operation;
|
|
66
|
+
this.roles = Object.freeze([...input.roles]);
|
|
67
|
+
if (input.using !== void 0) this.using = input.using;
|
|
68
|
+
if (input.withCheck !== void 0) this.withCheck = input.withCheck;
|
|
69
|
+
this.permissive = input.permissive;
|
|
70
|
+
freezeNode(this);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Postgres contract-IR class for a database role (`CREATE ROLE …`).
|
|
75
|
+
*
|
|
76
|
+
* This is an authored, serialized Contract-IR entity — it is registered as an entity
|
|
77
|
+
* kind, extends `SqlNode`, and is stored in `contract.json`. It is NOT a DiffableNode;
|
|
78
|
+
* the schema-diff tree uses `PostgresRoleSchemaNode` for that role.
|
|
79
|
+
*
|
|
80
|
+
* Roles are cluster-scoped, so their namespace coordinate is always
|
|
81
|
+
* `UNBOUND_NAMESPACE_ID`. Target-only concept — no SQL-family abstract.
|
|
82
|
+
* Extends `SqlNode` directly, frozen at construction via `freezeNode(this)`.
|
|
83
|
+
* The `kind: 'role'` discriminant is enumerable so it survives JSON.
|
|
84
|
+
* Matches the entries key (one-string rule).
|
|
85
|
+
*
|
|
86
|
+
* `control` always carries a value (never omitted): it defaults to
|
|
87
|
+
* {@link ROLE_DEFAULT_CONTROL_POLICY} in the constructor, so both a
|
|
88
|
+
* freshly-authored role and one hydrated from an older `contract.json`
|
|
89
|
+
* lacking the field resolve the same way — the control-policy resolver
|
|
90
|
+
* reads it directly off the entity instead of special-casing role issues.
|
|
91
|
+
*/
|
|
92
|
+
var PostgresRole = class extends SqlNode {
|
|
93
|
+
kind = "role";
|
|
94
|
+
name;
|
|
95
|
+
namespaceId;
|
|
96
|
+
control;
|
|
97
|
+
constructor(input) {
|
|
98
|
+
super();
|
|
99
|
+
this.name = input.name;
|
|
100
|
+
this.namespaceId = input.namespaceId;
|
|
101
|
+
this.control = input.control ?? "external";
|
|
102
|
+
freezeNode(this);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const PostgresRoleSchema = type({
|
|
106
|
+
kind: "'role'",
|
|
107
|
+
name: "string",
|
|
108
|
+
namespaceId: "string",
|
|
109
|
+
"control?": "'external'"
|
|
110
|
+
});
|
|
111
|
+
const PostgresRlsPolicySchema = type({
|
|
112
|
+
kind: "'policy'",
|
|
113
|
+
name: "string",
|
|
114
|
+
"prefix?": "string",
|
|
115
|
+
tableName: "string",
|
|
116
|
+
namespaceId: "string",
|
|
117
|
+
operation: "'select' | 'insert' | 'update' | 'delete' | 'all'",
|
|
118
|
+
roles: type.string.array().readonly(),
|
|
119
|
+
"using?": "string",
|
|
120
|
+
"withCheck?": "string",
|
|
121
|
+
permissive: "boolean"
|
|
122
|
+
});
|
|
123
|
+
const PostgresRlsEnablementSchema = type({
|
|
124
|
+
kind: "'rls'",
|
|
125
|
+
tableName: "string",
|
|
126
|
+
namespaceId: "string"
|
|
127
|
+
});
|
|
128
|
+
const PostgresNativeEnumSchema = type({
|
|
129
|
+
kind: "'postgres-enum'",
|
|
130
|
+
typeName: "string",
|
|
131
|
+
members: type.string.array().readonly(),
|
|
132
|
+
"control?": "'managed' | 'tolerated' | 'external' | 'observed'"
|
|
133
|
+
});
|
|
134
|
+
var PostgresTableSource = class extends TableSource {
|
|
135
|
+
schema;
|
|
136
|
+
constructor(options) {
|
|
137
|
+
super(options.name, options.alias);
|
|
138
|
+
this.schema = options.schema;
|
|
139
|
+
this.freeze();
|
|
140
|
+
}
|
|
141
|
+
rewrite(rewriter) {
|
|
142
|
+
return rewriter.tableSource ? rewriter.tableSource(this) : this;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Hydrates one stored policy into constructor input. The name and the prefix
|
|
147
|
+
* are separate fields in the file and can disagree there, so the pair is
|
|
148
|
+
* checked on the way in.
|
|
149
|
+
*/
|
|
150
|
+
function policyInputFromSerialized(flat) {
|
|
151
|
+
return {
|
|
152
|
+
naming: parseNaming(flat.name, flat.prefix),
|
|
153
|
+
tableName: flat.tableName,
|
|
154
|
+
namespaceId: flat.namespaceId,
|
|
155
|
+
operation: flat.operation,
|
|
156
|
+
roles: flat.roles,
|
|
157
|
+
using: flat.using,
|
|
158
|
+
withCheck: flat.withCheck,
|
|
159
|
+
permissive: flat.permissive
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const policyEntityKind = {
|
|
163
|
+
kind: "policy",
|
|
164
|
+
schema: PostgresRlsPolicySchema,
|
|
165
|
+
construct: (input) => new PostgresRlsPolicy(policyInputFromSerialized(input))
|
|
166
|
+
};
|
|
167
|
+
const roleEntityKind = {
|
|
168
|
+
kind: "role",
|
|
169
|
+
schema: PostgresRoleSchema,
|
|
170
|
+
construct: (input) => new PostgresRole(input)
|
|
171
|
+
};
|
|
172
|
+
const rlsEnablementEntityKind = {
|
|
173
|
+
kind: "rls",
|
|
174
|
+
schema: PostgresRlsEnablementSchema,
|
|
175
|
+
construct: (input) => new PostgresRlsEnablement(input)
|
|
176
|
+
};
|
|
177
|
+
const nativeEnumEntityKind = {
|
|
178
|
+
kind: "native_enum",
|
|
179
|
+
schema: PostgresNativeEnumSchema,
|
|
180
|
+
construct: (input) => new PostgresNativeEnum(input)
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Postgres target `Namespace` concretion — a Postgres schema (`CREATE
|
|
184
|
+
* SCHEMA …`). Each Postgres `SqlStorage` carries a
|
|
185
|
+
* `namespaces: Record<NamespaceId, PostgresSchema>` map populated by
|
|
186
|
+
* the Postgres PSL interpreter from `namespace { … }` AST buckets.
|
|
187
|
+
*
|
|
188
|
+
* `entries` holds entity-kind maps (`table`, `valueSet`). Qualifier
|
|
189
|
+
* emission is the rendering seam: DDL / SQL emission asks the namespace
|
|
190
|
+
* for its qualifier (`"<schema>"`) or for a qualified table name
|
|
191
|
+
* (`"<schema>"."<table>"`) and consumes the result polymorphically.
|
|
192
|
+
* The unbound singleton below overrides these methods to elide the
|
|
193
|
+
* prefix entirely — call sites stay polymorphic and never branch on
|
|
194
|
+
* `id === UNBOUND_NAMESPACE_ID`.
|
|
195
|
+
*/
|
|
196
|
+
var PostgresSchema = class extends SqlNamespaceBase {
|
|
197
|
+
/**
|
|
198
|
+
* Stable singleton reference for the late-bound slot. Materialised
|
|
199
|
+
* lazily below the singleton subclass declaration so the static
|
|
200
|
+
* initialiser sees the subclass before assigning. Consumers always
|
|
201
|
+
* reach for `PostgresSchema.unbound` (or `PostgresUnboundSchema.instance`
|
|
202
|
+
* — same identity).
|
|
203
|
+
*/
|
|
204
|
+
static unbound;
|
|
205
|
+
id;
|
|
206
|
+
entries;
|
|
207
|
+
constructor(input) {
|
|
208
|
+
super();
|
|
209
|
+
this.id = input.id;
|
|
210
|
+
const dispatched = hydrateNamespaceEntities(input.entries, composeSqlEntityKinds([
|
|
211
|
+
policyEntityKind,
|
|
212
|
+
roleEntityKind,
|
|
213
|
+
rlsEnablementEntityKind,
|
|
214
|
+
nativeEnumEntityKind
|
|
215
|
+
]), "carry");
|
|
216
|
+
const nativeEnumSlot = dispatched["native_enum"];
|
|
217
|
+
if (nativeEnumSlot !== void 0) {
|
|
218
|
+
const rekeyed = {};
|
|
219
|
+
for (const [handle, entity] of Object.entries(nativeEnumSlot)) {
|
|
220
|
+
const physicalName = PostgresNativeEnum.is(entity) ? entity.typeName : handle;
|
|
221
|
+
invariant(!Object.hasOwn(rekeyed, physicalName), `PostgresSchema "${input.id}": two native_enum entities resolve to the same physical type name "${physicalName}". Give them distinct @@map type names.`);
|
|
222
|
+
rekeyed[physicalName] = entity;
|
|
223
|
+
}
|
|
224
|
+
dispatched["native_enum"] = Object.freeze(rekeyed);
|
|
225
|
+
}
|
|
226
|
+
const valueSetRaw = dispatched["valueSet"];
|
|
227
|
+
const entriesInput = { ...valueSetRaw !== void 0 && Object.keys(valueSetRaw).length === 0 ? {
|
|
228
|
+
...dispatched,
|
|
229
|
+
valueSet: void 0
|
|
230
|
+
} : dispatched };
|
|
231
|
+
this.entries = Object.freeze(blindCast(entriesInput));
|
|
232
|
+
Object.defineProperty(this, "kind", {
|
|
233
|
+
value: "schema",
|
|
234
|
+
writable: false,
|
|
235
|
+
enumerable: false,
|
|
236
|
+
configurable: true
|
|
237
|
+
});
|
|
238
|
+
freezeNode(this);
|
|
239
|
+
}
|
|
240
|
+
get table() {
|
|
241
|
+
return this.entries.table ?? Object.freeze({});
|
|
242
|
+
}
|
|
243
|
+
get valueSet() {
|
|
244
|
+
return this.entries.valueSet;
|
|
245
|
+
}
|
|
246
|
+
get policy() {
|
|
247
|
+
return this.entries.policy ?? Object.freeze({});
|
|
248
|
+
}
|
|
249
|
+
get role() {
|
|
250
|
+
return this.entries.role ?? Object.freeze({});
|
|
251
|
+
}
|
|
252
|
+
get rls() {
|
|
253
|
+
return this.entries.rls ?? Object.freeze({});
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* The bare schema qualifier as it would appear in a rendered SQL
|
|
257
|
+
* fragment (already quoted). The unbound-schema singleton overrides
|
|
258
|
+
* this to return `''`.
|
|
259
|
+
*/
|
|
260
|
+
qualifier() {
|
|
261
|
+
return `"${this.id}"`;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Qualify a table name with the schema prefix
|
|
265
|
+
* (`"<schema>"."<table>"`). The unbound-schema singleton overrides
|
|
266
|
+
* this to emit just `"<table>"` so the resolved DDL is unqualified
|
|
267
|
+
* and `search_path` decides where the object lands at runtime.
|
|
268
|
+
*/
|
|
269
|
+
qualifyTable(tableName) {
|
|
270
|
+
return `"${this.id}"."${tableName}"`;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Render a SQL string-literal containing the qualified-name form
|
|
274
|
+
* suitable for `to_regclass(...)` arguments (e.g. `'"public"."user"'`).
|
|
275
|
+
* The unbound singleton overrides this to elide the schema prefix
|
|
276
|
+
* (`'"user"'`) so `search_path` resolves the object at runtime.
|
|
277
|
+
*/
|
|
278
|
+
regclassLiteral(name) {
|
|
279
|
+
return `'${escapeLiteral(this.qualifyTable(name))}'`;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Render a SQL expression that evaluates to this namespace's schema
|
|
283
|
+
* name at runtime, ready to drop into a `WHERE table_schema = …` /
|
|
284
|
+
* `WHERE n.nspname = …` clause. Named schemas emit a quoted SQL
|
|
285
|
+
* literal (`'public'`); the unbound singleton overrides this to emit
|
|
286
|
+
* `current_schema()` so catalog queries match whichever schema the
|
|
287
|
+
* connection's `search_path` resolved at runtime.
|
|
288
|
+
*/
|
|
289
|
+
schemaSqlExpression() {
|
|
290
|
+
return `'${escapeLiteral(this.id)}'`;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Typed-AST counterpart of {@link schemaSqlExpression}: the expression a
|
|
294
|
+
* builder-built catalog check compares `n.nspname` / `table_schema`
|
|
295
|
+
* against. Named schemas bind the schema name as a text parameter; the
|
|
296
|
+
* unbound singleton overrides this to the opaque `current_schema()`
|
|
297
|
+
* expression so the live connection's `search_path` decides at runtime.
|
|
298
|
+
*/
|
|
299
|
+
schemaFilterExpression() {
|
|
300
|
+
return cfExpr.param(this.id, PG_TEXT_CODEC_ID);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Typed-AST counterpart of {@link qualifyTable}: the FROM source a
|
|
304
|
+
* builder-built check uses to address a user table in this namespace.
|
|
305
|
+
* Named schemas qualify (`"schema"."table"`); the unbound singleton
|
|
306
|
+
* overrides this to leave the table unqualified so `search_path`
|
|
307
|
+
* resolves it at runtime.
|
|
308
|
+
*/
|
|
309
|
+
tableSource(tableName, alias) {
|
|
310
|
+
return new PostgresTableSource({
|
|
311
|
+
name: tableName,
|
|
312
|
+
schema: this.id,
|
|
313
|
+
...ifDefined("alias", alias)
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* The bare schema name a DDL planner should target when emitting
|
|
318
|
+
* statements that need to identify this namespace in the live
|
|
319
|
+
* database (e.g. `CREATE TABLE "<ddlSchemaName>"."<table>" …`,
|
|
320
|
+
* catalog filters, planner conflict lookups). Named schemas resolve
|
|
321
|
+
* to their own id. The `PostgresUnboundSchema` singleton inherits
|
|
322
|
+
* this and returns `UNBOUND_NAMESPACE_ID` — callers that dispatch
|
|
323
|
+
* through `qualifyTableName` route through the polymorphic
|
|
324
|
+
* `PostgresUnboundSchema` overrides and produce unqualified
|
|
325
|
+
* (search-path-resolved) output automatically.
|
|
326
|
+
*/
|
|
327
|
+
ddlSchemaName(_storage) {
|
|
328
|
+
return this.id;
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
/**
|
|
332
|
+
* Singleton subclass for the reserved sentinel namespace id
|
|
333
|
+
* (`UNBOUND_NAMESPACE_ID`) — the late-bound Postgres slot whose binding
|
|
334
|
+
* the connection's `search_path` resolves at runtime. Overrides
|
|
335
|
+
* qualifier emission to elide the schema prefix; call sites that consume
|
|
336
|
+
* `qualifier()` / `qualifyTable()` get unqualified output without
|
|
337
|
+
* branching on the namespace id.
|
|
338
|
+
*
|
|
339
|
+
* This is the target-side materialization of "the framework provides
|
|
340
|
+
* affordances; targets implement specifics": the framework names the
|
|
341
|
+
* sentinel; Postgres decides what late-bound means here (the table
|
|
342
|
+
* name, naked — the schema is supplied by the live connection's
|
|
343
|
+
* `search_path`).
|
|
344
|
+
*
|
|
345
|
+
* `ddlSchemaName` is inherited from `PostgresSchema` and returns
|
|
346
|
+
* `UNBOUND_NAMESPACE_ID`. Downstream helpers such as `qualifyTableName`
|
|
347
|
+
* route through the polymorphic factory and produce unqualified output
|
|
348
|
+
* automatically.
|
|
349
|
+
*/
|
|
350
|
+
var PostgresUnboundSchema = class PostgresUnboundSchema extends PostgresSchema {
|
|
351
|
+
static instance = new PostgresUnboundSchema();
|
|
352
|
+
constructor(input) {
|
|
353
|
+
super(input ?? {
|
|
354
|
+
id: UNBOUND_NAMESPACE_ID,
|
|
355
|
+
entries: { table: {} }
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
qualifier() {
|
|
359
|
+
return "";
|
|
360
|
+
}
|
|
361
|
+
qualifyTable(tableName) {
|
|
362
|
+
return `"${tableName}"`;
|
|
363
|
+
}
|
|
364
|
+
schemaSqlExpression() {
|
|
365
|
+
return "current_schema()";
|
|
366
|
+
}
|
|
367
|
+
schemaFilterExpression() {
|
|
368
|
+
return cfExpr.raw("current_schema()", {
|
|
369
|
+
codecId: PG_TEXT_CODEC_ID,
|
|
370
|
+
nullable: false
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
tableSource(tableName, alias) {
|
|
374
|
+
return new PostgresTableSource({
|
|
375
|
+
name: tableName,
|
|
376
|
+
...ifDefined("alias", alias)
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
PostgresSchema.unbound = PostgresUnboundSchema.instance;
|
|
381
|
+
/**
|
|
382
|
+
* Narrow an arbitrary namespace (or `undefined`) to `PostgresSchema`
|
|
383
|
+
* so callers can dispatch to the polymorphic emission methods without
|
|
384
|
+
* branching at the call site. Uses the structural `kind` discriminator
|
|
385
|
+
* (`'schema'`) rather than `instanceof` so the check survives realm /
|
|
386
|
+
* bundle / hot-reload boundaries — matching the rest of the IR's
|
|
387
|
+
* narrowing convention. `PostgresUnboundSchema` passes through because
|
|
388
|
+
* it inherits the same `kind: 'schema'` from `PostgresSchema`.
|
|
389
|
+
*/
|
|
390
|
+
function isPostgresSchema(ns) {
|
|
391
|
+
return ns?.kind === "schema";
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Target-supplied `Namespace` factory the Postgres target plumbs
|
|
395
|
+
* through `defineContract({ createNamespace })` and the SQL PSL
|
|
396
|
+
* interpreter. Returns the unbound singleton for the framework
|
|
397
|
+
* sentinel and a fresh `PostgresSchema` for any other coordinate.
|
|
398
|
+
*
|
|
399
|
+
* The factory has no per-call state — every named id deterministically
|
|
400
|
+
* maps to a distinct schema instance — so callers can pass it through
|
|
401
|
+
* by reference and trust the resulting `SqlStorage.namespaces` map to
|
|
402
|
+
* be value-stable for a given input set. Native-enum column type names are
|
|
403
|
+
* schema-qualified earlier, at column construction, via the target's
|
|
404
|
+
* `authoring.qualifyColumnType` hook (`postgresQualifyColumnType`), so this
|
|
405
|
+
* factory just materialises the namespace from already-qualified entries.
|
|
406
|
+
*/
|
|
407
|
+
function postgresCreateNamespace(input) {
|
|
408
|
+
const schemaInput = {
|
|
409
|
+
id: input.id,
|
|
410
|
+
entries: {
|
|
411
|
+
...input.entries,
|
|
412
|
+
table: input.entries["table"] ?? {}
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
if (input.id === UNBOUND_NAMESPACE_ID) return new PostgresUnboundSchema(schemaInput);
|
|
416
|
+
return new PostgresSchema(schemaInput);
|
|
417
|
+
}
|
|
418
|
+
//#endregion
|
|
419
|
+
export { roleEntityKind as _, PostgresRlsPolicySchema as a, PostgresSchema as c, isPostgresSchema as d, nativeEnumEntityKind as f, rlsEnablementEntityKind as g, postgresCreateNamespace as h, PostgresRlsPolicy as i, PostgresTableSource as l, policyInputFromSerialized as m, PostgresRlsEnablement as n, PostgresRole as o, policyEntityKind as p, PostgresRlsEnablementSchema as r, PostgresRoleSchema as s, PostgresNativeEnumSchema as t, PostgresUnboundSchema as u };
|
|
420
|
+
|
|
421
|
+
//# sourceMappingURL=postgres-schema-KSzLDONj-CsXGoY8b.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-schema-KSzLDONj-CsXGoY8b.mjs","names":[],"sources":["../../../../3-targets/3-targets/postgres/dist/postgres-schema-KSzLDONj.mjs"],"sourcesContent":["import { b as PG_TEXT_CODEC_ID } from \"./codec-ids-tX7Svtz-.mjs\";\nimport { t as PostgresNativeEnum } from \"./postgres-native-enum-CdP3b_-R.mjs\";\nimport { t as escapeLiteral } from \"./sql-utils-BnBlQxyh.mjs\";\nimport { TableSource } from \"@internal/sql-relational-core/ast\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { UNBOUND_NAMESPACE_ID, freezeNode, hydrateNamespaceEntities } from \"@internal/framework-components/ir\";\nimport { type } from \"arktype\";\nimport { SqlNamespaceBase, SqlNode } from \"@internal/sql-contract/types\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { nameOf, parseNaming } from \"@internal/sql-schema-ir/naming\";\nimport { invariant } from \"@internal/utils/assertions\";\nimport { composeSqlEntityKinds } from \"@internal/sql-contract/entity-kinds\";\nimport { cfExpr } from \"@internal/sql-relational-core/contract-free\";\n//#region src/core/postgres-rls-enablement.ts\n/**\n* Postgres contract-IR marker for `@@rls` on a model: the table named here is\n* RLS-controlled (`ENABLE ROW LEVEL SECURITY` is driven by this marker, never\n* by the policy set).\n*\n* This is an authored, serialized Contract-IR entity — it is registered as an\n* entity kind, extends `SqlNode`, and is stored in `contract.json` under\n* `entries.rls[tableName]`. Target-only concept — no SQL-family abstract.\n* Frozen at construction via `freezeNode(this)`. The `kind: 'rls'`\n* discriminant is enumerable so it survives JSON serialization; the literal\n* matches the entries key (one-string rule).\n*/\nvar PostgresRlsEnablement = class extends SqlNode {\n\tkind = \"rls\";\n\ttableName;\n\tnamespaceId;\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis.tableName = input.tableName;\n\t\tthis.namespaceId = input.namespaceId;\n\t\tfreezeNode(this);\n\t}\n};\n//#endregion\n//#region src/core/postgres-rls-policy.ts\n/**\n* Postgres contract-IR class for a row-level security policy (`CREATE POLICY … ON …`).\n*\n* This is an authored, serialized Contract-IR entity — it is registered as an entity\n* kind, extends `SqlNode`, and is stored in `contract.json`. It is NOT a DiffableNode;\n* the schema-diff tree uses `PostgresPolicySchemaNode` for that role.\n*\n* Target-only concept — no SQL-family abstract. Extends `SqlNode` directly.\n* Frozen at construction via `freezeNode(this)`. The `kind: 'policy'`\n* discriminant is enumerable (overrides SqlNode's non-enumerable `'sql'`) so it\n* survives JSON serialization and enables dispatch. The literal matches the\n* entries key (one-string rule: node.kind === entries key === entity kind).\n*/\nvar PostgresRlsPolicy = class extends SqlNode {\n\tkind = \"policy\";\n\tname;\n\ttableName;\n\tnamespaceId;\n\toperation;\n\troles;\n\tpermissive;\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis.name = nameOf(input.naming);\n\t\tif (input.naming.kind === \"wire\") this.prefix = input.naming.prefix;\n\t\tthis.tableName = input.tableName;\n\t\tthis.namespaceId = input.namespaceId;\n\t\tthis.operation = input.operation;\n\t\tthis.roles = Object.freeze([...input.roles]);\n\t\tif (input.using !== void 0) this.using = input.using;\n\t\tif (input.withCheck !== void 0) this.withCheck = input.withCheck;\n\t\tthis.permissive = input.permissive;\n\t\tfreezeNode(this);\n\t}\n};\n//#endregion\n//#region src/core/postgres-role.ts\n/**\n* Roles are referenced by the contract but never owned — the framework\n* issues no `CREATE`/`DROP ROLE`, so a role's effective governance is always\n* `external`: a missing declared role fails verify, an extra live role is\n* tolerated, and the planner emits zero role DDL. `external` is the only\n* value a role's control can ever carry.\n*/\nconst ROLE_DEFAULT_CONTROL_POLICY = \"external\";\n/**\n* Postgres contract-IR class for a database role (`CREATE ROLE …`).\n*\n* This is an authored, serialized Contract-IR entity — it is registered as an entity\n* kind, extends `SqlNode`, and is stored in `contract.json`. It is NOT a DiffableNode;\n* the schema-diff tree uses `PostgresRoleSchemaNode` for that role.\n*\n* Roles are cluster-scoped, so their namespace coordinate is always\n* `UNBOUND_NAMESPACE_ID`. Target-only concept — no SQL-family abstract.\n* Extends `SqlNode` directly, frozen at construction via `freezeNode(this)`.\n* The `kind: 'role'` discriminant is enumerable so it survives JSON.\n* Matches the entries key (one-string rule).\n*\n* `control` always carries a value (never omitted): it defaults to\n* {@link ROLE_DEFAULT_CONTROL_POLICY} in the constructor, so both a\n* freshly-authored role and one hydrated from an older `contract.json`\n* lacking the field resolve the same way — the control-policy resolver\n* reads it directly off the entity instead of special-casing role issues.\n*/\nvar PostgresRole = class extends SqlNode {\n\tkind = \"role\";\n\tname;\n\tnamespaceId;\n\tcontrol;\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis.name = input.name;\n\t\tthis.namespaceId = input.namespaceId;\n\t\tthis.control = input.control ?? \"external\";\n\t\tfreezeNode(this);\n\t}\n};\n//#endregion\n//#region src/core/postgres-validators.ts\nconst PostgresRoleSchema = type({\n\tkind: \"'role'\",\n\tname: \"string\",\n\tnamespaceId: \"string\",\n\t\"control?\": \"'external'\"\n});\nconst PostgresRlsPolicySchema = type({\n\tkind: \"'policy'\",\n\tname: \"string\",\n\t\"prefix?\": \"string\",\n\ttableName: \"string\",\n\tnamespaceId: \"string\",\n\toperation: \"'select' | 'insert' | 'update' | 'delete' | 'all'\",\n\troles: type.string.array().readonly(),\n\t\"using?\": \"string\",\n\t\"withCheck?\": \"string\",\n\tpermissive: \"boolean\"\n});\nconst PostgresRlsEnablementSchema = type({\n\tkind: \"'rls'\",\n\ttableName: \"string\",\n\tnamespaceId: \"string\"\n});\nconst PostgresNativeEnumSchema = type({\n\tkind: \"'postgres-enum'\",\n\ttypeName: \"string\",\n\tmembers: type.string.array().readonly(),\n\t\"control?\": \"'managed' | 'tolerated' | 'external' | 'observed'\"\n});\n//#endregion\n//#region src/core/ast/table-source.ts\nvar PostgresTableSource = class extends TableSource {\n\tschema;\n\tconstructor(options) {\n\t\tsuper(options.name, options.alias);\n\t\tthis.schema = options.schema;\n\t\tthis.freeze();\n\t}\n\trewrite(rewriter) {\n\t\treturn rewriter.tableSource ? rewriter.tableSource(this) : this;\n\t}\n};\n//#endregion\n//#region src/core/serialized-rls-policy.ts\n/**\n* Hydrates one stored policy into constructor input. The name and the prefix\n* are separate fields in the file and can disagree there, so the pair is\n* checked on the way in.\n*/\nfunction policyInputFromSerialized(flat) {\n\treturn {\n\t\tnaming: parseNaming(flat.name, flat.prefix),\n\t\ttableName: flat.tableName,\n\t\tnamespaceId: flat.namespaceId,\n\t\toperation: flat.operation,\n\t\troles: flat.roles,\n\t\tusing: flat.using,\n\t\twithCheck: flat.withCheck,\n\t\tpermissive: flat.permissive\n\t};\n}\n//#endregion\n//#region src/core/entity-kinds.ts\nconst policyEntityKind = {\n\tkind: \"policy\",\n\tschema: PostgresRlsPolicySchema,\n\tconstruct: (input) => new PostgresRlsPolicy(policyInputFromSerialized(input))\n};\nconst roleEntityKind = {\n\tkind: \"role\",\n\tschema: PostgresRoleSchema,\n\tconstruct: (input) => new PostgresRole(input)\n};\nconst rlsEnablementEntityKind = {\n\tkind: \"rls\",\n\tschema: PostgresRlsEnablementSchema,\n\tconstruct: (input) => new PostgresRlsEnablement(input)\n};\nconst nativeEnumEntityKind = {\n\tkind: \"native_enum\",\n\tschema: PostgresNativeEnumSchema,\n\tconstruct: (input) => new PostgresNativeEnum(input)\n};\n//#endregion\n//#region src/core/postgres-schema.ts\n/**\n* Postgres target `Namespace` concretion — a Postgres schema (`CREATE\n* SCHEMA …`). Each Postgres `SqlStorage` carries a\n* `namespaces: Record<NamespaceId, PostgresSchema>` map populated by\n* the Postgres PSL interpreter from `namespace { … }` AST buckets.\n*\n* `entries` holds entity-kind maps (`table`, `valueSet`). Qualifier\n* emission is the rendering seam: DDL / SQL emission asks the namespace\n* for its qualifier (`\"<schema>\"`) or for a qualified table name\n* (`\"<schema>\".\"<table>\"`) and consumes the result polymorphically.\n* The unbound singleton below overrides these methods to elide the\n* prefix entirely — call sites stay polymorphic and never branch on\n* `id === UNBOUND_NAMESPACE_ID`.\n*/\nvar PostgresSchema = class extends SqlNamespaceBase {\n\t/**\n\t* Stable singleton reference for the late-bound slot. Materialised\n\t* lazily below the singleton subclass declaration so the static\n\t* initialiser sees the subclass before assigning. Consumers always\n\t* reach for `PostgresSchema.unbound` (or `PostgresUnboundSchema.instance`\n\t* — same identity).\n\t*/\n\tstatic unbound;\n\tid;\n\tentries;\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis.id = input.id;\n\t\tconst dispatched = hydrateNamespaceEntities(input.entries, composeSqlEntityKinds([\n\t\t\tpolicyEntityKind,\n\t\t\troleEntityKind,\n\t\t\trlsEnablementEntityKind,\n\t\t\tnativeEnumEntityKind\n\t\t]), \"carry\");\n\t\tconst nativeEnumSlot = dispatched[\"native_enum\"];\n\t\tif (nativeEnumSlot !== void 0) {\n\t\t\tconst rekeyed = {};\n\t\t\tfor (const [handle, entity] of Object.entries(nativeEnumSlot)) {\n\t\t\t\tconst physicalName = PostgresNativeEnum.is(entity) ? entity.typeName : handle;\n\t\t\t\tinvariant(!Object.hasOwn(rekeyed, physicalName), `PostgresSchema \"${input.id}\": two native_enum entities resolve to the same physical type name \"${physicalName}\". Give them distinct @@map type names.`);\n\t\t\t\trekeyed[physicalName] = entity;\n\t\t\t}\n\t\t\tdispatched[\"native_enum\"] = Object.freeze(rekeyed);\n\t\t}\n\t\tconst valueSetRaw = dispatched[\"valueSet\"];\n\t\tconst entriesInput = { ...valueSetRaw !== void 0 && Object.keys(valueSetRaw).length === 0 ? {\n\t\t\t...dispatched,\n\t\t\tvalueSet: void 0\n\t\t} : dispatched };\n\t\tthis.entries = Object.freeze(blindCast(entriesInput));\n\t\tObject.defineProperty(this, \"kind\", {\n\t\t\tvalue: \"schema\",\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true\n\t\t});\n\t\tfreezeNode(this);\n\t}\n\tget table() {\n\t\treturn this.entries.table ?? Object.freeze({});\n\t}\n\tget valueSet() {\n\t\treturn this.entries.valueSet;\n\t}\n\tget policy() {\n\t\treturn this.entries.policy ?? Object.freeze({});\n\t}\n\tget role() {\n\t\treturn this.entries.role ?? Object.freeze({});\n\t}\n\tget rls() {\n\t\treturn this.entries.rls ?? Object.freeze({});\n\t}\n\t/**\n\t* The bare schema qualifier as it would appear in a rendered SQL\n\t* fragment (already quoted). The unbound-schema singleton overrides\n\t* this to return `''`.\n\t*/\n\tqualifier() {\n\t\treturn `\"${this.id}\"`;\n\t}\n\t/**\n\t* Qualify a table name with the schema prefix\n\t* (`\"<schema>\".\"<table>\"`). The unbound-schema singleton overrides\n\t* this to emit just `\"<table>\"` so the resolved DDL is unqualified\n\t* and `search_path` decides where the object lands at runtime.\n\t*/\n\tqualifyTable(tableName) {\n\t\treturn `\"${this.id}\".\"${tableName}\"`;\n\t}\n\t/**\n\t* Render a SQL string-literal containing the qualified-name form\n\t* suitable for `to_regclass(...)` arguments (e.g. `'\"public\".\"user\"'`).\n\t* The unbound singleton overrides this to elide the schema prefix\n\t* (`'\"user\"'`) so `search_path` resolves the object at runtime.\n\t*/\n\tregclassLiteral(name) {\n\t\treturn `'${escapeLiteral(this.qualifyTable(name))}'`;\n\t}\n\t/**\n\t* Render a SQL expression that evaluates to this namespace's schema\n\t* name at runtime, ready to drop into a `WHERE table_schema = …` /\n\t* `WHERE n.nspname = …` clause. Named schemas emit a quoted SQL\n\t* literal (`'public'`); the unbound singleton overrides this to emit\n\t* `current_schema()` so catalog queries match whichever schema the\n\t* connection's `search_path` resolved at runtime.\n\t*/\n\tschemaSqlExpression() {\n\t\treturn `'${escapeLiteral(this.id)}'`;\n\t}\n\t/**\n\t* Typed-AST counterpart of {@link schemaSqlExpression}: the expression a\n\t* builder-built catalog check compares `n.nspname` / `table_schema`\n\t* against. Named schemas bind the schema name as a text parameter; the\n\t* unbound singleton overrides this to the opaque `current_schema()`\n\t* expression so the live connection's `search_path` decides at runtime.\n\t*/\n\tschemaFilterExpression() {\n\t\treturn cfExpr.param(this.id, PG_TEXT_CODEC_ID);\n\t}\n\t/**\n\t* Typed-AST counterpart of {@link qualifyTable}: the FROM source a\n\t* builder-built check uses to address a user table in this namespace.\n\t* Named schemas qualify (`\"schema\".\"table\"`); the unbound singleton\n\t* overrides this to leave the table unqualified so `search_path`\n\t* resolves it at runtime.\n\t*/\n\ttableSource(tableName, alias) {\n\t\treturn new PostgresTableSource({\n\t\t\tname: tableName,\n\t\t\tschema: this.id,\n\t\t\t...ifDefined(\"alias\", alias)\n\t\t});\n\t}\n\t/**\n\t* The bare schema name a DDL planner should target when emitting\n\t* statements that need to identify this namespace in the live\n\t* database (e.g. `CREATE TABLE \"<ddlSchemaName>\".\"<table>\" …`,\n\t* catalog filters, planner conflict lookups). Named schemas resolve\n\t* to their own id. The `PostgresUnboundSchema` singleton inherits\n\t* this and returns `UNBOUND_NAMESPACE_ID` — callers that dispatch\n\t* through `qualifyTableName` route through the polymorphic\n\t* `PostgresUnboundSchema` overrides and produce unqualified\n\t* (search-path-resolved) output automatically.\n\t*/\n\tddlSchemaName(_storage) {\n\t\treturn this.id;\n\t}\n};\n/**\n* Singleton subclass for the reserved sentinel namespace id\n* (`UNBOUND_NAMESPACE_ID`) — the late-bound Postgres slot whose binding\n* the connection's `search_path` resolves at runtime. Overrides\n* qualifier emission to elide the schema prefix; call sites that consume\n* `qualifier()` / `qualifyTable()` get unqualified output without\n* branching on the namespace id.\n*\n* This is the target-side materialization of \"the framework provides\n* affordances; targets implement specifics\": the framework names the\n* sentinel; Postgres decides what late-bound means here (the table\n* name, naked — the schema is supplied by the live connection's\n* `search_path`).\n*\n* `ddlSchemaName` is inherited from `PostgresSchema` and returns\n* `UNBOUND_NAMESPACE_ID`. Downstream helpers such as `qualifyTableName`\n* route through the polymorphic factory and produce unqualified output\n* automatically.\n*/\nvar PostgresUnboundSchema = class PostgresUnboundSchema extends PostgresSchema {\n\tstatic instance = new PostgresUnboundSchema();\n\tconstructor(input) {\n\t\tsuper(input ?? {\n\t\t\tid: UNBOUND_NAMESPACE_ID,\n\t\t\tentries: { table: {} }\n\t\t});\n\t}\n\tqualifier() {\n\t\treturn \"\";\n\t}\n\tqualifyTable(tableName) {\n\t\treturn `\"${tableName}\"`;\n\t}\n\tschemaSqlExpression() {\n\t\treturn \"current_schema()\";\n\t}\n\tschemaFilterExpression() {\n\t\treturn cfExpr.raw(\"current_schema()\", {\n\t\t\tcodecId: PG_TEXT_CODEC_ID,\n\t\t\tnullable: false\n\t\t});\n\t}\n\ttableSource(tableName, alias) {\n\t\treturn new PostgresTableSource({\n\t\t\tname: tableName,\n\t\t\t...ifDefined(\"alias\", alias)\n\t\t});\n\t}\n};\nPostgresSchema.unbound = PostgresUnboundSchema.instance;\n/**\n* Narrow an arbitrary namespace (or `undefined`) to `PostgresSchema`\n* so callers can dispatch to the polymorphic emission methods without\n* branching at the call site. Uses the structural `kind` discriminator\n* (`'schema'`) rather than `instanceof` so the check survives realm /\n* bundle / hot-reload boundaries — matching the rest of the IR's\n* narrowing convention. `PostgresUnboundSchema` passes through because\n* it inherits the same `kind: 'schema'` from `PostgresSchema`.\n*/\nfunction isPostgresSchema(ns) {\n\treturn ns?.kind === \"schema\";\n}\n/**\n* Target-supplied `Namespace` factory the Postgres target plumbs\n* through `defineContract({ createNamespace })` and the SQL PSL\n* interpreter. Returns the unbound singleton for the framework\n* sentinel and a fresh `PostgresSchema` for any other coordinate.\n*\n* The factory has no per-call state — every named id deterministically\n* maps to a distinct schema instance — so callers can pass it through\n* by reference and trust the resulting `SqlStorage.namespaces` map to\n* be value-stable for a given input set. Native-enum column type names are\n* schema-qualified earlier, at column construction, via the target's\n* `authoring.qualifyColumnType` hook (`postgresQualifyColumnType`), so this\n* factory just materialises the namespace from already-qualified entries.\n*/\nfunction postgresCreateNamespace(input) {\n\tconst schemaInput = {\n\t\tid: input.id,\n\t\tentries: {\n\t\t\t...input.entries,\n\t\t\ttable: input.entries[\"table\"] ?? {}\n\t\t}\n\t};\n\tif (input.id === UNBOUND_NAMESPACE_ID) return new PostgresUnboundSchema(schemaInput);\n\treturn new PostgresSchema(schemaInput);\n}\n//#endregion\nexport { PostgresRlsPolicy as _, nativeEnumEntityKind as a, roleEntityKind as c, PostgresNativeEnumSchema as d, PostgresRlsEnablementSchema as f, ROLE_DEFAULT_CONTROL_POLICY as g, PostgresRole as h, postgresCreateNamespace as i, policyInputFromSerialized as l, PostgresRoleSchema as m, PostgresUnboundSchema as n, policyEntityKind as o, PostgresRlsPolicySchema as p, isPostgresSchema as r, rlsEnablementEntityKind as s, PostgresSchema as t, PostgresTableSource as u, PostgresRlsEnablement as v };\n\n//# sourceMappingURL=postgres-schema-KSzLDONj.mjs.map"],"mappings":"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"}
|