@prisma/orm-target-postgres 0.17.0-dev.1 → 0.17.0-dev.2

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 (63) hide show
  1. package/dist/{adapter-DhqcO3YO-jzwDVcCv.mjs → adapter-wewzDGJh-DkJnr3kE.mjs} +4 -3
  2. package/dist/adapter-wewzDGJh-DkJnr3kE.mjs.map +1 -0
  3. package/dist/adapter.d.mts +2 -1
  4. package/dist/adapter.mjs +4 -3
  5. package/dist/adapter__adapter.mjs +1 -1
  6. package/dist/adapter__control.mjs +2 -2
  7. package/dist/adapter__control.mjs.map +1 -1
  8. package/dist/adapter__runtime.mjs +4 -4
  9. package/dist/adapter__runtime.mjs.map +1 -1
  10. package/dist/adapter__sql-renderer.d.mts +2 -0
  11. package/dist/adapter__sql-renderer.mjs +2 -0
  12. package/dist/aggregates-CgqNfj2O.d.mts +10 -0
  13. package/dist/aggregates-CgqNfj2O.d.mts.map +1 -0
  14. package/dist/aggregates-ftUgi-eC.mjs +102 -0
  15. package/dist/aggregates-ftUgi-eC.mjs.map +1 -0
  16. package/dist/{codecs-CBl0nD44-CaWPc1bd.mjs → codecs-CBl0nD44-CjInu_aV.mjs} +2 -2
  17. package/dist/{codecs-CBl0nD44-CaWPc1bd.mjs.map → codecs-CBl0nD44-CjInu_aV.mjs.map} +1 -1
  18. package/dist/{codecs-CHIVTNZs.mjs → codecs-rujsdlZR.mjs} +2 -2
  19. package/dist/{codecs-CHIVTNZs.mjs.map → codecs-rujsdlZR.mjs.map} +1 -1
  20. package/dist/{control-DRMWptiJ.mjs → control-BzDnaGim.mjs} +5 -5
  21. package/dist/{control-DRMWptiJ.mjs.map → control-BzDnaGim.mjs.map} +1 -1
  22. package/dist/{control-adapter-B9t0g7Pf-HrCxlM65.mjs → control-adapter-CipVam9p-B-E2SF8_.mjs} +9 -578
  23. package/dist/control-adapter-CipVam9p-B-E2SF8_.mjs.map +1 -0
  24. package/dist/{control-policy-Cl3RRSPg-CT3QGpR3.mjs → control-policy-Cl3RRSPg-BUi6pcI-.mjs} +3 -3
  25. package/dist/{control-policy-Cl3RRSPg-CT3QGpR3.mjs.map → control-policy-Cl3RRSPg-BUi6pcI-.mjs.map} +1 -1
  26. package/dist/{descriptor-meta-2IlVC6_d-DnV00Qd_.mjs → descriptor-meta--MCrvIgj-DFsLFDj1.mjs} +6 -4
  27. package/dist/descriptor-meta--MCrvIgj-DFsLFDj1.mjs.map +1 -0
  28. package/dist/{descriptor-meta-DnHabAS3-C53XXPQw.mjs → descriptor-meta-DnHabAS3-BiTguA3K.mjs} +2 -2
  29. package/dist/{descriptor-meta-DnHabAS3-C53XXPQw.mjs.map → descriptor-meta-DnHabAS3-BiTguA3K.mjs.map} +1 -1
  30. package/dist/{diff-database-schema-BfRs2vrG-D2o4KII0.mjs → diff-database-schema-BfRs2vrG-DInOv5LW.mjs} +2 -2
  31. package/dist/{diff-database-schema-BfRs2vrG-D2o4KII0.mjs.map → diff-database-schema-BfRs2vrG-DInOv5LW.mjs.map} +1 -1
  32. package/dist/{op-factory-call-DifL68KT-Bo6pxs-R.mjs → op-factory-call-DifL68KT-CNFEDNsf.mjs} +2 -2
  33. package/dist/{op-factory-call-DifL68KT-Bo6pxs-R.mjs.map → op-factory-call-DifL68KT-CNFEDNsf.mjs.map} +1 -1
  34. package/dist/{planner-Bmje9ii8-B99fEsNM.mjs → planner-Bmje9ii8-DdjXZxyD.mjs} +5 -5
  35. package/dist/{planner-Bmje9ii8-B99fEsNM.mjs.map → planner-Bmje9ii8-DdjXZxyD.mjs.map} +1 -1
  36. package/dist/{planner-ddl-builders-CbfICQfm-CxYiLrhX.mjs → planner-ddl-builders-CbfICQfm-CGjwaNy7.mjs} +2 -2
  37. package/dist/{planner-ddl-builders-CbfICQfm-CxYiLrhX.mjs.map → planner-ddl-builders-CbfICQfm-CGjwaNy7.mjs.map} +1 -1
  38. package/dist/{planner-produced-postgres-migration-Cicg2sXg-Ck9iDxGI.mjs → planner-produced-postgres-migration-Cicg2sXg-CZI7mdz9.mjs} +2 -2
  39. package/dist/{planner-produced-postgres-migration-Cicg2sXg-Ck9iDxGI.mjs.map → planner-produced-postgres-migration-Cicg2sXg-CZI7mdz9.mjs.map} +1 -1
  40. package/dist/{postgres-migration-CJshdIZn-DYYjgdD0.mjs → postgres-migration-CJshdIZn-CT6Cxd4x.mjs} +2 -2
  41. package/dist/{postgres-migration-CJshdIZn-DYYjgdD0.mjs.map → postgres-migration-CJshdIZn-CT6Cxd4x.mjs.map} +1 -1
  42. package/dist/sql-renderer-CZE98PJj-Bx5D-Txz.mjs +579 -0
  43. package/dist/sql-renderer-CZE98PJj-Bx5D-Txz.mjs.map +1 -0
  44. package/dist/sql-renderer-Cyls5Xy4.d.mts +19 -0
  45. package/dist/sql-renderer-Cyls5Xy4.d.mts.map +1 -0
  46. package/dist/target.d.mts +2 -1
  47. package/dist/target.mjs +13 -12
  48. package/dist/target__aggregates.d.mts +2 -0
  49. package/dist/target__aggregates.mjs +2 -0
  50. package/dist/target__codecs.mjs +2 -2
  51. package/dist/target__control.mjs +1 -1
  52. package/dist/target__diff-database-schema.mjs +1 -1
  53. package/dist/target__issue-planner.mjs +1 -1
  54. package/dist/target__migration.mjs +2 -2
  55. package/dist/target__op-factory-call.mjs +1 -1
  56. package/dist/target__pack.mjs +1 -1
  57. package/dist/target__planner-ddl-builders.mjs +1 -1
  58. package/dist/target__planner-produced-postgres-migration.mjs +1 -1
  59. package/dist/target__planner.mjs +2 -2
  60. package/package.json +11 -9
  61. package/dist/adapter-DhqcO3YO-jzwDVcCv.mjs.map +0 -1
  62. package/dist/control-adapter-B9t0g7Pf-HrCxlM65.mjs.map +0 -1
  63. package/dist/descriptor-meta-2IlVC6_d-DnV00Qd_.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-adapter-B9t0g7Pf-HrCxlM65.mjs","names":[],"sources":["../../../../3-targets/6-adapters/postgres/dist/control-adapter-B9t0g7Pf.mjs"],"sourcesContent":["import { APP_SPACE_ID, extractCodecLookup } from \"@internal/framework-components/control\";\nimport { LiteralExpr, RawExpr, collectOrderedParamRefs, isDdlNode } from \"@internal/sql-relational-core/ast\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { buildPostgresCodecDescriptorRegistry } from \"@internal/target-postgres/codec-descriptor\";\nimport { isPgEnumParams, postgresCodecDescriptorRegistry, postgresCodecRegistry } from \"@internal/target-postgres/codecs\";\nimport { parseMarkerRowSafely, rethrowMarkerReadError, withMarkerReadErrorHandling } from \"@internal/errors/execution\";\nimport { parseContractMarkerRow } from \"@internal/family-sql/verify\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\nimport { REFERENTIAL_ACTION_SQL } from \"@internal/sql-contract/referential-action-sql\";\nimport { namingOfLiveName } from \"@internal/sql-schema-ir/naming\";\nimport { RelationalSchemaNodeKind } from \"@internal/sql-schema-ir/types\";\nimport { buildControlTableBootstrapQueries, buildSignMarkerBootstrapQueries, int4, int8, jsonb, pgTable, text, textArray, timestamptz } from \"@internal/target-postgres/contract-free\";\nimport { parsePostgresDefault } from \"@internal/target-postgres/default-normalizer\";\nimport { postgresError } from \"@internal/target-postgres/errors\";\nimport { normalizeSchemaNativeType } from \"@internal/target-postgres/native-type-normalizer\";\nimport { escapeLiteral, quoteIdentifier, quoteQualifiedName } from \"@internal/target-postgres/sql-utils\";\nimport { PostgresDatabaseSchemaNode, PostgresNamespaceSchemaNode, PostgresNativeEnumSchemaNode, PostgresPolicySchemaNode, PostgresRoleSchemaNode, PostgresSchemaNodeKind, PostgresTableSchemaNode } from \"@internal/target-postgres/types\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { createAstCodecRegistry, deriveParamMetadata, encodeParamsWithMetadata } from \"@internal/sql-runtime\";\nimport { InternalError, assertNever } from \"@internal/utils/internal-error\";\nimport { PG_TIMESTAMPTZ_CODEC_ID } from \"@internal/target-postgres/codec-ids\";\nimport { runtimeError } from \"@internal/framework-components/runtime\";\n//#region src/core/adapter-errors.ts\nfunction adapterError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/core/codec-lookup.ts\nfunction buildPostgresCodecRegistry(descriptors) {\n\tconst descriptorRegistry = buildPostgresCodecDescriptorRegistry(descriptors);\n\tconst registry = {\n\t\t...extractCodecLookup([{\n\t\t\tid: \"postgres-codecs\",\n\t\t\ttypes: { codecTypes: { codecDescriptors: Array.from(descriptorRegistry.values()) } }\n\t\t}]),\n\t\tdescriptorFor: (codecId) => descriptorRegistry.descriptorFor(codecId),\n\t\tvalues: () => descriptorRegistry.values()\n\t};\n\treturn Object.freeze(registry);\n}\nfunction assemblePostgresCodecRegistry(components) {\n\treturn buildPostgresCodecRegistry(components.flatMap((component) => component.types?.codecTypes?.codecDescriptors ?? []));\n}\nfunction createPostgresCodecRegistryWithBuiltins(codecDescriptors = []) {\n\treturn buildPostgresCodecRegistry([...postgresCodecDescriptorRegistry.values(), ...codecDescriptors]);\n}\n/**\n* Build a coherent PostgreSQL codec registry populated with built-in descriptors only.\n*\n* The returned registry supports both ordinary codec materialization and PostgreSQL target behavior. Stack-composed paths build the same combined registry from their complete ordered descriptor contributions.\n*/\nfunction createPostgresBuiltinCodecLookup() {\n\treturn createPostgresCodecRegistryWithBuiltins();\n}\n//#endregion\n//#region ../../../1-framework/3-tooling/migration/dist/exports/ledger-origin.mjs\nfunction ledgerOriginFromStored(originCoreHash) {\n\tif (originCoreHash === null || originCoreHash === \"\" || originCoreHash === \"empty\") return null;\n\treturn originCoreHash;\n}\n//#endregion\n//#region src/core/control-codecs.ts\nconst CONTROL_CODECS = createAstCodecRegistry(postgresCodecRegistry);\nasync function encodeControlQueryParams(lowered, ast, codecs = CONTROL_CODECS) {\n\treturn encodeParamsWithMetadata(lowered.params.map((slot) => {\n\t\tif (slot.kind === \"literal\") return slot.value;\n\t\tthrow new InternalError(`control query lowered to a bind slot '${slot.name}', which is unsupported`);\n\t}), deriveParamMetadata(ast), {}, codecs);\n}\n//#endregion\n//#region src/core/marker-ledger.ts\nconst marker = pgTable({\n\tname: \"marker\",\n\tschema: \"prisma_contract\"\n}, {\n\tspace: text(),\n\tcore_hash: text(),\n\tprofile_hash: text(),\n\tcontract_json: jsonb({ nullable: true }),\n\tcanonical_version: int4({ nullable: true }),\n\tupdated_at: timestamptz(),\n\tapp_tag: text({ nullable: true }),\n\tmeta: jsonb({ nullable: true }),\n\tinvariants: textArray()\n});\n/**\n* Writeable subset of the `prisma_contract.ledger` table. Omits the\n* DB-generated `id` (bigserial) and `created_at` (default `now()`) so the\n* insert path doesn't have to pass them.\n*/\nconst ledger = pgTable({\n\tname: \"ledger\",\n\tschema: \"prisma_contract\"\n}, {\n\tspace: text(),\n\tmigration_name: text(),\n\tmigration_hash: text(),\n\torigin_core_hash: text({ nullable: true }),\n\tdestination_core_hash: text(),\n\toperations: jsonb()\n});\n/**\n* Content-addressed contract store: one row per distinct contract, keyed\n* by its storage hash. The ledger's `origin_core_hash` /\n* `destination_core_hash` resolve here by hash equality, so both\n* endpoints of every edge are direct lookups and a contract revisited by\n* a rollback cycle is stored exactly once (upsert DO NOTHING).\n*/\nconst ledgerContract = pgTable({\n\tname: \"contract\",\n\tschema: \"prisma_contract\"\n}, {\n\tcore_hash: text(),\n\tcontract_json: jsonb()\n});\n/**\n* Read-side handle covering every column of `prisma_contract.ledger`,\n* including the DB-generated `id` (for ORDER BY) and `created_at`.\n*/\nconst ledgerReadShape = pgTable({\n\tname: \"ledger\",\n\tschema: \"prisma_contract\"\n}, {\n\tid: int8(),\n\tspace: text(),\n\tmigration_name: text(),\n\tmigration_hash: text(),\n\torigin_core_hash: text({ nullable: true }),\n\tdestination_core_hash: text(),\n\toperations: jsonb(),\n\tcreated_at: timestamptz()\n});\nconst infoSchemaTables = pgTable({\n\tname: \"tables\",\n\tschema: \"information_schema\"\n}, {\n\ttable_schema: text(),\n\ttable_name: text()\n});\nconst NOW = new RawExpr({\n\tparts: [\"now()\"],\n\treturns: {\n\t\tcodecId: PG_TIMESTAMPTZ_CODEC_ID,\n\t\tnullable: false\n\t}\n});\nfunction mergeInvariants(current, incoming) {\n\treturn [.../* @__PURE__ */ new Set([...current, ...incoming])].sort();\n}\nasync function execute(lower, driver, query) {\n\tconst lowered = lower(query);\n\tconst encoded = await encodeControlQueryParams(lowered, query);\n\treturn (await driver.query(lowered.sql, encoded)).rows;\n}\n//#endregion\n//#region src/core/sql-renderer.ts\n/**\n* Postgres native types whose unknown-OID parameter inference is reliable in arbitrary expression positions. Parameters bound to a descriptor whose `nativeTypeFor` result falls in this set are emitted as plain `$N`; everything else (including `json`, `jsonb`, extension types like `vector`, and unknown user types) is emitted as `$N::<nativeType>` so the planner picks an unambiguous overload.\n*\n* `json` / `jsonb` are intentionally excluded despite being Postgres builtins: their operator overloads make context inference unreliable in expression positions (e.g. `$1 -> 'key'` is ambiguous between the two).\n*\n* Spellings match the target descriptors' `nativeTypeFor` results, not the `udt_name` abbreviations that ADR 205 used as illustrative shorthand. The registry-based cast policy compares against these strings directly.\n*/\nconst POSTGRES_INFERRABLE_NATIVE_TYPES = /* @__PURE__ */ new Set([\n\t\"integer\",\n\t\"smallint\",\n\t\"bigint\",\n\t\"real\",\n\t\"double precision\",\n\t\"numeric\",\n\t\"boolean\",\n\t\"text\",\n\t\"character\",\n\t\"character varying\",\n\t\"timestamp\",\n\t\"timestamp without time zone\",\n\t\"timestamp with time zone\",\n\t\"time\",\n\t\"timetz\",\n\t\"interval\",\n\t\"bit\",\n\t\"bit varying\"\n]);\nfunction renderTypedParam(index, codecId, codecDescriptorRegistry, many, typeParams) {\n\tif (codecId === void 0) return `$${index}`;\n\tconst descriptor = codecDescriptorRegistry.descriptorFor(codecId);\n\tif (descriptor === void 0) throw adapterError(\"RUNTIME.PARAM_REF_MISSING_CODEC\", `Postgres lowering: ParamRef carries codecId \"${codecId}\" but the validated PostgreSQL codec registry has no entry for it. This usually indicates a missing extension pack in the runtime stack — register the pack that contributes this codec (e.g. \\`extensions: [pgvectorRuntime]\\`), or use the codec directly from \\`@internal/target-postgres/codecs\\` if it's a builtin.`, { meta: { codecId } });\n\tconst ref = {\n\t\tcodecId,\n\t\t...ifDefined(\"many\", many),\n\t\t...ifDefined(\"typeParams\", typeParams)\n\t};\n\tconst nativeType = descriptor.nativeTypeFor(ref);\n\tconst arraySuffix = many ? \"[]\" : \"\";\n\tif (isPgEnumParams(typeParams)) return `$${index}::${quoteQualifiedName(nativeType)}${arraySuffix}`;\n\tif (!POSTGRES_INFERRABLE_NATIVE_TYPES.has(nativeType) || many) return `$${index}::${nativeType}${arraySuffix}`;\n\treturn `$${index}`;\n}\nfunction unreachableKind(value) {\n\tconst candidate = value;\n\tif (typeof candidate === \"object\" && candidate !== null && \"kind\" in candidate && typeof candidate.kind === \"string\") return candidate.kind;\n\treturn \"unknown\";\n}\n/**\n* Render a SQL query AST to a Postgres-flavored `{ sql, params }` payload.\n*\n* Shared between the runtime (`PostgresAdapterImpl.lower`) and control (`PostgresControlAdapter.lower`) entrypoints so emit-time and run-time paths produce byte-identical output for the same AST.\n*/\nfunction renderLoweredSql(ast, contract, codecDescriptorRegistry) {\n\tconst orderedRefs = collectOrderedParamRefs(ast);\n\tconst indexMap = /* @__PURE__ */ new Map();\n\tconst params = orderedRefs.map((ref, i) => {\n\t\tindexMap.set(ref, i + 1);\n\t\treturn ref.kind === \"prepared-param-ref\" ? {\n\t\t\tkind: \"bind\",\n\t\t\tname: ref.name\n\t\t} : {\n\t\t\tkind: \"literal\",\n\t\t\tvalue: ref.value\n\t\t};\n\t});\n\tconst pim = {\n\t\tindexMap,\n\t\tcodecDescriptorRegistry\n\t};\n\tconst node = ast;\n\tlet sql;\n\tswitch (node.kind) {\n\t\tcase \"select\":\n\t\t\tsql = renderSelect(node, contract, pim);\n\t\t\tbreak;\n\t\tcase \"insert\":\n\t\t\tsql = renderInsert(node, contract, pim);\n\t\t\tbreak;\n\t\tcase \"update\":\n\t\t\tsql = renderUpdate(node, contract, pim);\n\t\t\tbreak;\n\t\tcase \"delete\":\n\t\t\tsql = renderDelete(node, contract, pim);\n\t\t\tbreak;\n\t\tcase \"raw-sql\":\n\t\t\tsql = renderRawSql(node, contract, pim);\n\t\t\tbreak;\n\t\t// v8 ignore next 4\n\t\tdefault: assertNever(node, `Unsupported AST node kind: ${unreachableKind(node)}`);\n\t}\n\treturn Object.freeze({\n\t\tsql,\n\t\tparams: Object.freeze(params)\n\t});\n}\nfunction renderLimitOffset(keyword, value, contract, pim) {\n\tif (value === void 0) return \"\";\n\tif (typeof value === \"number\") return `${keyword} ${value}`;\n\treturn `${keyword} ${renderExpr(value, contract, pim)}`;\n}\nfunction renderSelect(ast, contract, pim) {\n\tconst sourcesByRef = collectTableSources(ast);\n\treturn [\n\t\t`SELECT ${renderDistinctPrefix(ast.distinct, ast.distinctOn, sourcesByRef, contract, pim)}${renderProjection(ast.projection, contract, pim)}`,\n\t\tast.from !== void 0 ? `FROM ${renderSource(ast.from, contract, pim)}` : \"\",\n\t\tast.joins?.length ? ast.joins.map((join) => renderJoin(join, contract, pim)).join(\" \") : \"\",\n\t\tast.where ? `WHERE ${renderWhere(ast.where, contract, pim)}` : \"\",\n\t\tast.groupBy?.length ? `GROUP BY ${ast.groupBy.map((expr) => renderExpr(expr, contract, pim)).join(\", \")}` : \"\",\n\t\tast.having ? `HAVING ${renderWhere(ast.having, contract, pim)}` : \"\",\n\t\tast.orderBy?.length ? `ORDER BY ${ast.orderBy.map((order) => {\n\t\t\treturn `${renderOrderByExpr(order.expr, sourcesByRef, contract, pim)} ${order.dir.toUpperCase()}`;\n\t\t}).join(\", \")}` : \"\",\n\t\trenderLimitOffset(\"LIMIT\", ast.limit, contract, pim),\n\t\trenderLimitOffset(\"OFFSET\", ast.offset, contract, pim)\n\t].filter((part) => part.length > 0).join(\" \").trim();\n}\n/**\n* Map a SELECT's table references (the FROM source and any JOIN sources) to their storage coordinate, keyed by the name a `ColumnRef.table` would carry (the alias when present, otherwise the table name). Derived-table sources are skipped — their columns are projected through a sub-select, not a base storage column, so the enum hook does not apply.\n*/\nfunction collectTableSources(ast) {\n\tconst sources = /* @__PURE__ */ new Map();\n\tconst add = (source) => {\n\t\tif (source.kind !== \"table-source\") return;\n\t\tconst ref = source.alias ?? source.name;\n\t\tsources.set(ref, {\n\t\t\tname: source.name,\n\t\t\tnamespaceId: source.namespaceId\n\t\t});\n\t};\n\tif (ast.from !== void 0) add(ast.from);\n\tfor (const join of ast.joins ?? []) add(join.source);\n\treturn sources;\n}\n/**\n* Ordered, codec-encoded values of the value-set a storage column restricts to, or `undefined` when the referenced column carries no value-set (the common, non-enum case). Resolves the column's storage coordinate from the SELECT's table sources, then the column's `valueSet` ref to the value-set's `values`.\n*/\nfunction allStrings(values) {\n\treturn values.every((value) => typeof value === \"string\");\n}\nfunction resolveEnumOrderValues(ref, sourcesByRef, contract) {\n\tconst source = sourcesByRef.get(ref.table);\n\tif (source === void 0 || source.namespaceId === void 0) return;\n\tconst sourceNs = contract.storage.namespaces[source.namespaceId];\n\tconst valueSet = (sourceNs !== void 0 ? sourceNs.entries.table?.[source.name]?.columns[ref.column] : void 0)?.valueSet;\n\tif (valueSet === void 0) return;\n\tconst valueSetNs = contract.storage.namespaces[valueSet.namespaceId];\n\treturn valueSetNs !== void 0 ? valueSetNs.entries.valueSet?.[valueSet.entityName]?.values : void 0;\n}\n/**\n* Ordered values for an unqualified ORDER BY column (an `identifier-ref`, the shape the sql-builder emits for `.orderBy('col')`). Scans every FROM/JOIN source for a column of that name. Resolves only when exactly one source has a column of that name and it carries a value-set; if more than one source has such a column the bare identifier is ambiguous (regardless of which are enum-backed), so it falls through to the plain column rendering.\n*/\nfunction resolveEnumOrderValuesForIdentifier(name, sourcesByRef, contract) {\n\tlet matchedColumns = 0;\n\tlet resolved;\n\tfor (const source of sourcesByRef.values()) {\n\t\tif (source.namespaceId === void 0) continue;\n\t\tconst identNs = contract.storage.namespaces[source.namespaceId];\n\t\tconst column = identNs !== void 0 ? identNs.entries.table?.[source.name]?.columns[name] : void 0;\n\t\tif (column === void 0) continue;\n\t\tmatchedColumns += 1;\n\t\tif (matchedColumns > 1) return;\n\t\tconst valueSet = column.valueSet;\n\t\tif (valueSet === void 0) return;\n\t\tconst valueSetNs = contract.storage.namespaces[valueSet.namespaceId];\n\t\tresolved = valueSetNs !== void 0 ? valueSetNs.entries.valueSet?.[valueSet.entityName]?.values : void 0;\n\t}\n\treturn resolved;\n}\n/**\n* Render an ORDER BY expression. A column reference onto an enum-restricted column sorts by declaration order via `array_position(ARRAY[…]::text[], <col>)` over the value-set's ordered values (NULLs return `NULL` from `array_position`, sorting per the clause's default NULL handling). Both qualified `column-ref`s and the unqualified `identifier-ref`s the sql-builder emits for `.orderBy('col')` are intercepted. Every other expression renders unchanged.\n*/\nfunction renderOrderByExpr(expr, sourcesByRef, contract, pim) {\n\tif (expr.kind === \"column-ref\") {\n\t\tconst orderValues = resolveEnumOrderValues(expr, sourcesByRef, contract);\n\t\tif (orderValues !== void 0 && allStrings(orderValues)) return `array_position(ARRAY[${orderValues.map((value) => `'${escapeLiteral(value)}'`).join(\", \")}]::text[], ${renderColumn(expr)})`;\n\t}\n\tif (expr.kind === \"identifier-ref\") {\n\t\tconst orderValues = resolveEnumOrderValuesForIdentifier(expr.name, sourcesByRef, contract);\n\t\tif (orderValues !== void 0 && allStrings(orderValues)) return `array_position(ARRAY[${orderValues.map((value) => `'${escapeLiteral(value)}'`).join(\", \")}]::text[], ${quoteIdentifier(expr.name)})`;\n\t}\n\treturn renderExpr(expr, contract, pim);\n}\nfunction renderProjection(projection, contract, pim) {\n\treturn projection.map((item) => {\n\t\tconst alias = quoteIdentifier(item.alias);\n\t\tif (item.expr.kind === \"literal\") return `${renderLiteral(item.expr)} AS ${alias}`;\n\t\treturn `${renderExpr(item.expr, contract, pim)} AS ${alias}`;\n\t}).join(\", \");\n}\nfunction renderReturning(items, contract, pim) {\n\treturn items.map((item) => {\n\t\tif (item.expr.kind === \"column-ref\") {\n\t\t\tconst rendered = renderColumn(item.expr);\n\t\t\treturn item.expr.column === item.alias ? rendered : `${rendered} AS ${quoteIdentifier(item.alias)}`;\n\t\t}\n\t\tif (item.expr.kind === \"literal\") return `${renderLiteral(item.expr)} AS ${quoteIdentifier(item.alias)}`;\n\t\treturn `${renderExpr(item.expr, contract, pim)} AS ${quoteIdentifier(item.alias)}`;\n\t}).join(\", \");\n}\nfunction renderDistinctPrefix(distinct, distinctOn, sourcesByRef, contract, pim) {\n\tif (distinctOn && distinctOn.length > 0) return `DISTINCT ON (${distinctOn.map((expr) => renderOrderByExpr(expr, sourcesByRef, contract, pim)).join(\", \")}) `;\n\tif (distinct) return \"DISTINCT \";\n\treturn \"\";\n}\nfunction hasExplicitSchema(table) {\n\treturn \"schema\" in table && typeof table.schema === \"string\";\n}\nfunction qualifyTableFromNamespaceCoordinate(table, contract) {\n\tif (hasExplicitSchema(table)) return `${quoteIdentifier(table.schema)}.${quoteIdentifier(table.name)}`;\n\tif (table.namespaceId === void 0) return quoteIdentifier(table.name);\n\tconst namespace = contract.storage.namespaces[table.namespaceId];\n\tif (namespace === void 0) throw adapterError(\"RUNTIME.NAMESPACE_UNKNOWN\", `Table \"${table.name}\" references namespace \"${table.namespaceId}\" which is not present as a Postgres schema on the contract`, { meta: {\n\t\ttable: table.name,\n\t\tnamespaceId: table.namespaceId,\n\t\treason: \"not-present\"\n\t} });\n\tconst qualifyTable = namespace.qualifyTable;\n\tif (qualifyTable === void 0) throw adapterError(\"RUNTIME.NAMESPACE_UNKNOWN\", `Table \"${table.name}\" references namespace \"${table.namespaceId}\" which is not materialised as a Postgres schema on the contract`, { meta: {\n\t\ttable: table.name,\n\t\tnamespaceId: table.namespaceId,\n\t\treason: \"not-materialised\"\n\t} });\n\treturn qualifyTable.call(namespace, table.name);\n}\nfunction renderTableSource(source, contract) {\n\tconst qualified = qualifyTableFromNamespaceCoordinate(source, contract);\n\tif (!source.alias) return qualified;\n\treturn `${qualified} AS ${quoteIdentifier(source.alias)}`;\n}\nfunction renderSource(source, contract, pim) {\n\tconst node = source;\n\tswitch (node.kind) {\n\t\tcase \"table-source\": return renderTableSource(node, contract);\n\t\tcase \"derived-table-source\": return `(${renderSelect(node.query, contract, pim)}) AS ${quoteIdentifier(node.alias)}`;\n\t\tcase \"function-source\": {\n\t\t\tconst args = node.args.map((arg) => renderExpr(arg, contract, pim)).join(\", \");\n\t\t\treturn `${`${node.fn}(${args})`}${node.ordinality ? \" WITH ORDINALITY\" : \"\"}${node.alias === void 0 ? \"\" : ` AS ${quoteIdentifier(node.alias)}`}${node.columnAliases === void 0 ? \"\" : `(${node.columnAliases.map((column) => quoteIdentifier(column)).join(\", \")})`}`;\n\t\t}\n\t\t// v8 ignore next 4\n\t\tdefault: assertNever(node, `Unsupported source node kind: ${unreachableKind(node)}`);\n\t}\n}\nfunction assertScalarSubquery(query) {\n\tif (query.projection.length !== 1) throw adapterError(\"RUNTIME.AST_INVALID\", \"Subquery expressions must project exactly one column\", { meta: { node: \"subquery-expr\" } });\n}\nfunction renderSubqueryExpr(expr, contract, pim) {\n\tassertScalarSubquery(expr.query);\n\treturn `(${renderSelect(expr.query, contract, pim)})`;\n}\nfunction renderWhere(expr, contract, pim) {\n\treturn renderExpr(expr, contract, pim);\n}\nfunction renderNullCheck(expr, contract, pim) {\n\tconst rendered = renderExpr(expr.expr, contract, pim);\n\tconst renderedExpr = isAtomicExpressionKind(expr.expr.kind) ? rendered : `(${rendered})`;\n\treturn expr.isNull ? `${renderedExpr} IS NULL` : `${renderedExpr} IS NOT NULL`;\n}\n/**\n* Atomic expression kinds whose rendered SQL is already self-delimited (a column reference, parameter, literal, function call, aggregate, etc.) and therefore does not need surrounding parentheses when used as the left operand of a postfix predicate like `IS NULL` or `IS NOT NULL`, or as either operand of a binary infix operator.\n*\n* Anything not in this set is treated as composite (binary, AND/OR/NOT, EXISTS, nested IS NULL, subqueries, operation templates) and gets wrapped to preserve grouping.\n*/\nfunction isAtomicExpressionKind(kind) {\n\tswitch (kind) {\n\t\tcase \"column-ref\":\n\t\tcase \"identifier-ref\":\n\t\tcase \"param-ref\":\n\t\tcase \"prepared-param-ref\":\n\t\tcase \"literal\":\n\t\tcase \"aggregate\":\n\t\tcase \"window-func\":\n\t\tcase \"function-call\":\n\t\tcase \"cast\":\n\t\tcase \"case\":\n\t\tcase \"json-object\":\n\t\tcase \"json-array-agg\":\n\t\tcase \"list\": return true;\n\t\tcase \"subquery\":\n\t\tcase \"operation\":\n\t\tcase \"binary\":\n\t\tcase \"and\":\n\t\tcase \"or\":\n\t\tcase \"exists\":\n\t\tcase \"null-check\":\n\t\tcase \"not\":\n\t\tcase \"raw-expr\": return false;\n\t}\n}\nfunction renderBinary(expr, contract, pim) {\n\tif (expr.right.kind === \"list\" && expr.right.values.length === 0) {\n\t\tif (expr.op === \"in\") return \"FALSE\";\n\t\tif (expr.op === \"notIn\") return \"TRUE\";\n\t}\n\tconst leftExpr = expr.left;\n\tconst left = renderExpr(leftExpr, contract, pim);\n\tconst leftRendered = leftExpr.kind === \"operation\" || leftExpr.kind === \"subquery\" ? `(${left})` : left;\n\tconst rightNode = expr.right;\n\tlet right;\n\tswitch (rightNode.kind) {\n\t\tcase \"list\":\n\t\t\tright = renderListLiteral(rightNode, contract, pim);\n\t\t\tbreak;\n\t\tcase \"literal\":\n\t\t\tright = renderLiteral(rightNode);\n\t\t\tbreak;\n\t\tcase \"column-ref\":\n\t\t\tright = renderColumn(rightNode);\n\t\t\tbreak;\n\t\tcase \"param-ref\":\n\t\tcase \"prepared-param-ref\":\n\t\t\tright = renderParamRef(rightNode, pim);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tright = renderExpr(rightNode, contract, pim);\n\t\t\tbreak;\n\t}\n\treturn `${leftRendered} ${{\n\t\teq: \"=\",\n\t\tneq: \"!=\",\n\t\tgt: \">\",\n\t\tlt: \"<\",\n\t\tgte: \">=\",\n\t\tlte: \"<=\",\n\t\tlike: \"LIKE\",\n\t\tin: \"IN\",\n\t\tnotIn: \"NOT IN\"\n\t}[expr.op]} ${right}`;\n}\nfunction renderListLiteral(expr, contract, pim) {\n\tif (expr.values.length === 0) return \"(NULL)\";\n\treturn `(${expr.values.map((v) => {\n\t\tif (v.kind === \"param-ref\" || v.kind === \"prepared-param-ref\") return renderParamRef(v, pim);\n\t\tif (v.kind === \"literal\") return renderLiteral(v);\n\t\treturn renderExpr(v, contract, pim);\n\t}).join(\", \")})`;\n}\nfunction renderColumn(ref) {\n\tif (ref.table === \"excluded\") return `excluded.${quoteIdentifier(ref.column)}`;\n\treturn `${quoteIdentifier(ref.table)}.${quoteIdentifier(ref.column)}`;\n}\nfunction renderAggregateExpr(expr, contract, pim) {\n\tconst fn = expr.fn.toUpperCase();\n\tif (!expr.expr) return `${fn}(*)`;\n\treturn `${fn}(${renderExpr(expr.expr, contract, pim)})`;\n}\nfunction renderWindowFuncExpr(expr, contract, pim) {\n\treturn `${expr.fn.toUpperCase()}(${expr.args.map((arg) => renderExpr(arg, contract, pim)).join(\", \")}) OVER (${[expr.partitionBy && expr.partitionBy.length > 0 ? `PARTITION BY ${expr.partitionBy.map((e) => renderExpr(e, contract, pim)).join(\", \")}` : \"\", expr.orderBy && expr.orderBy.length > 0 ? `ORDER BY ${renderOrderByItems(expr.orderBy, contract, pim)}` : \"\"].filter((part) => part.length > 0).join(\" \")})`;\n}\nfunction renderFunctionCallExpr(expr, contract, pim) {\n\tconst args = expr.args.map((arg) => renderExpr(arg, contract, pim)).join(\", \");\n\treturn `${expr.fn}(${args})`;\n}\nfunction renderCastExpr(expr, contract, pim) {\n\treturn `CAST(${renderExpr(expr.expr, contract, pim)} AS ${expr.targetType})`;\n}\nfunction renderCaseExpr(expr, contract, pim) {\n\treturn `CASE ${expr.branches.map((branch) => `WHEN ${renderExpr(branch.condition, contract, pim)} THEN ${renderExpr(branch.value, contract, pim)}`).join(\" \")}${expr.elseExpr === void 0 ? \"\" : ` ELSE ${renderExpr(expr.elseExpr, contract, pim)}`} END`;\n}\nfunction renderJsonValueProjection(projection, contract, pim) {\n\treturn projection.accept({\n\t\tcodec: ({ value, codec }) => renderExpr(projectJsonThroughCodec(value, codec, pim), contract, pim),\n\t\tnative: ({ value }) => renderExpr(value, contract, pim),\n\t\tdocument: ({ value }) => renderExpr(value, contract, pim)\n\t});\n}\nfunction projectJsonThroughCodec(value, codec, pim) {\n\tconst descriptor = pim.codecDescriptorRegistry.descriptorFor(codec.codecId);\n\tif (descriptor === void 0) throw adapterError(\"RUNTIME.PARAM_REF_MISSING_CODEC\", `Postgres lowering: a JSON projection carries codecId \"${codec.codecId}\" but the validated PostgreSQL codec registry has no entry for it. This usually indicates a missing extension pack in the runtime stack — register the pack that contributes this codec (e.g. \\`extensions: [pgvectorRuntime]\\`), or use the codec directly from \\`@internal/target-postgres/codecs\\` if it's a builtin.`, { meta: { codecId: codec.codecId } });\n\treturn descriptor.projectJson(value, codec);\n}\nfunction renderJsonObjectExpr(expr, contract, pim) {\n\treturn `json_build_object(${expr.entries.flatMap((entry) => {\n\t\treturn [`'${escapeLiteral(entry.key)}'`, renderJsonValueProjection(entry.value, contract, pim)];\n\t}).join(\", \")})`;\n}\nfunction renderOrderByItems(items, contract, pim) {\n\treturn items.map((item) => `${renderExpr(item.expr, contract, pim)} ${item.dir.toUpperCase()}`).join(\", \");\n}\nfunction renderJsonArrayAggExpr(expr, contract, pim) {\n\tconst aggregateOrderBy = expr.orderBy && expr.orderBy.length > 0 ? ` ORDER BY ${renderOrderByItems(expr.orderBy, contract, pim)}` : \"\";\n\tconst aggregated = `json_agg(${renderJsonValueProjection(expr.expr, contract, pim)}${aggregateOrderBy})`;\n\tif (expr.onEmpty === \"emptyArray\") return `coalesce(${aggregated}, json_build_array())`;\n\treturn aggregated;\n}\nfunction renderExpr(expr, contract, pim) {\n\tconst node = expr;\n\tswitch (node.kind) {\n\t\tcase \"column-ref\": return renderColumn(node);\n\t\tcase \"identifier-ref\": return quoteIdentifier(node.name);\n\t\tcase \"operation\": return renderOperation(node, contract, pim);\n\t\tcase \"subquery\": return renderSubqueryExpr(node, contract, pim);\n\t\tcase \"aggregate\": return renderAggregateExpr(node, contract, pim);\n\t\tcase \"window-func\": return renderWindowFuncExpr(node, contract, pim);\n\t\tcase \"function-call\": return renderFunctionCallExpr(node, contract, pim);\n\t\tcase \"cast\": return renderCastExpr(node, contract, pim);\n\t\tcase \"case\": return renderCaseExpr(node, contract, pim);\n\t\tcase \"json-object\": return renderJsonObjectExpr(node, contract, pim);\n\t\tcase \"json-array-agg\": return renderJsonArrayAggExpr(node, contract, pim);\n\t\tcase \"binary\": return renderBinary(node, contract, pim);\n\t\tcase \"and\":\n\t\t\tif (node.exprs.length === 0) return \"TRUE\";\n\t\t\treturn `(${node.exprs.map((part) => renderExpr(part, contract, pim)).join(\" AND \")})`;\n\t\tcase \"or\":\n\t\t\tif (node.exprs.length === 0) return \"FALSE\";\n\t\t\treturn `(${node.exprs.map((part) => renderExpr(part, contract, pim)).join(\" OR \")})`;\n\t\tcase \"exists\": return `${node.notExists ? \"NOT \" : \"\"}EXISTS (${renderSelect(node.subquery, contract, pim)})`;\n\t\tcase \"null-check\": return renderNullCheck(node, contract, pim);\n\t\tcase \"not\": return `NOT (${renderExpr(node.expr, contract, pim)})`;\n\t\tcase \"param-ref\":\n\t\tcase \"prepared-param-ref\": return renderParamRef(node, pim);\n\t\tcase \"literal\": return renderLiteral(node);\n\t\tcase \"list\": return renderListLiteral(node, contract, pim);\n\t\tcase \"raw-expr\": return renderRawExpr(node, contract, pim);\n\t\t// v8 ignore next 4\n\t\tdefault: assertNever(node, `Unsupported expression node kind: ${unreachableKind(node)}`);\n\t}\n}\nfunction renderParamRef(ref, pim) {\n\tconst index = pim.indexMap.get(ref);\n\tif (index === void 0) throw new InternalError(\"ParamRef not found in index map\");\n\tif (ref.kind === \"prepared-param-ref\") return renderTypedParam(index, ref.codec.codecId, pim.codecDescriptorRegistry, ref.codec.many, ref.codec.typeParams);\n\tif (ref.codec === void 0) throw runtimeError(\"RUNTIME.PARAM_REF_MISSING_CODEC\", \"Postgres renderer: ParamRef reached lowering without a bound CodecRef. Every column-bound ParamRef must carry a codec under the AST-bound codec contract. This usually indicates a builder path that constructed a ParamRef without threading the column codec.\", {\n\t\tparamIndex: index,\n\t\t...ifDefined(\"name\", ref.name)\n\t});\n\treturn renderTypedParam(index, ref.codec.codecId, pim.codecDescriptorRegistry, ref.codec.many, ref.codec.typeParams);\n}\nfunction renderLiteral(expr) {\n\tif (typeof expr.value === \"string\") return `'${escapeLiteral(expr.value)}'`;\n\tif (typeof expr.value === \"number\" || typeof expr.value === \"boolean\") return String(expr.value);\n\tif (typeof expr.value === \"bigint\") return String(expr.value);\n\tif (expr.value === null) return \"NULL\";\n\tif (expr.value === void 0) return \"NULL\";\n\tif (expr.value instanceof Date) return `'${escapeLiteral(expr.value.toISOString())}'`;\n\tif (Array.isArray(expr.value)) return `ARRAY[${expr.value.map((v) => renderLiteral(new LiteralExpr(v))).join(\", \")}]`;\n\tconst json = JSON.stringify(expr.value);\n\tif (json === void 0) return \"NULL\";\n\treturn `'${escapeLiteral(json)}'`;\n}\nfunction renderOperation(expr, contract, pim) {\n\tconst self = renderExpr(expr.self, contract, pim);\n\tconst args = expr.args.map((arg) => {\n\t\treturn renderExpr(arg, contract, pim);\n\t});\n\treturn expr.lowering.template.replace(/\\{\\{self\\}\\}|\\{\\{arg(\\d+)\\}\\}/g, (token, argIndex) => {\n\t\tif (token === \"{{self}}\") return self;\n\t\tconst arg = args[Number(argIndex)];\n\t\tif (arg === void 0) throw adapterError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Operation lowering template for \"${expr.method}\" referenced missing argument {{arg${argIndex}}}; template has ${args.length} arg(s)`, { meta: { method: expr.method } });\n\t\treturn arg;\n\t});\n}\nfunction renderJoin(join, contract, pim) {\n\treturn `${join.joinType.toUpperCase()} JOIN ${join.lateral ? \"LATERAL \" : \"\"}${renderSource(join.source, contract, pim)} ON ${renderJoinOn(join.on, contract, pim)}`;\n}\nfunction renderJoinOn(on, contract, pim) {\n\tif (on.kind === \"eq-col-join-on\") return `${renderColumn(on.left)} = ${renderColumn(on.right)}`;\n\treturn renderWhere(on, contract, pim);\n}\nfunction getInsertColumnOrder(rows, contract, tableRef) {\n\tconst tableName = tableRef.name;\n\tconst orderedColumns = [];\n\tconst seenColumns = /* @__PURE__ */ new Set();\n\tfor (const row of rows) for (const column of Object.keys(row)) {\n\t\tif (seenColumns.has(column)) continue;\n\t\tseenColumns.add(column);\n\t\torderedColumns.push(column);\n\t}\n\tif (orderedColumns.length > 0) return orderedColumns;\n\tlet table;\n\tif (tableRef.namespaceId !== void 0) {\n\t\tconst ns = contract.storage.namespaces[tableRef.namespaceId];\n\t\ttable = ns !== void 0 ? ns.entries.table?.[tableName] : void 0;\n\t}\n\tif (table === void 0) for (const ns of Object.values(contract.storage.namespaces)) {\n\t\tconst found = ns.entries.table?.[tableName];\n\t\tif (found !== void 0) {\n\t\t\ttable = found;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!table) throw adapterError(\"RUNTIME.AST_INVALID\", `INSERT target table not found in contract storage: ${tableName}`, { meta: {\n\t\tnode: \"insert\",\n\t\ttable: tableName\n\t} });\n\treturn Object.keys(table.columns);\n}\nfunction renderInsertValue(value, contract, pim) {\n\tif (!value || value.kind === \"default-value\") return \"DEFAULT\";\n\tswitch (value.kind) {\n\t\tcase \"param-ref\":\n\t\tcase \"prepared-param-ref\": return renderParamRef(value, pim);\n\t\tcase \"column-ref\": return renderColumn(value);\n\t\tcase \"raw-expr\": return renderExpr(value, contract, pim);\n\t\t// v8 ignore next 4\n\t\tdefault: assertNever(value, `Unsupported value node in INSERT: ${unreachableKind(value)}`);\n\t}\n}\nfunction renderInsert(ast, contract, pim) {\n\tconst table = qualifyTableFromNamespaceCoordinate(ast.table, contract);\n\tconst rows = ast.rows;\n\tif (rows.length === 0) throw adapterError(\"RUNTIME.AST_INVALID\", \"INSERT requires at least one row\", { meta: { node: \"insert\" } });\n\tconst hasExplicitValues = rows.some((row) => Object.keys(row).length > 0);\n\treturn `${(() => {\n\t\tif (!hasExplicitValues) {\n\t\t\tif (rows.length === 1) return `INSERT INTO ${table} DEFAULT VALUES`;\n\t\t\tconst defaultColumns = getInsertColumnOrder(rows, contract, ast.table);\n\t\t\tif (defaultColumns.length === 0) return `INSERT INTO ${table} VALUES ${rows.map(() => \"()\").join(\", \")}`;\n\t\t\tconst quotedColumns = defaultColumns.map((column) => quoteIdentifier(column));\n\t\t\tconst defaultRow = `(${defaultColumns.map(() => \"DEFAULT\").join(\", \")})`;\n\t\t\treturn `INSERT INTO ${table} (${quotedColumns.join(\", \")}) VALUES ${rows.map(() => defaultRow).join(\", \")}`;\n\t\t}\n\t\tconst columnOrder = getInsertColumnOrder(rows, contract, ast.table);\n\t\tconst columns = columnOrder.map((column) => quoteIdentifier(column));\n\t\tconst values = rows.map((row) => {\n\t\t\treturn `(${columnOrder.map((column) => renderInsertValue(row[column], contract, pim)).join(\", \")})`;\n\t\t}).join(\", \");\n\t\treturn `INSERT INTO ${table} (${columns.join(\", \")}) VALUES ${values}`;\n\t})()}${ast.onConflict ? (() => {\n\t\tconst conflictColumns = ast.onConflict.columns.map((col) => quoteIdentifier(col.column));\n\t\tif (conflictColumns.length === 0) throw adapterError(\"RUNTIME.AST_INVALID\", \"INSERT onConflict requires at least one conflict column\", { meta: { node: \"insert-on-conflict\" } });\n\t\tconst action = ast.onConflict.action;\n\t\tswitch (action.kind) {\n\t\t\tcase \"do-nothing\": return ` ON CONFLICT (${conflictColumns.join(\", \")}) DO NOTHING`;\n\t\t\tcase \"do-update-set\": {\n\t\t\t\tconst updateEntries = Object.entries(action.set);\n\t\t\t\tif (updateEntries.length === 0) throw adapterError(\"RUNTIME.AST_INVALID\", \"INSERT onConflict do-update-set requires at least one assignment\", { meta: { node: \"insert-on-conflict\" } });\n\t\t\t\tconst updates = updateEntries.map(([colName, value]) => {\n\t\t\t\t\treturn `${quoteIdentifier(colName)} = ${renderExpr(value, contract, pim)}`;\n\t\t\t\t});\n\t\t\t\treturn ` ON CONFLICT (${conflictColumns.join(\", \")}) DO UPDATE SET ${updates.join(\", \")}`;\n\t\t\t}\n\t\t\t// v8 ignore next 4\n\t\t\tdefault: assertNever(action, `Unsupported onConflict action: ${unreachableKind(action)}`);\n\t\t}\n\t})() : \"\"}${ast.returning?.length ? ` RETURNING ${renderReturning(ast.returning, contract, pim)}` : \"\"}`;\n}\nfunction renderUpdate(ast, contract, pim) {\n\tconst table = qualifyTableFromNamespaceCoordinate(ast.table, contract);\n\tconst setEntries = Object.entries(ast.set);\n\tif (setEntries.length === 0) throw adapterError(\"RUNTIME.AST_INVALID\", \"UPDATE requires at least one SET assignment\", { meta: { node: \"update\" } });\n\tconst setClauses = setEntries.map(([col, val]) => {\n\t\treturn `${quoteIdentifier(col)} = ${renderExpr(val, contract, pim)}`;\n\t});\n\tconst whereClause = ast.where ? ` WHERE ${renderWhere(ast.where, contract, pim)}` : \"\";\n\tconst returningClause = ast.returning?.length ? ` RETURNING ${renderReturning(ast.returning, contract, pim)}` : \"\";\n\treturn `UPDATE ${table} SET ${setClauses.join(\", \")}${whereClause}${returningClause}`;\n}\nfunction renderDelete(ast, contract, pim) {\n\treturn `DELETE FROM ${qualifyTableFromNamespaceCoordinate(ast.table, contract)}${ast.where ? ` WHERE ${renderWhere(ast.where, contract, pim)}` : \"\"}${ast.returning?.length ? ` RETURNING ${renderReturning(ast.returning, contract, pim)}` : \"\"}`;\n}\nfunction renderRawSql(ast, contract, pim) {\n\tconst out = [];\n\tfor (let i = 0; i < ast.fragments.length; i++) {\n\t\tout.push(ast.fragments[i] ?? \"\");\n\t\tif (i < ast.args.length) {\n\t\t\tconst arg = ast.args[i];\n\t\t\tif (arg !== void 0) out.push(renderExpr(arg, contract, pim));\n\t\t}\n\t}\n\treturn out.join(\"\");\n}\nfunction renderRawExpr(node, contract, pim) {\n\treturn node.parts.map((part) => typeof part === \"string\" ? part : renderExpr(part, contract, pim)).join(\"\");\n}\n//#endregion\n//#region src/core/control-adapter.ts\nconst POSTGRES_MARKER_TABLE = \"prisma_contract.marker\";\nconst POSTGRES_LEDGER_TABLE = \"prisma_contract.ledger\";\n/**\n* Postgres control plane adapter for control-plane operations like introspection.\n* Provides target-specific implementations for control-plane domain actions.\n*/\nvar PostgresControlAdapter = class {\n\tcodecRegistry;\n\tfamilyId = \"sql\";\n\ttargetId = \"postgres\";\n\tconstructor(codecRegistry) {\n\t\tthis.codecRegistry = codecRegistry;\n\t}\n\t/**\n\t* Target-specific normalizer for raw Postgres default expressions.\n\t* Used by schema verification to normalize raw defaults before comparison.\n\t*/\n\tnormalizeDefault = parsePostgresDefault;\n\t/**\n\t* Target-specific normalizer for Postgres schema native type names.\n\t* Used by schema verification to normalize introspected type names\n\t* before comparison with contract native types.\n\t*/\n\tnormalizeNativeType = normalizeSchemaNativeType;\n\tbootstrapControlTableQueries() {\n\t\treturn buildControlTableBootstrapQueries();\n\t}\n\tbootstrapSignMarkerQueries() {\n\t\treturn buildSignMarkerBootstrapQueries();\n\t}\n\t/**\n\t* Lower a SQL query AST into a Postgres-flavored `{ sql, params }` payload.\n\t*\n\t* Delegates to the shared `renderLoweredSql` renderer so the control adapter\n\t* emits byte-identical SQL to `PostgresAdapterImpl.lower()` for the same AST\n\t* and contract. Used at migration plan/emit time (e.g. by `dataTransform`)\n\t* without instantiating the runtime adapter.\n\t*/\n\tlower(ast, context) {\n\t\tif (isDdlNode(ast)) throw adapterError(\"RUNTIME.DDL_UNSUPPORTED\", \"lower() cannot lower DDL: DDL default literals require inline codec encoding, which is async. Use lowerToExecuteRequest().\", { meta: { surface: \"control-adapter\" } });\n\t\treturn renderLoweredSql(ast, blindCast(context.contract), this.codecRegistry);\n\t}\n\t/**\n\t* Lower an AST all the way to a driver-ready statement. For DDL nodes,\n\t* literal column defaults are formatted as inline SQL with proper quoting and\n\t* `::nativeType` cast suffixes. For query ASTs, params are kept as `$N`\n\t* placeholders; wire values go in `params`. Does NOT call `this.lower()` —\n\t* independent implementation.\n\t*/\n\tasync lowerToExecuteRequest(ast, context) {\n\t\tif (isDdlNode(ast)) return pgRenderDdlExecuteRequest(blindCast(ast), this.codecRegistry);\n\t\tconst lowered = renderLoweredSql(ast, blindCast(context?.contract), this.codecRegistry);\n\t\tconst params = await encodeControlQueryParams(lowered, ast, blindCast(this.codecRegistry));\n\t\treturn {\n\t\t\tsql: lowered.sql,\n\t\t\tparams\n\t\t};\n\t}\n\t/**\n\t* Reads the contract marker from `prisma_contract.marker`. Probes\n\t* `information_schema.tables` first so a fresh database (where the\n\t* `prisma_contract` schema doesn't yet exist) returns `null` instead of a\n\t* \"relation does not exist\" error — some Postgres wire-protocol clients\n\t* (e.g. PGlite's TCP proxy) don't fully recover from extended-protocol\n\t* parse errors, so we probe before reading.\n\t*/\n\tasync readMarker(driver, space) {\n\t\tconst result = await this.readMarkerDiscriminated(driver, space);\n\t\treturn result.kind === \"present\" ? result.record : null;\n\t}\n\tasync readMarkerDiscriminated(driver, space) {\n\t\treturn withMarkerReadErrorHandling(() => this.readMarkerResult(driver, space), {\n\t\t\tspace,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t});\n\t}\n\t/**\n\t* Reads every row from `prisma_contract.marker` and returns them keyed\n\t* by `space`. Mirrors the existence probe in {@link readMarker}: a\n\t* fresh database without the `prisma_contract` schema returns an empty\n\t* map rather than raising \"relation does not exist\".\n\t*/\n\tasync readAllMarkers(driver) {\n\t\treturn withMarkerReadErrorHandling(() => this.readAllMarkersResult(driver), {\n\t\t\tspace: APP_SPACE_ID,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t});\n\t}\n\tasync readAllMarkersResult(driver) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif ((await execute(lower, driver, infoSchemaTables.select(infoSchemaTables.table_schema).where(infoSchemaTables.table_schema.eq(\"prisma_contract\").and(infoSchemaTables.table_name.eq(\"marker\"))).build())).length === 0) return /* @__PURE__ */ new Map();\n\t\tawait this.assertMarkerTableHasSpaceColumn(driver, APP_SPACE_ID);\n\t\tconst rows = blindCast(await execute(lower, driver, marker.select(marker.space, marker.core_hash, marker.profile_hash, marker.contract_json, marker.canonical_version, marker.updated_at, marker.app_tag, marker.meta, marker.invariants).build()));\n\t\tconst out = /* @__PURE__ */ new Map();\n\t\tfor (const row of rows) out.set(row.space, parseMarkerRowSafely(row, parseContractMarkerRow, {\n\t\t\tspace: row.space,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t}));\n\t\treturn out;\n\t}\n\t/**\n\t* Reads per-migration ledger rows from `prisma_contract.ledger` in apply\n\t* order. Probes `information_schema.tables` first so a fresh database\n\t* without the ledger table returns `[]` instead of raising \"relation does\n\t* not exist\".\n\t*/\n\tasync readLedger(driver, space) {\n\t\treturn withMarkerReadErrorHandling(() => this.readLedgerResult(driver, space), {\n\t\t\tspace: space ?? \"*\",\n\t\t\tmarkerLocation: POSTGRES_LEDGER_TABLE\n\t\t});\n\t}\n\tasync readLedgerResult(driver, space) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif ((await execute(lower, driver, infoSchemaTables.select(infoSchemaTables.table_schema).where(infoSchemaTables.table_schema.eq(\"prisma_contract\").and(infoSchemaTables.table_name.eq(\"ledger\"))).build())).length === 0) return [];\n\t\tconst base = ledgerReadShape.select(ledgerReadShape.space, ledgerReadShape.migration_name, ledgerReadShape.migration_hash, ledgerReadShape.origin_core_hash, ledgerReadShape.destination_core_hash, ledgerReadShape.operations, ledgerReadShape.created_at);\n\t\treturn blindCast(await execute(lower, driver, (space !== void 0 ? base.where(ledgerReadShape.space.eq(space)) : base).orderBy(ledgerReadShape.id).build())).map((row) => {\n\t\t\tconst appliedAt = row.created_at instanceof Date ? row.created_at : new Date(row.created_at);\n\t\t\treturn {\n\t\t\t\tspace: row.space,\n\t\t\t\tmigrationName: row.migration_name,\n\t\t\t\tmigrationHash: row.migration_hash,\n\t\t\t\tfrom: ledgerOriginFromStored(row.origin_core_hash),\n\t\t\t\tto: row.destination_core_hash,\n\t\t\t\tappliedAt,\n\t\t\t\toperationCount: Array.isArray(row.operations) ? row.operations.length : 0\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Stamps the initial marker row for `space` via the shared contract-free DML\n\t* builder, lowered through {@link lower} and executed on the driver. See the\n\t* `SqlControlAdapter.initMarker` contract.\n\t*/\n\tasync insertMarker(driver, space, destination) {\n\t\tawait execute((query) => this.lower(query, { contract: void 0 }), driver, marker.insert({\n\t\t\tspace,\n\t\t\tcore_hash: destination.storageHash,\n\t\t\tprofile_hash: destination.profileHash,\n\t\t\tcontract_json: null,\n\t\t\tcanonical_version: null,\n\t\t\tupdated_at: NOW,\n\t\t\tapp_tag: null,\n\t\t\tmeta: {},\n\t\t\tinvariants: destination.invariants ?? []\n\t\t}).build());\n\t}\n\tasync initMarker(driver, space, destination) {\n\t\tawait execute((query) => this.lower(query, { contract: void 0 }), driver, marker.upsert({\n\t\t\tspace,\n\t\t\tcore_hash: destination.storageHash,\n\t\t\tprofile_hash: destination.profileHash,\n\t\t\tcontract_json: null,\n\t\t\tcanonical_version: null,\n\t\t\tupdated_at: NOW,\n\t\t\tapp_tag: null,\n\t\t\tmeta: {},\n\t\t\tinvariants: destination.invariants ?? []\n\t\t}).onConflict(marker.space).doUpdate((excluded) => ({\n\t\t\tcore_hash: excluded.core_hash,\n\t\t\tprofile_hash: excluded.profile_hash,\n\t\t\tcontract_json: excluded.contract_json,\n\t\t\tcanonical_version: excluded.canonical_version,\n\t\t\tupdated_at: NOW,\n\t\t\tapp_tag: excluded.app_tag,\n\t\t\tmeta: excluded.meta,\n\t\t\tinvariants: excluded.invariants\n\t\t})).build());\n\t}\n\t/**\n\t* Compare-and-swap advance of the marker row for `space`. See the\n\t* `SqlControlAdapter.updateMarker` contract.\n\t*/\n\tasync updateMarker(driver, space, expectedFrom, destination) {\n\t\tconst currentInvariants = destination.invariants === void 0 ? [] : (await this.readMarker(driver, space))?.invariants ?? [];\n\t\tconst mergedInvariants = destination.invariants === void 0 ? void 0 : mergeInvariants(currentInvariants, destination.invariants);\n\t\treturn (await execute((q) => this.lower(q, { contract: void 0 }), driver, marker.update().set({\n\t\t\tcore_hash: destination.storageHash,\n\t\t\tprofile_hash: destination.profileHash,\n\t\t\tupdated_at: NOW,\n\t\t\t...mergedInvariants !== void 0 ? { invariants: mergedInvariants } : {}\n\t\t}).where(marker.space.eq(space).and(marker.core_hash.eq(expectedFrom))).returning(marker.space).build())).length > 0;\n\t}\n\t/**\n\t* Appends a ledger entry for `space`. When the edge carries a\n\t* destination contract snapshot, the content-addressed\n\t* `prisma_contract.contract` store is populated first (keyed by the\n\t* destination hash, DO NOTHING on revisit) so a reader never sees a\n\t* ledger row whose stored destination contract is missing. See the\n\t* `SqlControlAdapter.writeLedgerEntry` contract.\n\t*/\n\tasync writeLedgerEntry(driver, space, entry) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif (entry.destinationContractJson !== void 0) await execute(lower, driver, ledgerContract.upsert({\n\t\t\tcore_hash: entry.to,\n\t\t\tcontract_json: entry.destinationContractJson\n\t\t}).onConflict(ledgerContract.core_hash).doNothing().build());\n\t\tawait execute(lower, driver, ledger.insert({\n\t\t\tspace,\n\t\t\tmigration_name: entry.migrationName,\n\t\t\tmigration_hash: entry.migrationHash,\n\t\t\torigin_core_hash: entry.from,\n\t\t\tdestination_core_hash: entry.to,\n\t\t\toperations: entry.operations\n\t\t}).build());\n\t}\n\tasync assertMarkerTableHasSpaceColumn(driver, space) {\n\t\tconst rows = (await driver.query(`select column_name\n from information_schema.columns\n where table_schema = 'prisma_contract'\n and table_name = 'marker'`)).rows;\n\t\tif (rows.length === 0) return;\n\t\tif (!rows.every((row) => typeof row.column_name === \"string\")) return;\n\t\tif (rows.some((row) => row.column_name === \"space\")) return;\n\t\trethrowMarkerReadError(/* @__PURE__ */ new Error(\"column \\\"space\\\" does not exist\"), {\n\t\t\tspace,\n\t\t\tmarkerLocation: POSTGRES_MARKER_TABLE\n\t\t});\n\t}\n\tasync readMarkerResult(driver, space) {\n\t\tconst lower = (query) => this.lower(query, { contract: void 0 });\n\t\tif ((await execute(lower, driver, infoSchemaTables.select(infoSchemaTables.table_schema).where(infoSchemaTables.table_schema.eq(\"prisma_contract\").and(infoSchemaTables.table_name.eq(\"marker\"))).build())).length === 0) return { kind: \"no-table\" };\n\t\tawait this.assertMarkerTableHasSpaceColumn(driver, space);\n\t\tconst row = (await execute(lower, driver, marker.select(marker.core_hash, marker.profile_hash, marker.contract_json, marker.canonical_version, marker.updated_at, marker.app_tag, marker.meta, marker.invariants).where(marker.space.eq(space)).build()))[0];\n\t\tif (!row) return { kind: \"absent\" };\n\t\treturn {\n\t\t\tkind: \"present\",\n\t\t\trecord: parseContractMarkerRow(row)\n\t\t};\n\t}\n\t/**\n\t* Introspects a Postgres database schema and returns a raw SqlSchemaIR.\n\t*\n\t* This is a pure schema discovery operation that queries the Postgres catalog\n\t* and returns the schema structure without type mapping or contract enrichment.\n\t* Type mapping and enrichment are handled separately by enrichment helpers.\n\t*\n\t* When `contract` is provided and its storage declares more than one\n\t* namespace (or any explicit bound namespace), the adapter walks every\n\t* declared namespace and merges the per-schema introspection results\n\t* into a single `SqlSchemaIR`. `UNBOUND_NAMESPACE_ID` resolves to the\n\t* connection's `current_schema()` so late-bound tables follow the\n\t* runtime `search_path`. When no contract is passed, the adapter falls\n\t* back to introspecting the single `schema` argument (defaulting to\n\t* `'public'`).\n\t*\n\t* Uses batched queries to minimize database round trips (6 queries per\n\t* schema walked).\n\t*\n\t* @param driver - SqlControlDriverInstance<'postgres'> instance for executing queries\n\t* @param contract - Optional contract for contract-guided introspection (multi-namespace walk, filtering)\n\t* @param schema - Schema name to introspect when no contract is provided (defaults to 'public')\n\t* @returns Promise resolving to SqlSchemaIR representing the live database schema\n\t*/\n\tasync introspect(driver, contract, schema = \"public\") {\n\t\tconst declaredNamespaces = extractContractNamespaceIds(contract);\n\t\tconst resolvedSchemas = declaredNamespaces.length > 0 ? await this.resolveNamespaceSchemas(driver, declaredNamespaces) : [schema];\n\t\tconst namespaces = {};\n\t\tlet pgVersion = \"unknown\";\n\t\tfor (const resolved of resolvedSchemas) {\n\t\t\tconst { namespace, pgVersion: version } = await this.introspectSchema(driver, resolved);\n\t\t\tnamespaces[resolved] = namespace;\n\t\t\tpgVersion = version;\n\t\t}\n\t\treturn new PostgresDatabaseSchemaNode({\n\t\t\tnamespaces,\n\t\t\troles: await this.introspectRoles(driver),\n\t\t\texistingSchemas: await this.listExistingSchemas(driver),\n\t\t\tpgVersion\n\t\t});\n\t}\n\t/**\n\t* Reads cluster-scoped database roles. Roles are not schema-qualified, so\n\t* this is queried once for the whole database rather than per namespace.\n\t*/\n\tasync introspectRoles(driver) {\n\t\treturn (await driver.query(`SELECT rolname\n FROM pg_catalog.pg_roles\n WHERE rolname NOT LIKE 'pg_%'\n AND rolname != 'postgres'\n ORDER BY rolname`)).rows.map((row) => new PostgresRoleSchemaNode({\n\t\t\tname: row.rolname,\n\t\t\tnamespaceId: UNBOUND_NAMESPACE_ID\n\t\t}));\n\t}\n\t/**\n\t* Lists every non-system schema present in the connected database.\n\t* The introspection consumer (`verifyPostgresNamespacePresence`)\n\t* treats the result as the authoritative ground truth — declared\n\t* namespaces whose `ddlSchemaName` is missing from this list become\n\t* `missing_schema` issues, and the planner emits the matching\n\t* `CREATE SCHEMA` before table DDL.\n\t*/\n\tasync listExistingSchemas(driver) {\n\t\treturn (await driver.query(`SELECT nspname\n FROM pg_catalog.pg_namespace\n WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')\n AND nspname NOT LIKE 'pg_temp_%'\n AND nspname NOT LIKE 'pg_toast_temp_%'\n ORDER BY nspname`)).rows.map((row) => row.nspname);\n\t}\n\t/**\n\t* Resolves the declared namespace ids to their live DDL schema names,\n\t* mapping `UNBOUND_NAMESPACE_ID` to the connection's `current_schema()`\n\t* and de-duplicating. The caller introspects one namespace node per\n\t* resolved schema — there is no flat cross-schema merge, so two schemas\n\t* holding a same-named table no longer collide.\n\t*/\n\tasync resolveNamespaceSchemas(driver, namespaceIds) {\n\t\tconst resolvedSchemas = [];\n\t\tfor (const id of namespaceIds) if (id === UNBOUND_NAMESPACE_ID) {\n\t\t\tconst { rows } = await driver.query(\"SELECT current_schema() AS current_schema\");\n\t\t\tresolvedSchemas.push(rows[0]?.current_schema ?? \"public\");\n\t\t} else resolvedSchemas.push(id);\n\t\treturn Array.from(new Set(resolvedSchemas));\n\t}\n\t/**\n\t* Introspects a single Postgres schema and returns the namespace node for\n\t* that schema (its tables, their policies, and its native enum type names),\n\t* alongside the cluster-scoped Postgres version. Used by `introspect` as\n\t* the per-namespace walk.\n\t*/\n\tasync introspectSchema(driver, schema) {\n\t\tconst tablesResult = await driver.query(`SELECT table_name\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_type = 'BASE TABLE'\n ORDER BY table_name`, [schema]);\n\t\tconst columnsResult = await driver.query(`SELECT\n c.table_name,\n column_name,\n data_type,\n udt_name,\n is_nullable,\n character_maximum_length,\n numeric_precision,\n numeric_scale,\n column_default,\n format_type(a.atttypid, a.atttypmod) AS formatted_type,\n a.attidentity\n FROM information_schema.columns c\n JOIN pg_catalog.pg_class cl\n ON cl.relname = c.table_name\n JOIN pg_catalog.pg_namespace ns\n ON ns.nspname = c.table_schema\n AND ns.oid = cl.relnamespace\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = cl.oid\n AND a.attname = c.column_name\n AND a.attnum > 0\n AND NOT a.attisdropped\n WHERE c.table_schema = $1\n ORDER BY c.table_name, c.ordinal_position`, [schema]);\n\t\tconst pkResult = await driver.query(`SELECT\n cl.relname AS table_name,\n con.conname AS constraint_name,\n a.attname AS column_name,\n k.ord AS ordinal_position\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = con.conrelid\n AND a.attnum = k.attnum\n WHERE ns.nspname = $1\n AND con.contype = 'p'\n ORDER BY cl.relname, k.ord`, [schema]);\n\t\tconst fkResult = await driver.query(`SELECT\n cl.relname AS table_name,\n con.conname AS constraint_name,\n a.attname AS column_name,\n k.ord AS ordinal_position,\n ref_ns.nspname AS referenced_table_schema,\n ref_cl.relname AS referenced_table_name,\n ref_att.attname AS referenced_column_name,\n CASE con.confdeltype\n WHEN 'a' THEN 'NO ACTION'\n WHEN 'r' THEN 'RESTRICT'\n WHEN 'c' THEN 'CASCADE'\n WHEN 'n' THEN 'SET NULL'\n WHEN 'd' THEN 'SET DEFAULT'\n END AS delete_rule,\n CASE con.confupdtype\n WHEN 'a' THEN 'NO ACTION'\n WHEN 'r' THEN 'RESTRICT'\n WHEN 'c' THEN 'CASCADE'\n WHEN 'n' THEN 'SET NULL'\n WHEN 'd' THEN 'SET DEFAULT'\n END AS update_rule\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = con.conrelid\n AND a.attnum = k.attnum\n JOIN pg_catalog.pg_class ref_cl\n ON ref_cl.oid = con.confrelid\n JOIN pg_catalog.pg_namespace ref_ns\n ON ref_ns.oid = ref_cl.relnamespace\n JOIN pg_catalog.pg_attribute ref_att\n ON ref_att.attrelid = con.confrelid\n AND ref_att.attnum = con.confkey[k.ord]\n WHERE ns.nspname = $1\n AND con.contype = 'f'\n ORDER BY cl.relname, con.conname, k.ord`, [schema]);\n\t\tconst uniqueResult = await driver.query(`SELECT\n cl.relname AS table_name,\n con.conname AS constraint_name,\n a.attname AS column_name,\n k.ord AS ordinal_position\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class cl ON cl.oid = con.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n JOIN LATERAL unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord) ON true\n JOIN pg_catalog.pg_attribute a\n ON a.attrelid = con.conrelid\n AND a.attnum = k.attnum\n WHERE ns.nspname = $1\n AND con.contype = 'u'\n ORDER BY cl.relname, con.conname, k.ord`, [schema]);\n\t\tconst indexResult = await driver.query(`SELECT\n i.tablename,\n i.indexname,\n ix.indisunique,\n pg_get_expr(ix.indpred, ix.indrelid) AS where_predicate,\n a.attname,\n CASE WHEN 0 = ANY(ix.indkey::int[]) THEN pg_get_indexdef(ix.indexrelid, k.ord::int, true) END AS element_def,\n k.ord AS index_position,\n am.amname,\n ic.reloptions\n FROM pg_indexes i\n JOIN pg_class ic ON ic.relname = i.indexname\n JOIN pg_namespace ins ON ins.oid = ic.relnamespace AND ins.nspname = $1\n JOIN pg_index ix ON ix.indexrelid = ic.oid\n JOIN pg_am am ON am.oid = ic.relam\n JOIN pg_class t ON t.oid = ix.indrelid\n JOIN pg_namespace tn ON tn.oid = t.relnamespace AND tn.nspname = $1\n JOIN LATERAL unnest(ix.indkey::int[]) WITH ORDINALITY AS k(attnum, ord) ON true\n LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum AND a.attnum > 0\n WHERE i.schemaname = $1\n AND NOT EXISTS (\n SELECT 1\n FROM pg_catalog.pg_constraint con\n WHERE con.conindid = ic.oid\n AND con.contype IN ('p', 'u', 'x')\n )\n ORDER BY i.tablename, i.indexname, k.ord`, [schema]);\n\t\tconst checkResult = await driver.query(`SELECT\n cl.relname AS table_name,\n c.conname AS constraint_name,\n pg_get_constraintdef(c.oid) AS constraintdef\n FROM pg_catalog.pg_constraint c\n JOIN pg_catalog.pg_class cl ON cl.oid = c.conrelid\n JOIN pg_catalog.pg_namespace ns ON ns.oid = cl.relnamespace\n WHERE ns.nspname = $1\n AND c.contype = 'c'\n ORDER BY cl.relname, c.conname`, [schema]);\n\t\tconst columnsByTable = groupBy(columnsResult.rows, \"table_name\");\n\t\tconst pksByTable = groupBy(pkResult.rows, \"table_name\");\n\t\tconst fksByTable = groupBy(fkResult.rows, \"table_name\");\n\t\tconst uniquesByTable = groupBy(uniqueResult.rows, \"table_name\");\n\t\tconst indexesByTable = groupBy(indexResult.rows, \"tablename\");\n\t\tconst checksByTable = groupBy(checkResult.rows, \"table_name\");\n\t\tconst pkConstraintsByTable = /* @__PURE__ */ new Map();\n\t\tfor (const row of pkResult.rows) {\n\t\t\tlet constraints = pkConstraintsByTable.get(row.table_name);\n\t\t\tif (!constraints) {\n\t\t\t\tconstraints = /* @__PURE__ */ new Set();\n\t\t\t\tpkConstraintsByTable.set(row.table_name, constraints);\n\t\t\t}\n\t\t\tconstraints.add(row.constraint_name);\n\t\t}\n\t\tconst tableInputs = {};\n\t\tfor (const tableRow of tablesResult.rows) {\n\t\t\tconst tableName = tableRow.table_name;\n\t\t\tconst columns = {};\n\t\t\tfor (const colRow of columnsByTable.get(tableName) ?? []) {\n\t\t\t\tlet nativeType = colRow.udt_name;\n\t\t\t\tconst formattedType = colRow.formatted_type ? normalizeFormattedType(colRow.formatted_type, colRow.data_type, colRow.udt_name) : null;\n\t\t\t\tif (formattedType) nativeType = formattedType;\n\t\t\t\telse if (colRow.data_type === \"character varying\" || colRow.data_type === \"character\") if (colRow.character_maximum_length) nativeType = `${colRow.data_type}(${colRow.character_maximum_length})`;\n\t\t\t\telse nativeType = colRow.data_type;\n\t\t\t\telse if (colRow.data_type === \"numeric\" || colRow.data_type === \"decimal\") if (colRow.numeric_precision && colRow.numeric_scale !== null) nativeType = `${colRow.data_type}(${colRow.numeric_precision},${colRow.numeric_scale})`;\n\t\t\t\telse if (colRow.numeric_precision) nativeType = `${colRow.data_type}(${colRow.numeric_precision})`;\n\t\t\t\telse nativeType = colRow.data_type;\n\t\t\t\telse nativeType = colRow.udt_name || colRow.data_type;\n\t\t\t\tconst many = nativeType.endsWith(\"[]\") ? true : void 0;\n\t\t\t\tif (many) nativeType = normalizeSchemaNativeType(nativeType.slice(0, -2));\n\t\t\t\tconst resolvedNativeType = `${normalizeSchemaNativeType(nativeType)}${many ? \"[]\" : \"\"}`;\n\t\t\t\tconst rawDefault = colRow.column_default ?? void 0;\n\t\t\t\tconst resolvedDefault = colRow.attidentity === \"a\" || colRow.attidentity === \"d\" ? {\n\t\t\t\t\tkind: \"function\",\n\t\t\t\t\texpression: \"autoincrement()\"\n\t\t\t\t} : rawDefault !== void 0 ? parsePostgresDefault(rawDefault, resolvedNativeType) : void 0;\n\t\t\t\tcolumns[colRow.column_name] = {\n\t\t\t\t\tname: colRow.column_name,\n\t\t\t\t\tnativeType,\n\t\t\t\t\tnullable: colRow.is_nullable === \"YES\",\n\t\t\t\t\t...ifDefined(\"default\", rawDefault),\n\t\t\t\t\t...ifDefined(\"many\", many),\n\t\t\t\t\tresolvedNativeType,\n\t\t\t\t\t...ifDefined(\"resolvedDefault\", resolvedDefault)\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst pkRows = [...pksByTable.get(tableName) ?? []];\n\t\t\tconst primaryKeyColumns = pkRows.sort((a, b) => a.ordinal_position - b.ordinal_position).map((row) => row.column_name);\n\t\t\tconst primaryKey = primaryKeyColumns.length > 0 ? {\n\t\t\t\tcolumns: primaryKeyColumns,\n\t\t\t\t...pkRows[0]?.constraint_name ? { name: pkRows[0].constraint_name } : {},\n\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, primaryKeyColumns)\n\t\t\t} : void 0;\n\t\t\tconst foreignKeysMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const fkRow of fksByTable.get(tableName) ?? []) {\n\t\t\t\tconst existing = foreignKeysMap.get(fkRow.constraint_name);\n\t\t\t\tif (existing) {\n\t\t\t\t\texisting.columns.push(fkRow.column_name);\n\t\t\t\t\texisting.referencedColumns.push(fkRow.referenced_column_name);\n\t\t\t\t} else foreignKeysMap.set(fkRow.constraint_name, {\n\t\t\t\t\tcolumns: [fkRow.column_name],\n\t\t\t\t\treferencedTable: fkRow.referenced_table_name,\n\t\t\t\t\treferencedSchema: fkRow.referenced_table_schema,\n\t\t\t\t\treferencedColumns: [fkRow.referenced_column_name],\n\t\t\t\t\tname: fkRow.constraint_name,\n\t\t\t\t\tdeleteRule: fkRow.delete_rule,\n\t\t\t\t\tupdateRule: fkRow.update_rule\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst foreignKeys = Array.from(foreignKeysMap.values()).map((fk) => ({\n\t\t\t\tcolumns: Object.freeze([...fk.columns]),\n\t\t\t\treferencedTable: fk.referencedTable,\n\t\t\t\treferencedSchema: fk.referencedSchema,\n\t\t\t\treferencedColumns: Object.freeze([...fk.referencedColumns]),\n\t\t\t\tname: fk.name,\n\t\t\t\t...ifDefined(\"onDelete\", mapReferentialAction(fk.deleteRule)),\n\t\t\t\t...ifDefined(\"onUpdate\", mapReferentialAction(fk.updateRule)),\n\t\t\t\tdependsOn: [postgresTableDependsOn(fk.referencedSchema, fk.referencedTable), ...postgresColumnDependsOn(schema, tableName, fk.columns)]\n\t\t\t}));\n\t\t\tconst pkConstraints = pkConstraintsByTable.get(tableName) ?? /* @__PURE__ */ new Set();\n\t\t\tconst uniquesMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const uniqueRow of uniquesByTable.get(tableName) ?? []) {\n\t\t\t\tif (pkConstraints.has(uniqueRow.constraint_name)) continue;\n\t\t\t\tconst existing = uniquesMap.get(uniqueRow.constraint_name);\n\t\t\t\tif (existing) existing.columns.push(uniqueRow.column_name);\n\t\t\t\telse uniquesMap.set(uniqueRow.constraint_name, {\n\t\t\t\t\tcolumns: [uniqueRow.column_name],\n\t\t\t\t\tname: uniqueRow.constraint_name\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst uniques = Array.from(uniquesMap.values()).map((uq) => ({\n\t\t\t\tcolumns: Object.freeze([...uq.columns]),\n\t\t\t\tname: uq.name,\n\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, uq.columns)\n\t\t\t}));\n\t\t\tconst indexesMap = /* @__PURE__ */ new Map();\n\t\t\tfor (const idxRow of indexesByTable.get(tableName) ?? []) {\n\t\t\t\tconst existing = indexesMap.get(idxRow.indexname);\n\t\t\t\tif (existing) existing.elements.push({\n\t\t\t\t\tattname: idxRow.attname,\n\t\t\t\t\telementDef: idxRow.element_def\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst indexType = idxRow.amname ?? void 0;\n\t\t\t\t\tconst indexOptions = parsePgReloptions(idxRow.reloptions, idxRow.indexname);\n\t\t\t\t\tindexesMap.set(idxRow.indexname, {\n\t\t\t\t\t\tname: idxRow.indexname,\n\t\t\t\t\t\telements: [{\n\t\t\t\t\t\t\tattname: idxRow.attname,\n\t\t\t\t\t\t\telementDef: idxRow.element_def\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tunique: idxRow.indisunique,\n\t\t\t\t\t\twhere: idxRow.where_predicate,\n\t\t\t\t\t\ttype: indexType,\n\t\t\t\t\t\toptions: indexOptions\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst indexes = Array.from(indexesMap.values()).map((idx) => {\n\t\t\t\tconst isExpression = idx.elements.some((el) => el.attname === null);\n\t\t\t\tconst columnNames = idx.elements.flatMap((el) => el.attname !== null ? [el.attname] : []);\n\t\t\t\tconst base = {\n\t\t\t\t\tnaming: namingOfLiveName(idx.name),\n\t\t\t\t\twhere: idx.where ?? void 0,\n\t\t\t\t\tunique: idx.unique,\n\t\t\t\t\tpartial: idx.where !== null,\n\t\t\t\t\ttype: idx.type,\n\t\t\t\t\toptions: idx.options,\n\t\t\t\t\tannotations: void 0,\n\t\t\t\t\tdependsOn: postgresColumnDependsOn(schema, tableName, isExpression ? Object.keys(columns) : columnNames)\n\t\t\t\t};\n\t\t\t\treturn isExpression ? {\n\t\t\t\t\t...base,\n\t\t\t\t\texpression: idx.elements.map((el) => el.elementDef ?? \"\").join(\", \")\n\t\t\t\t} : {\n\t\t\t\t\t...base,\n\t\t\t\t\tcolumns: Object.freeze([...columnNames])\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst checksForTable = [];\n\t\t\tfor (const checkRow of checksByTable.get(tableName) ?? []) {\n\t\t\t\tconst parsed = parseCheckConstraintDef(checkRow.constraintdef);\n\t\t\t\tif (parsed) checksForTable.push({\n\t\t\t\t\tname: checkRow.constraint_name,\n\t\t\t\t\tcolumn: parsed.column,\n\t\t\t\t\tpermittedValues: parsed.permittedValues\n\t\t\t\t});\n\t\t\t}\n\t\t\ttableInputs[tableName] = {\n\t\t\t\tname: tableName,\n\t\t\t\tcolumns,\n\t\t\t\t...ifDefined(\"primaryKey\", primaryKey),\n\t\t\t\tforeignKeys,\n\t\t\t\tuniques,\n\t\t\t\tindexes,\n\t\t\t\t...ifDefined(\"checks\", checksForTable.length > 0 ? checksForTable : void 0)\n\t\t\t};\n\t\t}\n\t\tconst enums = (await driver.query(`SELECT t.typname, array_agg(e.enumlabel ORDER BY e.enumsortorder) AS enumvalues\n FROM pg_catalog.pg_type t\n JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n JOIN pg_catalog.pg_enum e ON e.enumtypid = t.oid\n WHERE t.typtype = 'e'\n AND n.nspname = $1\n GROUP BY t.typname\n ORDER BY t.typname`, [schema])).rows.map((r) => new PostgresNativeEnumSchemaNode({\n\t\t\ttypeName: r.typname,\n\t\t\tnamespaceId: schema,\n\t\t\tmembers: parsePgNameArray(r.enumvalues)\n\t\t}));\n\t\tconst policiesResult = await driver.query(`SELECT schemaname, tablename, policyname, cmd, roles, qual, with_check, permissive\n FROM pg_catalog.pg_policies\n WHERE schemaname = $1\n ORDER BY tablename, policyname`, [schema]);\n\t\tconst policiesByTable = /* @__PURE__ */ new Map();\n\t\tfor (const row of policiesResult.rows) {\n\t\t\tconst operation = mapPgCmd(row.cmd);\n\t\t\tconst policyRoles = [...new Set(parsePgNameArray(row.roles).map((r) => r.toLowerCase()))].sort();\n\t\t\tconst permissive = row.permissive.toUpperCase() === \"PERMISSIVE\";\n\t\t\tconst policy = new PostgresPolicySchemaNode({\n\t\t\t\tnaming: namingOfLiveName(row.policyname),\n\t\t\t\ttableName: row.tablename,\n\t\t\t\tnamespaceId: row.schemaname,\n\t\t\t\toperation,\n\t\t\t\troles: policyRoles,\n\t\t\t\tusing: row.qual ?? void 0,\n\t\t\t\twithCheck: row.with_check ?? void 0,\n\t\t\t\tpermissive,\n\t\t\t\tdependsOn: [postgresTableDependsOn(row.schemaname, row.tablename), ...policyRoles.map(postgresRoleDependsOn)]\n\t\t\t});\n\t\t\tconst list = policiesByTable.get(row.tablename) ?? [];\n\t\t\tlist.push(policy);\n\t\t\tpoliciesByTable.set(row.tablename, list);\n\t\t}\n\t\tconst rlsEnabledResult = await driver.query(`SELECT c.relname AS tablename, c.relrowsecurity AS rls_enabled\n FROM pg_catalog.pg_class c\n JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = $1\n AND c.relkind IN ('r', 'p')\n ORDER BY c.relname`, [schema]);\n\t\tconst rlsEnabledByTable = new Map(rlsEnabledResult.rows.map((row) => [row.tablename, row.rls_enabled]));\n\t\tconst tables = {};\n\t\tfor (const [tableName, input] of Object.entries(tableInputs)) tables[tableName] = new PostgresTableSchemaNode({\n\t\t\t...input,\n\t\t\tpolicies: policiesByTable.get(tableName) ?? [],\n\t\t\trlsEnabled: rlsEnabledByTable.get(tableName) ?? false\n\t\t});\n\t\treturn {\n\t\t\tnamespace: new PostgresNamespaceSchemaNode({\n\t\t\t\tschemaName: schema,\n\t\t\t\ttables,\n\t\t\t\tnativeEnums: enums\n\t\t\t}),\n\t\t\tpgVersion: await this.getPostgresVersion(driver)\n\t\t};\n\t}\n\t/**\n\t* Gets the Postgres version from the database.\n\t*/\n\tasync getPostgresVersion(driver) {\n\t\treturn ((await driver.query(\"SELECT version() AS version\", [])).rows[0]?.version ?? \"\").match(/PostgreSQL (\\d+\\.\\d+)/)?.[1] ?? \"unknown\";\n\t}\n};\n/**\n* Normalises a `name[]` column value from `pg_policies.roles`.\n*\n* The `pg` client's type-parser registry handles `text[]` (OID 1009) but not\n* `name[]` (OID 1003). When the parser is absent the raw Postgres text-array\n* literal (`{role1,role2}`) is returned as a string instead of a JS array.\n* This function accepts either form and returns a plain string array.\n*\n* The string branch honors Postgres array-literal quoting: an element\n* containing a comma, quote, backslash, brace, or significant whitespace is\n* emitted double-quoted with `\\\"` / `\\\\` escapes, and unquoted elements are\n* whitespace-trimmed — so a label like `in progress` or `say \"hi\"` parses to\n* its true value instead of being split or kept escaped.\n*/\nfunction parsePgNameArray(value) {\n\tif (Array.isArray(value)) return value.map(String);\n\tif (typeof value !== \"string\") return [];\n\tconst trimmed = value.trim();\n\tif (!trimmed.startsWith(\"{\") || !trimmed.endsWith(\"}\")) return [];\n\tconst inner = trimmed.slice(1, -1);\n\tif (inner === \"\") return [];\n\tconst elements = [];\n\tlet current = \"\";\n\tlet inQuotes = false;\n\tlet wasQuoted = false;\n\tconst pushCurrent = () => {\n\t\telements.push(wasQuoted ? current : current.trim());\n\t\tcurrent = \"\";\n\t\twasQuoted = false;\n\t};\n\tlet i = 0;\n\twhile (i < inner.length) {\n\t\tconst char = inner.charAt(i);\n\t\tif (inQuotes) {\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tcurrent += inner[i + 1] ?? \"\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\"\") {\n\t\t\t\tinQuotes = false;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrent += char;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tinQuotes = true;\n\t\t\twasQuoted = true;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \",\") {\n\t\t\tpushCurrent();\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += char;\n\t\ti++;\n\t}\n\tif (inQuotes) return [];\n\tpushCurrent();\n\treturn elements;\n}\n/**\n* Maps `pg_policies.cmd` text values to the `RlsPolicyOperation` union.\n* The `pg_policies` view renders the internal command code as an uppercase\n* English keyword; this function lowercases to match the IR type.\n*/\nfunction mapPgCmd(cmd) {\n\tswitch (cmd.toUpperCase()) {\n\t\tcase \"SELECT\": return \"select\";\n\t\tcase \"INSERT\": return \"insert\";\n\t\tcase \"UPDATE\": return \"update\";\n\t\tcase \"DELETE\": return \"delete\";\n\t\tdefault: return \"all\";\n\t}\n}\n/**\n* Extracts the namespace coordinate ids declared on a contract's storage,\n* or returns an empty array when no contract (or no storage / namespaces)\n* is present. Used by `PostgresControlAdapter.introspect` to decide\n* between the multi-namespace walk and the single-schema fallback.\n*/\nfunction extractContractNamespaceIds(contract) {\n\tif (contract === null || typeof contract !== \"object\") return [];\n\tconst storage = contract.storage;\n\tif (storage === null || typeof storage !== \"object\") return [];\n\tconst namespaces = storage.namespaces;\n\tif (namespaces === null || typeof namespaces !== \"object\") return [];\n\treturn Object.keys(namespaces);\n}\nfunction normalizeFormattedType(formattedType, dataType, udtName) {\n\tif (formattedType.endsWith(\"[]\")) return `${normalizeFormattedType(formattedType.slice(0, -2), dataType, udtName)}[]`;\n\tif (formattedType === \"integer\") return \"int4\";\n\tif (formattedType === \"smallint\") return \"int2\";\n\tif (formattedType === \"bigint\") return \"int8\";\n\tif (formattedType === \"real\") return \"float4\";\n\tif (formattedType === \"double precision\") return \"float8\";\n\tif (formattedType === \"boolean\") return \"bool\";\n\tif (formattedType.startsWith(\"varchar\")) return formattedType.replace(\"varchar\", \"character varying\");\n\tif (formattedType.startsWith(\"bpchar\")) return formattedType.replace(\"bpchar\", \"character\");\n\tif (formattedType.startsWith(\"varbit\")) return formattedType.replace(\"varbit\", \"bit varying\");\n\tif (dataType === \"timestamp with time zone\" || udtName === \"timestamptz\") return formattedType.replace(\"timestamp\", \"timestamptz\").replace(\" with time zone\", \"\").trim();\n\tif (dataType === \"timestamp without time zone\" || udtName === \"timestamp\") return formattedType.replace(\" without time zone\", \"\").trim();\n\tif (dataType === \"time with time zone\" || udtName === \"timetz\") return formattedType.replace(\"time\", \"timetz\").replace(\" with time zone\", \"\").trim();\n\tif (dataType === \"time without time zone\" || udtName === \"time\") return formattedType.replace(\" without time zone\", \"\").trim();\n\tif (formattedType.startsWith(\"\\\"\") && formattedType.endsWith(\"\\\"\")) return formattedType.slice(1, -1);\n\treturn formattedType;\n}\nconst PG_REFERENTIAL_ACTION_MAP = {\n\t\"NO ACTION\": \"noAction\",\n\tRESTRICT: \"restrict\",\n\tCASCADE: \"cascade\",\n\t\"SET NULL\": \"setNull\",\n\t\"SET DEFAULT\": \"setDefault\"\n};\n/**\n* Maps a Postgres referential action rule to the canonical SqlReferentialAction.\n* Returns undefined for 'NO ACTION' (the database default) to keep the IR sparse.\n* Throws for unrecognized rules to prevent silent data loss.\n*/\nfunction mapReferentialAction(rule) {\n\tconst mapped = PG_REFERENTIAL_ACTION_MAP[rule];\n\tif (mapped === void 0) throw adapterError(\"CONTRACT.INTROSPECTION_UNSUPPORTED\", `Unknown PostgreSQL referential action rule: \"${rule}\". Expected one of: NO ACTION, RESTRICT, CASCADE, SET NULL, SET DEFAULT.`, { meta: { rule } });\n\tif (mapped === \"noAction\") return void 0;\n\treturn mapped;\n}\n/**\n* A FK/policy dependency chain, mirroring the shape the expected-side\n* derivation stamps (`contractToPostgresDatabaseSchemaNode`): the database\n* root's fixed sentinel id, then the namespace, then the table.\n*/\nfunction postgresTableDependsOn(namespaceId, tableName) {\n\treturn [\n\t\t{\n\t\t\tnodeKind: PostgresSchemaNodeKind.database,\n\t\t\tid: \"database\"\n\t\t},\n\t\t{\n\t\t\tnodeKind: PostgresSchemaNodeKind.namespace,\n\t\t\tid: namespaceId\n\t\t},\n\t\t{\n\t\t\tnodeKind: PostgresSchemaNodeKind.table,\n\t\t\tid: tableName\n\t\t}\n\t];\n}\n/** A policy's dependency chain onto one of the roles it grants to. */\nfunction postgresRoleDependsOn(role) {\n\treturn [{\n\t\tnodeKind: PostgresSchemaNodeKind.database,\n\t\tid: \"database\"\n\t}, {\n\t\tnodeKind: PostgresSchemaNodeKind.role,\n\t\tid: role\n\t}];\n}\n/**\n* The chains from a table-child object (foreign key, index, unique, primary\n* key) to each of the own columns it is built on — the introspection-side\n* mirror of `contractToPostgresDatabaseSchemaNode`'s `columnDependsOn`. An\n* object is dropped before the columns it covers.\n*/\nfunction postgresColumnDependsOn(namespaceId, tableName, columns) {\n\treturn columns.map((column) => [...postgresTableDependsOn(namespaceId, tableName), {\n\t\tnodeKind: RelationalSchemaNodeKind.column,\n\t\tid: `column:${column}`\n\t}]);\n}\n/**\n* Groups an array of objects by a specified key.\n* Returns a Map for O(1) lookup by group key.\n*/\n/**\n* Parses a `pg_class.reloptions` array into a `Record<string, string>`.\n*\n* Postgres returns reloptions as a `text[]` whose entries are `key=value`\n* strings; the value side is always a string regardless of the underlying\n* scalar type. The verifier compares contract options to introspected\n* options after coercing both sides to strings, so keeping the raw text\n* here is correct.\n*\n* Returns `undefined` when the input is null/empty (no WITH clause).\n*/\nfunction parsePgReloptions(reloptions, indexName) {\n\tif (!reloptions || reloptions.length === 0) return;\n\tconst result = {};\n\tfor (const entry of reloptions) {\n\t\tconst eq = entry.indexOf(\"=\");\n\t\tif (eq === -1) throw adapterError(\"CONTRACT.INTROSPECTION_UNSUPPORTED\", `Postgres introspection: malformed reloption entry \"${entry}\" on index \"${indexName}\" (expected \"key=value\")`, { meta: {\n\t\t\tentry,\n\t\t\tindexName\n\t\t} });\n\t\tconst key = entry.slice(0, eq);\n\t\tresult[key] = entry.slice(eq + 1);\n\t}\n\treturn Object.keys(result).length > 0 ? result : void 0;\n}\nfunction groupBy(items, key) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const item of items) {\n\t\tconst groupKey = item[key];\n\t\tlet group = map.get(groupKey);\n\t\tif (!group) {\n\t\t\tgroup = [];\n\t\t\tmap.set(groupKey, group);\n\t\t}\n\t\tgroup.push(item);\n\t}\n\treturn map;\n}\n/**\n* Parses a Postgres check-constraint definition string (as returned by\n* `pg_get_constraintdef`) into a column name and permitted values array.\n*\n* Handles two shapes that Postgres emits for enum-style checks:\n*\n* 1. `= ANY (ARRAY[...])` — Postgres rewrites `col IN ('a','b')` to this form:\n* `CHECK ((col = ANY (ARRAY['a'::text, 'b'::text])))`\n*\n* 2. `IN (...)` — stays as-is when written directly:\n* `CHECK ((col IN ('a', 'b')))`\n*\n* Column names may be plain identifiers (`status`) or double-quoted identifiers\n* (`\"my-col\"`). Double-quoted identifiers with embedded `\"\"` are un-escaped to a\n* single `\"`.\n*\n* String literal values may contain Postgres-style doubled single-quotes (`''`),\n* which are un-escaped to a single `'` (e.g. `O''Brien` → `O'Brien`).\n*\n* Returns `{ column, permittedValues }` when the predicate matches one of\n* the two recognised shapes. Returns `undefined` for anything else (e.g.\n* a free-form SQL predicate that wasn't emitted by this slice).\n*/\nfunction parseCheckConstraintDef(constraintdef) {\n\tconst afterCheck = constraintdef.replace(/^CHECK\\s*\\(/i, \"\").replace(/\\)$/, \"\").trim();\n\tconst inner = afterCheck.startsWith(\"(\") && afterCheck.endsWith(\")\") ? afterCheck.slice(1, -1).trim() : afterCheck;\n\tconst anyArrayMatch = inner.match(/^(?:\"((?:[^\"]|\"\")*)\"|(\\w+))\\s*=\\s*ANY\\s*\\(\\s*ARRAY\\s*\\[(.+)\\]\\s*\\)\\s*$/i);\n\tif (anyArrayMatch) {\n\t\tconst column = anyArrayMatch[1] !== void 0 ? anyArrayMatch[1].replace(/\"\"/g, \"\\\"\") : anyArrayMatch[2];\n\t\tconst arrayBody = anyArrayMatch[3];\n\t\tif (!column || !arrayBody) return void 0;\n\t\tconst permittedValues = extractArrayLiterals(arrayBody);\n\t\treturn permittedValues ? {\n\t\t\tcolumn,\n\t\t\tpermittedValues\n\t\t} : void 0;\n\t}\n\tconst inMatch = inner.match(/^(?:\"((?:[^\"]|\"\")*)\"|(\\w+))\\s+IN\\s*\\((.+)\\)\\s*$/i);\n\tif (inMatch) {\n\t\tconst column = inMatch[1] !== void 0 ? inMatch[1].replace(/\"\"/g, \"\\\"\") : inMatch[2];\n\t\tconst listBody = inMatch[3];\n\t\tif (!column || !listBody) return void 0;\n\t\tconst permittedValues = extractQuotedLiterals(listBody);\n\t\treturn permittedValues ? {\n\t\t\tcolumn,\n\t\t\tpermittedValues\n\t\t} : void 0;\n\t}\n}\n/**\n* Extracts string literals from an `ARRAY[...]` body.\n* Handles `'value'::type` casts by stripping the cast part.\n* Postgres stores single quotes inside values as doubled single-quotes (`''`);\n* each extracted value is un-escaped so `O''Brien` becomes `O'Brien`.\n*/\nfunction extractArrayLiterals(arrayBody) {\n\tconst values = [...arrayBody.matchAll(/'((?:[^'\\\\]|\\\\.|'')*)'\\s*(?:::[^\\s,\\]]+)?/g)].map((m) => (m[1] ?? \"\").replace(/''/g, \"'\"));\n\treturn values.length > 0 ? values : void 0;\n}\n/**\n* Extracts string literals from an `IN (...)` list.\n* Handles single-quoted literals with possible escaped quotes.\n* Postgres stores single quotes inside values as doubled single-quotes (`''`);\n* each extracted value is un-escaped so `O''Brien` becomes `O'Brien`.\n*/\nfunction extractQuotedLiterals(listBody) {\n\tconst values = [...listBody.matchAll(/'((?:[^'\\\\]|\\\\.|'')*)'/g)].map((m) => (m[1] ?? \"\").replace(/''/g, \"'\"));\n\treturn values.length > 0 ? values : void 0;\n}\nfunction pgIsTextLikeNativeType(nativeType) {\n\treturn nativeType === \"text\" || nativeType === \"varchar\" || nativeType.startsWith(\"varchar(\") || nativeType === \"character varying\" || nativeType.startsWith(\"character varying(\") || nativeType === \"char\" || nativeType.startsWith(\"char(\") || nativeType === \"character\" || nativeType.startsWith(\"character(\");\n}\nfunction pgRenderArrayElement(el) {\n\tif (el === null) return \"NULL\";\n\tif (typeof el === \"number\" || typeof el === \"boolean\") return String(el);\n\tif (typeof el === \"string\") return `'${escapeLiteral(el)}'`;\n\treturn `'${escapeLiteral(JSON.stringify(el))}'`;\n}\nfunction pgRenderArrayLiteral(elements) {\n\tif (elements.length === 0) return \"'{}'\";\n\treturn `ARRAY[${elements.map(pgRenderArrayElement).join(\", \")}]`;\n}\nfunction pgInlineLiteral(wire, nativeType) {\n\tif (wire === null) return \"NULL\";\n\tif (typeof wire === \"boolean\") return wire ? \"true\" : \"false\";\n\tif (typeof wire === \"number\") {\n\t\tif (!Number.isFinite(wire)) throw adapterError(\"CONTRACT.DEFAULT_INVALID\", `pgRenderDdlExecuteRequest: non-finite number wire value ${String(wire)} cannot be emitted as a DEFAULT literal for native type \"${nativeType}\"`, { meta: { nativeType } });\n\t\treturn String(wire);\n\t}\n\tif (typeof wire === \"bigint\") return String(wire);\n\tif (wire instanceof Date) {\n\t\tif (Number.isNaN(wire.getTime())) throw adapterError(\"CONTRACT.DEFAULT_INVALID\", `pgRenderDdlExecuteRequest: invalid Date value cannot be emitted as a DEFAULT literal for native type \"${nativeType}\"`, { meta: { nativeType } });\n\t\tconst quoted = `'${escapeLiteral(wire.toISOString())}'`;\n\t\treturn pgIsTextLikeNativeType(nativeType) ? quoted : `${quoted}::${nativeType}`;\n\t}\n\tif (typeof wire === \"string\") {\n\t\tconst quoted = `'${escapeLiteral(wire)}'`;\n\t\treturn pgIsTextLikeNativeType(nativeType) ? quoted : `${quoted}::${nativeType}`;\n\t}\n\tif (wire instanceof Uint8Array) return `'\\\\x${Array.from(wire).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}'::${nativeType}`;\n\tif (Array.isArray(wire) && nativeType.endsWith(\"[]\")) return pgRenderArrayLiteral(wire);\n\tif (typeof wire === \"object\") return `${`'${escapeLiteral(JSON.stringify(wire))}'`}::${nativeType}`;\n\tthrow adapterError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `pgRenderDdlExecuteRequest: unexpected wire type \"${typeof wire}\" for native type \"${nativeType}\"`, { meta: {\n\t\twireType: typeof wire,\n\t\tnativeType\n\t} });\n}\nasync function pgRenderDdlColumnDefault(def, nativeType, codecLookup, codecRef) {\n\tif (def.kind === \"function\") {\n\t\tif (def.expression === \"autoincrement()\") return \"\";\n\t\treturn `DEFAULT (${def.expression})`;\n\t}\n\tif (codecRef !== void 0) {\n\t\tconst codec = codecLookup.get(codecRef.codecId);\n\t\tif (codec !== void 0) return `DEFAULT ${pgInlineLiteral(await codec.encode(def.value, {}), nativeType)}`;\n\t}\n\treturn `DEFAULT ${pgInlineLiteral(def.value, nativeType)}`;\n}\nasync function pgRenderDdlColumn(column, codecLookup) {\n\tconst parts = [quoteIdentifier(column.name), column.type];\n\tif (column.default) {\n\t\tconst clause = await pgRenderDdlColumnDefault(column.default, column.type, codecLookup, column.codecRef);\n\t\tif (clause.length > 0) parts.push(clause);\n\t}\n\tif (column.notNull) parts.push(\"NOT NULL\");\n\tif (column.primaryKey) parts.push(\"PRIMARY KEY\");\n\treturn parts.join(\" \");\n}\nfunction pgRenderDdlConstraint(constraint) {\n\tif (constraint.kind === \"primary-key\") {\n\t\tconst cols = constraint.columns.map(quoteIdentifier).join(\", \");\n\t\tif (constraint.name !== void 0) return `CONSTRAINT ${quoteIdentifier(constraint.name)} PRIMARY KEY (${cols})`;\n\t\treturn `PRIMARY KEY (${cols})`;\n\t}\n\tif (constraint.kind === \"foreign-key\") {\n\t\tlet sql = `FOREIGN KEY (${constraint.columns.map(quoteIdentifier).join(\", \")}) REFERENCES ${constraint.refTable.split(\".\").map(quoteIdentifier).join(\".\")} (${constraint.refColumns.map(quoteIdentifier).join(\", \")})`;\n\t\tif (constraint.onDelete !== void 0) sql += ` ON DELETE ${REFERENTIAL_ACTION_SQL[constraint.onDelete]}`;\n\t\tif (constraint.onUpdate !== void 0) sql += ` ON UPDATE ${REFERENTIAL_ACTION_SQL[constraint.onUpdate]}`;\n\t\tif (constraint.name !== void 0) sql = `CONSTRAINT ${quoteIdentifier(constraint.name)} ${sql}`;\n\t\treturn sql;\n\t}\n\tif (constraint.kind === \"check-expression\") return `CONSTRAINT ${quoteIdentifier(constraint.name)} CHECK (${constraint.expression})`;\n\tconst cols = constraint.columns.map(quoteIdentifier).join(\", \");\n\tif (constraint.name !== void 0) return `CONSTRAINT ${quoteIdentifier(constraint.name)} UNIQUE (${cols})`;\n\treturn `UNIQUE (${cols})`;\n}\nasync function pgRenderCreateTable(node, codecLookup) {\n\tconst ifNotExists = node.ifNotExists ? \"IF NOT EXISTS \" : \"\";\n\tconst tableRef = node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}` : quoteIdentifier(node.table);\n\tconst columnDefs = await Promise.all(node.columns.map((col) => pgRenderDdlColumn(col, codecLookup)));\n\tconst constraintDefs = node.constraints !== void 0 ? node.constraints.map(pgRenderDdlConstraint) : [];\n\treturn {\n\t\tsql: `CREATE TABLE ${ifNotExists}${tableRef} (\\n ${[...columnDefs, ...constraintDefs].join(\",\\n \")}\\n)`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderCreateSchema(node) {\n\treturn {\n\t\tsql: `CREATE SCHEMA ${node.ifNotExists ? \"IF NOT EXISTS \" : \"\"}${quoteIdentifier(node.schema)}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderCreateType(node) {\n\treturn {\n\t\tsql: `CREATE TYPE ${node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.name)}` : quoteIdentifier(node.name)} AS ENUM (${node.values.map((value) => `'${escapeLiteral(value)}'`).join(\", \")})`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDropType(node) {\n\treturn {\n\t\tsql: `DROP TYPE ${node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.name)}` : quoteIdentifier(node.name)}`,\n\t\tparams: []\n\t};\n}\nasync function pgRenderAlterTable(node, codecLookup) {\n\tconst tableRef = node.schema ? `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}` : quoteIdentifier(node.table);\n\tconst actionVisitor = {\n\t\tasync addColumn(action) {\n\t\t\treturn `ADD COLUMN ${await pgRenderDdlColumn(action.column, codecLookup)}`;\n\t\t},\n\t\tdropDefault(action) {\n\t\t\treturn Promise.resolve(`ALTER COLUMN ${quoteIdentifier(action.columnName)} DROP DEFAULT`);\n\t\t}\n\t};\n\treturn {\n\t\tsql: `ALTER TABLE ${tableRef} ${(await Promise.all(node.actions.map((a) => a.accept(actionVisitor)))).join(\", \")}`,\n\t\tparams: []\n\t};\n}\nconst POLICY_OPERATION_SQL = {\n\tselect: \"SELECT\",\n\tinsert: \"INSERT\",\n\tupdate: \"UPDATE\",\n\tdelete: \"DELETE\",\n\tall: \"ALL\"\n};\nfunction pgRenderCreatePolicy(node) {\n\tconst tableRef = `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`;\n\tconst permissiveness = node.permissive ? \"PERMISSIVE\" : \"RESTRICTIVE\";\n\tconst command = POLICY_OPERATION_SQL[node.operation];\n\tconst roles = node.roles.length === 0 ? \"PUBLIC\" : node.roles.join(\", \");\n\tlet sql = `CREATE POLICY ${quoteIdentifier(node.name)} ON ${tableRef} AS ${permissiveness} FOR ${command} TO ${roles}`;\n\tif (node.using !== void 0) sql += ` USING (${node.using})`;\n\tif (node.withCheck !== void 0) sql += ` WITH CHECK (${node.withCheck})`;\n\treturn {\n\t\tsql,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDropPolicy(node) {\n\tconst tableRef = `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`;\n\treturn {\n\t\tsql: `DROP POLICY ${quoteIdentifier(node.name)} ON ${tableRef}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderAlterPolicyRename(node) {\n\tconst tableRef = `${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`;\n\treturn {\n\t\tsql: `ALTER POLICY ${quoteIdentifier(node.name)} ON ${tableRef} RENAME TO ${quoteIdentifier(node.newName)}`,\n\t\tparams: []\n\t};\n}\n/**\n* Renders one index reloption value: strings single-quote-escaped, finite\n* numbers verbatim, booleans in the `on`/`off` catalog spelling (the\n* canonical form the wire hash and the option equality commit to).\n*/\nfunction pgRenderIndexOptionValue(key, value) {\n\tif (typeof value === \"string\") return `'${escapeLiteral(value)}'`;\n\tif (typeof value === \"number\" && Number.isFinite(value)) return String(value);\n\tif (typeof value === \"boolean\") return value ? \"on\" : \"off\";\n\tthrow postgresError(\"CONTRACT.INDEX_INVALID\", `Index option \"${key}\" must be a string, finite number, or boolean; got ${typeof value}`, { meta: {\n\t\tkey,\n\t\tvalueType: typeof value\n\t} });\n}\n/** Qualifies an object name; an absent schema renders it unqualified (unbound namespace). */\nfunction pgQualify(schema, name) {\n\treturn schema === void 0 ? quoteIdentifier(name) : `${quoteIdentifier(schema)}.${quoteIdentifier(name)}`;\n}\nfunction pgRenderCreateIndex(node) {\n\tconst elementList = \"columns\" in node.elements ? node.elements.columns.map(quoteIdentifier).join(\", \") : node.elements.expression;\n\tconst unique = node.unique ? \"UNIQUE \" : \"\";\n\tconst using = node.type !== void 0 ? ` USING ${quoteIdentifier(node.type)}` : \"\";\n\tconst withClause = node.options !== void 0 && Object.keys(node.options).length > 0 ? ` WITH (${Object.entries(node.options).map(([key, value]) => `${quoteIdentifier(key)} = ${pgRenderIndexOptionValue(key, value)}`).join(\", \")})` : \"\";\n\tconst whereClause = node.where !== void 0 ? ` WHERE (${node.where})` : \"\";\n\treturn {\n\t\tsql: `CREATE ${unique}INDEX ${quoteIdentifier(node.name)} ON ${pgQualify(node.schema, node.table)}${using} (${elementList})${withClause}${whereClause}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDropIndex(node) {\n\treturn {\n\t\tsql: `DROP INDEX ${pgQualify(node.schema, node.name)}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderAlterIndexRename(node) {\n\treturn {\n\t\tsql: `ALTER INDEX ${pgQualify(node.schema, node.from)} RENAME TO ${quoteIdentifier(node.to)}`,\n\t\tparams: []\n\t};\n}\nfunction pgRenderDisableRowLevelSecurity(node) {\n\treturn {\n\t\tsql: `ALTER TABLE ${`${quoteIdentifier(node.schema)}.${quoteIdentifier(node.table)}`} DISABLE ROW LEVEL SECURITY`,\n\t\tparams: []\n\t};\n}\nasync function pgRenderDdlExecuteRequest(ast, codecLookup) {\n\treturn ast.accept({\n\t\tcreateTable: (node) => pgRenderCreateTable(node, codecLookup),\n\t\tcreateSchema: (node) => Promise.resolve(pgRenderCreateSchema(node)),\n\t\tcreateType: (node) => Promise.resolve(pgRenderCreateType(node)),\n\t\tdropType: (node) => Promise.resolve(pgRenderDropType(node)),\n\t\talterTable: (node) => pgRenderAlterTable(node, codecLookup),\n\t\tcreatePolicy: (node) => Promise.resolve(pgRenderCreatePolicy(node)),\n\t\tdropPolicy: (node) => Promise.resolve(pgRenderDropPolicy(node)),\n\t\talterPolicyRename: (node) => Promise.resolve(pgRenderAlterPolicyRename(node)),\n\t\tcreateIndex: (node) => Promise.resolve(pgRenderCreateIndex(node)),\n\t\tdropIndex: (node) => Promise.resolve(pgRenderDropIndex(node)),\n\t\talterIndexRename: (node) => Promise.resolve(pgRenderAlterIndexRename(node)),\n\t\tdisableRowLevelSecurity: (node) => Promise.resolve(pgRenderDisableRowLevelSecurity(node))\n\t});\n}\n//#endregion\nexport { createPostgresCodecRegistryWithBuiltins as a, createPostgresBuiltinCodecLookup as i, renderLoweredSql as n, adapterError as o, assemblePostgresCodecRegistry as r, PostgresControlAdapter as t };\n\n//# sourceMappingURL=control-adapter-B9t0g7Pf.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"descriptor-meta-2IlVC6_d-DnV00Qd_.mjs","names":[],"sources":["../../../../3-targets/6-adapters/postgres/dist/descriptor-meta-2IlVC6_d.mjs"],"sourcesContent":["import { o as adapterError } from \"./control-adapter-B9t0g7Pf.mjs\";\nimport { postgresCodecRegistry } from \"@internal/target-postgres/codecs\";\nimport { PG_BIT_CODEC_ID, PG_BOOL_CODEC_ID, PG_BYTEA_CODEC_ID, PG_CHAR_CODEC_ID, PG_FLOAT4_CODEC_ID, PG_FLOAT8_CODEC_ID, PG_FLOAT_CODEC_ID, PG_INET_CODEC_ID, PG_INT2_CODEC_ID, PG_INT4_CODEC_ID, PG_INT8_CODEC_ID, PG_INTERVAL_CODEC_ID, PG_INT_CODEC_ID, PG_JSONB_CODEC_ID, PG_JSON_CODEC_ID, PG_NUMERIC_CODEC_ID, PG_TEXT_CODEC_ID, PG_TIMESTAMPTZ_CODEC_ID, PG_TIMESTAMP_CODEC_ID, PG_TIMETZ_CODEC_ID, PG_TIME_CODEC_ID, PG_UUID_CODEC_ID, PG_VARBIT_CODEC_ID, PG_VARCHAR_CODEC_ID, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID } from \"@internal/target-postgres/codec-ids\";\nimport { buildOperation, toExpr } from \"@internal/sql-relational-core/expression\";\n//#region src/core/descriptor-meta.ts\n/** Creates a type import spec for codec types */\nconst codecTypeImport = (named) => ({\n\tpackage: \"@internal/target-postgres/codec-types\",\n\tnamed,\n\talias: named\n});\nfunction isPositiveInteger(value) {\n\treturn typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value > 0;\n}\nfunction isNonNegativeInteger(value) {\n\treturn typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\nfunction expandLength({ nativeType, typeParams }) {\n\tif (!typeParams || !(\"length\" in typeParams)) return nativeType;\n\tconst length = typeParams[\"length\"];\n\tif (!isPositiveInteger(length)) throw adapterError(\"RUNTIME.TYPE_PARAMS_INVALID\", `Invalid \"length\" type parameter for \"${nativeType}\": expected a positive integer, got ${JSON.stringify(length)}`, { meta: {\n\t\tnativeType,\n\t\tparam: \"length\",\n\t\treceived: length\n\t} });\n\treturn `${nativeType}(${length})`;\n}\nfunction expandPrecision({ nativeType, typeParams }) {\n\tif (!typeParams || !(\"precision\" in typeParams)) return nativeType;\n\tconst precision = typeParams[\"precision\"];\n\tif (!isPositiveInteger(precision)) throw adapterError(\"RUNTIME.TYPE_PARAMS_INVALID\", `Invalid \"precision\" type parameter for \"${nativeType}\": expected a positive integer, got ${JSON.stringify(precision)}`, { meta: {\n\t\tnativeType,\n\t\tparam: \"precision\",\n\t\treceived: precision\n\t} });\n\treturn `${nativeType}(${precision})`;\n}\nfunction expandNumeric({ nativeType, typeParams }) {\n\tconst hasPrecision = typeParams && \"precision\" in typeParams;\n\tconst hasScale = typeParams && \"scale\" in typeParams;\n\tif (!hasPrecision && !hasScale) return nativeType;\n\tif (!hasPrecision && hasScale) throw adapterError(\"RUNTIME.TYPE_PARAMS_INVALID\", `Invalid type parameters for \"${nativeType}\": \"scale\" requires \"precision\" to be specified`, { meta: {\n\t\tnativeType,\n\t\tparam: \"scale\"\n\t} });\n\tif (hasPrecision) {\n\t\tconst precision = typeParams[\"precision\"];\n\t\tif (!isPositiveInteger(precision)) throw adapterError(\"RUNTIME.TYPE_PARAMS_INVALID\", `Invalid \"precision\" type parameter for \"${nativeType}\": expected a positive integer, got ${JSON.stringify(precision)}`, { meta: {\n\t\t\tnativeType,\n\t\t\tparam: \"precision\",\n\t\t\treceived: precision\n\t\t} });\n\t\tif (hasScale) {\n\t\t\tconst scale = typeParams[\"scale\"];\n\t\t\tif (!isNonNegativeInteger(scale)) throw adapterError(\"RUNTIME.TYPE_PARAMS_INVALID\", `Invalid \"scale\" type parameter for \"${nativeType}\": expected a non-negative integer, got ${JSON.stringify(scale)}`, { meta: {\n\t\t\t\tnativeType,\n\t\t\t\tparam: \"scale\",\n\t\t\t\treceived: scale\n\t\t\t} });\n\t\t\treturn `${nativeType}(${precision},${scale})`;\n\t\t}\n\t\treturn `${nativeType}(${precision})`;\n\t}\n\treturn nativeType;\n}\nconst lengthHooks = { expandNativeType: expandLength };\nconst precisionHooks = { expandNativeType: expandPrecision };\nconst numericHooks = { expandNativeType: expandNumeric };\nconst identityHooks = { expandNativeType: ({ nativeType }) => nativeType };\nfunction postgresQueryOperations() {\n\treturn { ilike: {\n\t\tself: { traits: [\"textual\"] },\n\t\timpl: (self, pattern) => {\n\t\t\treturn buildOperation({\n\t\t\t\tmethod: \"ilike\",\n\t\t\t\targs: [toExpr(self), toExpr(pattern, { codecId: PG_TEXT_CODEC_ID })],\n\t\t\t\treturns: {\n\t\t\t\t\tcodecId: PG_BOOL_CODEC_ID,\n\t\t\t\t\tnullable: false\n\t\t\t\t},\n\t\t\t\tlowering: {\n\t\t\t\t\ttargetFamily: \"sql\",\n\t\t\t\t\tstrategy: \"infix\",\n\t\t\t\t\ttemplate: \"{{self}} ILIKE {{arg0}}\"\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} };\n}\nconst postgresAdapterDescriptorMeta = {\n\tkind: \"adapter\",\n\tfamilyId: \"sql\",\n\ttargetId: \"postgres\",\n\tid: \"postgres\",\n\tversion: \"0.0.1\",\n\tcapabilities: {\n\t\tpostgres: {\n\t\t\torderBy: true,\n\t\t\tlimit: true,\n\t\t\tlateral: true,\n\t\t\tjsonAgg: true,\n\t\t\treturning: true,\n\t\t\tdistinctOn: true\n\t\t},\n\t\tsql: {\n\t\t\tenums: true,\n\t\t\treturning: true,\n\t\t\tdefaultInInsert: true,\n\t\t\tlateral: true,\n\t\t\tscalarList: true\n\t\t}\n\t},\n\ttypes: {\n\t\tcodecTypes: {\n\t\t\tcodecDescriptors: Array.from(postgresCodecRegistry.values()),\n\t\t\timport: {\n\t\t\t\tpackage: \"@internal/target-postgres/codec-types\",\n\t\t\t\tnamed: \"CodecTypes\",\n\t\t\t\talias: \"PgTypes\"\n\t\t\t},\n\t\t\ttypeImports: [\n\t\t\t\t{\n\t\t\t\t\tpackage: \"@internal/target-postgres/codec-types\",\n\t\t\t\t\tnamed: \"JsonValue\",\n\t\t\t\t\talias: \"JsonValue\"\n\t\t\t\t},\n\t\t\t\tcodecTypeImport(\"Char\"),\n\t\t\t\tcodecTypeImport(\"Varchar\"),\n\t\t\t\tcodecTypeImport(\"Numeric\"),\n\t\t\t\tcodecTypeImport(\"Bit\"),\n\t\t\t\tcodecTypeImport(\"VarBit\"),\n\t\t\t\tcodecTypeImport(\"Timestamp\"),\n\t\t\t\tcodecTypeImport(\"Timestamptz\"),\n\t\t\t\tcodecTypeImport(\"Time\"),\n\t\t\t\tcodecTypeImport(\"Timetz\"),\n\t\t\t\tcodecTypeImport(\"Interval\")\n\t\t\t],\n\t\t\tcontrolPlaneHooks: {\n\t\t\t\t[SQL_CHAR_CODEC_ID]: lengthHooks,\n\t\t\t\t[SQL_VARCHAR_CODEC_ID]: lengthHooks,\n\t\t\t\t[SQL_TIMESTAMP_CODEC_ID]: precisionHooks,\n\t\t\t\t[PG_CHAR_CODEC_ID]: lengthHooks,\n\t\t\t\t[PG_VARCHAR_CODEC_ID]: lengthHooks,\n\t\t\t\t[PG_NUMERIC_CODEC_ID]: numericHooks,\n\t\t\t\t[PG_BIT_CODEC_ID]: lengthHooks,\n\t\t\t\t[PG_VARBIT_CODEC_ID]: lengthHooks,\n\t\t\t\t[PG_TIMESTAMP_CODEC_ID]: precisionHooks,\n\t\t\t\t[PG_TIMESTAMPTZ_CODEC_ID]: precisionHooks,\n\t\t\t\t[PG_TIME_CODEC_ID]: precisionHooks,\n\t\t\t\t[PG_TIMETZ_CODEC_ID]: precisionHooks,\n\t\t\t\t[PG_INTERVAL_CODEC_ID]: precisionHooks,\n\t\t\t\t[PG_JSON_CODEC_ID]: identityHooks,\n\t\t\t\t[PG_JSONB_CODEC_ID]: identityHooks,\n\t\t\t\t[PG_BYTEA_CODEC_ID]: identityHooks,\n\t\t\t\t[PG_UUID_CODEC_ID]: identityHooks,\n\t\t\t\t[PG_INET_CODEC_ID]: identityHooks\n\t\t\t}\n\t\t},\n\t\tstorage: [\n\t\t\t{\n\t\t\t\ttypeId: PG_TEXT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"text\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: SQL_TEXT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"text\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: SQL_CHAR_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"character\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: SQL_VARCHAR_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"character varying\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: SQL_INT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"int4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: SQL_FLOAT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"float8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: SQL_TIMESTAMP_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"timestamp\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_CHAR_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"character\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_VARCHAR_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"character varying\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_INT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"int4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_FLOAT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"float8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_INT4_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"int4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_INT2_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"int2\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_INT8_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"int8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_FLOAT4_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"float4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_FLOAT8_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"float8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_NUMERIC_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"numeric\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_TIMESTAMP_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"timestamp\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_TIMESTAMPTZ_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"timestamptz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_TIME_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"time\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_TIMETZ_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"timetz\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_BOOL_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"bool\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_BIT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"bit\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_VARBIT_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"bit varying\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_INTERVAL_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"interval\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_JSON_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"json\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_JSONB_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"jsonb\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_BYTEA_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"bytea\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_UUID_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"uuid\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttypeId: PG_INET_CODEC_ID,\n\t\t\t\tfamilyId: \"sql\",\n\t\t\t\ttargetId: \"postgres\",\n\t\t\t\tnativeType: \"inet\"\n\t\t\t}\n\t\t],\n\t\tqueryOperationTypes: { import: {\n\t\t\tpackage: \"@internal/adapter-postgres/operation-types\",\n\t\t\tnamed: \"QueryOperationTypes\",\n\t\t\talias: \"PgAdapterQueryOps\"\n\t\t} }\n\t}\n};\n//#endregion\nexport { postgresQueryOperations as n, postgresAdapterDescriptorMeta as t };\n\n//# sourceMappingURL=descriptor-meta-2IlVC6_d.mjs.map"],"mappings":"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GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;GACA;IACC,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;GACb;EACD;EACA,qBAAqB,EAAE,QAAQ;GAC9B,SAAS;GACT,OAAO;GACP,OAAO;EACR,EAAE;CACH;AACD"}