{"version":3,"file":"descriptor-meta-BIbTL9mR.mjs","names":["arktype"],"sources":["../src/core/authoring.ts","../src/core/ewkb.ts","../src/core/codecs.ts","../src/core/registry.ts","../src/core/descriptor-meta.ts"],"sourcesContent":["import type { AuthoringTypeNamespace } from '@prisma-next/framework-components/authoring';\nimport { POSTGIS_GEOMETRY_CODEC_ID } from './constants';\n\nexport const postgisAuthoringTypes = {\n  postgis: {\n    Geometry: {\n      kind: 'typeConstructor',\n      args: [{ kind: 'number', name: 'srid', integer: true, minimum: 0 }],\n      output: {\n        codecId: POSTGIS_GEOMETRY_CODEC_ID,\n        nativeType: 'geometry',\n        typeParams: {\n          srid: { kind: 'arg', index: 0 },\n        },\n      },\n    },\n  },\n} as const satisfies AuthoringTypeNamespace;\n","/**\n * Minimal EWKB (Extended Well-Known Binary) reader for the PostGIS codec.\n *\n * `node-postgres` returns geometry columns as hex-encoded EWKB strings by\n * default. This reader parses the subset we ship with the extension —\n * Point, LineString, Polygon, and the Multi* counterparts — into GeoJSON\n * objects. Z and M coordinates are not supported; if a wire value carries\n * them, decoding throws so the caller can detect the mismatch instead of\n * silently dropping data.\n */\n\nimport type {\n  Geometry,\n  GeometryLineString,\n  GeometryMultiLineString,\n  GeometryMultiPoint,\n  GeometryMultiPolygon,\n  GeometryPoint,\n  GeometryPolygon,\n  Position,\n} from './geojson';\n\nconst FLAG_Z = 0x80000000;\nconst FLAG_M = 0x40000000;\nconst FLAG_SRID = 0x20000000;\nconst TYPE_MASK = 0x1fffffff;\n\nconst TYPE_POINT = 1;\nconst TYPE_LINESTRING = 2;\nconst TYPE_POLYGON = 3;\nconst TYPE_MULTIPOINT = 4;\nconst TYPE_MULTILINESTRING = 5;\nconst TYPE_MULTIPOLYGON = 6;\n\nconst HEX_PAIR_RE = /^[0-9a-fA-F]{2}$/;\n\nfunction hexToBytes(hex: string): Uint8Array {\n  if (hex.length % 2 !== 0) {\n    throw new Error('Geometry wire value: odd-length hex string');\n  }\n  const bytes = new Uint8Array(hex.length / 2);\n  for (let i = 0; i < bytes.length; i++) {\n    const pair = hex.slice(i * 2, i * 2 + 2);\n    if (!HEX_PAIR_RE.test(pair)) {\n      throw new Error(`Geometry wire value: invalid hex byte at offset ${i * 2}`);\n    }\n    bytes[i] = Number.parseInt(pair, 16);\n  }\n  return bytes;\n}\n\nclass Reader {\n  private offset = 0;\n  private readonly view: DataView;\n\n  constructor(bytes: Uint8Array) {\n    this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n  }\n\n  private requireBytes(needed: number): void {\n    if (this.offset + needed > this.view.byteLength) {\n      throw new Error(\n        `Geometry wire value: unexpected end of buffer (need ${needed} bytes at offset ${this.offset}, ${this.view.byteLength - this.offset} available)`,\n      );\n    }\n  }\n\n  readUint8(): number {\n    this.requireBytes(1);\n    const v = this.view.getUint8(this.offset);\n    this.offset += 1;\n    return v;\n  }\n\n  readUint32(littleEndian: boolean): number {\n    this.requireBytes(4);\n    const v = this.view.getUint32(this.offset, littleEndian);\n    this.offset += 4;\n    return v >>> 0;\n  }\n\n  readFloat64(littleEndian: boolean): number {\n    this.requireBytes(8);\n    const v = this.view.getFloat64(this.offset, littleEndian);\n    this.offset += 8;\n    return v;\n  }\n\n  hasRemaining(): boolean {\n    return this.offset !== this.view.byteLength;\n  }\n\n  remainingBytes(): number {\n    return this.view.byteLength - this.offset;\n  }\n}\n\nclass Writer {\n  private readonly bytes: number[] = [];\n\n  writeUint8(value: number): void {\n    this.bytes.push(value);\n  }\n\n  writeUint32(value: number): void {\n    const buffer = new ArrayBuffer(4);\n    new DataView(buffer).setUint32(0, value, true);\n    this.bytes.push(...new Uint8Array(buffer));\n  }\n\n  writeFloat64(value: number): void {\n    const buffer = new ArrayBuffer(8);\n    new DataView(buffer).setFloat64(0, value, true);\n    this.bytes.push(...new Uint8Array(buffer));\n  }\n\n  toHex(): string {\n    return this.bytes\n      .map((byte) => byte.toString(16).padStart(2, '0'))\n      .join('')\n      .toUpperCase();\n  }\n}\n\ntype Header = {\n  readonly geomType: number;\n  readonly littleEndian: boolean;\n  readonly srid?: number;\n};\n\nfunction readHeader(reader: Reader): Header {\n  const byteOrder = reader.readUint8();\n  if (byteOrder !== 0 && byteOrder !== 1) {\n    throw new Error(`Geometry wire value: invalid byte order ${byteOrder}`);\n  }\n  const littleEndian = byteOrder === 1;\n  const typeCode = reader.readUint32(littleEndian);\n  if ((typeCode & FLAG_Z) !== 0 || (typeCode & FLAG_M) !== 0) {\n    throw new Error('Geometry wire value: Z/M coordinates are not supported');\n  }\n  const geomType = typeCode & TYPE_MASK;\n  if ((typeCode & FLAG_SRID) !== 0) {\n    return { geomType, littleEndian, srid: reader.readUint32(littleEndian) };\n  }\n  return { geomType, littleEndian };\n}\n\nfunction readPosition(reader: Reader, littleEndian: boolean): Position {\n  const x = reader.readFloat64(littleEndian);\n  const y = reader.readFloat64(littleEndian);\n  return [x, y];\n}\n\nfunction readPoint(reader: Reader, header: Header): GeometryPoint {\n  const coords = readPosition(reader, header.littleEndian);\n  return header.srid !== undefined\n    ? { type: 'Point', coordinates: coords, srid: header.srid }\n    : { type: 'Point', coordinates: coords };\n}\n\nfunction readLineString(reader: Reader, header: Header): GeometryLineString {\n  const n = reader.readUint32(header.littleEndian);\n  const coords: Position[] = [];\n  for (let i = 0; i < n; i++) coords.push(readPosition(reader, header.littleEndian));\n  return header.srid !== undefined\n    ? { type: 'LineString', coordinates: coords, srid: header.srid }\n    : { type: 'LineString', coordinates: coords };\n}\n\nfunction readPolygon(reader: Reader, header: Header): GeometryPolygon {\n  const numRings = reader.readUint32(header.littleEndian);\n  const rings: Position[][] = [];\n  for (let r = 0; r < numRings; r++) {\n    const n = reader.readUint32(header.littleEndian);\n    const ring: Position[] = [];\n    for (let i = 0; i < n; i++) ring.push(readPosition(reader, header.littleEndian));\n    rings.push(ring);\n  }\n  return header.srid !== undefined\n    ? { type: 'Polygon', coordinates: rings, srid: header.srid }\n    : { type: 'Polygon', coordinates: rings };\n}\n\nfunction readSubGeometry(reader: Reader): Geometry {\n  // Multi* geometries embed sub-WKB records; each carries its own header.\n  const header = readHeader(reader);\n  switch (header.geomType) {\n    case TYPE_POINT:\n      return readPoint(reader, header);\n    case TYPE_LINESTRING:\n      return readLineString(reader, header);\n    case TYPE_POLYGON:\n      return readPolygon(reader, header);\n    default:\n      throw new Error(`Geometry wire value: unsupported sub-type ${header.geomType}`);\n  }\n}\n\nfunction readMultiPoint(reader: Reader, header: Header): GeometryMultiPoint {\n  const n = reader.readUint32(header.littleEndian);\n  const coords: Position[] = [];\n  for (let i = 0; i < n; i++) {\n    const sub = readSubGeometry(reader);\n    if (sub.type !== 'Point') {\n      throw new Error('Geometry wire value: MultiPoint contains non-Point sub-geometry');\n    }\n    coords.push(sub.coordinates);\n  }\n  return header.srid !== undefined\n    ? { type: 'MultiPoint', coordinates: coords, srid: header.srid }\n    : { type: 'MultiPoint', coordinates: coords };\n}\n\nfunction readMultiLineString(reader: Reader, header: Header): GeometryMultiLineString {\n  const n = reader.readUint32(header.littleEndian);\n  const lines: ReadonlyArray<Position>[] = [];\n  for (let i = 0; i < n; i++) {\n    const sub = readSubGeometry(reader);\n    if (sub.type !== 'LineString') {\n      throw new Error('Geometry wire value: MultiLineString contains non-LineString sub-geometry');\n    }\n    lines.push(sub.coordinates);\n  }\n  return header.srid !== undefined\n    ? { type: 'MultiLineString', coordinates: lines, srid: header.srid }\n    : { type: 'MultiLineString', coordinates: lines };\n}\n\nfunction readMultiPolygon(reader: Reader, header: Header): GeometryMultiPolygon {\n  const n = reader.readUint32(header.littleEndian);\n  const polys: ReadonlyArray<ReadonlyArray<Position>>[] = [];\n  for (let i = 0; i < n; i++) {\n    const sub = readSubGeometry(reader);\n    if (sub.type !== 'Polygon') {\n      throw new Error('Geometry wire value: MultiPolygon contains non-Polygon sub-geometry');\n    }\n    polys.push(sub.coordinates);\n  }\n  return header.srid !== undefined\n    ? { type: 'MultiPolygon', coordinates: polys, srid: header.srid }\n    : { type: 'MultiPolygon', coordinates: polys };\n}\n\nexport function decodeEWKBHex(hex: string): Geometry {\n  const reader = new Reader(hexToBytes(hex));\n  const header = readHeader(reader);\n  const geometry = readGeometryBody(reader, header);\n  if (reader.hasRemaining()) {\n    throw new Error(\n      `Geometry wire value: trailing data after geometry (${reader.remainingBytes()} bytes)`,\n    );\n  }\n  return geometry;\n}\n\nexport function encodeEWKBHex(value: Geometry): string {\n  const writer = new Writer();\n  writeGeometry(writer, value);\n  return writer.toHex();\n}\n\nfunction writeHeader(writer: Writer, geomType: number, srid?: number): void {\n  writer.writeUint8(1);\n  writer.writeUint32(srid === undefined ? geomType : geomType | FLAG_SRID);\n  if (srid !== undefined) {\n    writer.writeUint32(srid);\n  }\n}\n\nfunction writePosition(writer: Writer, position: Position): void {\n  if (!Number.isFinite(position[0]) || !Number.isFinite(position[1])) {\n    throw new Error('Geometry encode: coordinates must be finite numbers');\n  }\n  writer.writeFloat64(position[0]);\n  writer.writeFloat64(position[1]);\n}\n\nfunction writeLineStringBody(writer: Writer, positions: ReadonlyArray<Position>): void {\n  writer.writeUint32(positions.length);\n  for (const position of positions) {\n    writePosition(writer, position);\n  }\n}\n\nfunction writePolygonBody(writer: Writer, rings: ReadonlyArray<ReadonlyArray<Position>>): void {\n  writer.writeUint32(rings.length);\n  for (const ring of rings) {\n    writeLineStringBody(writer, ring);\n  }\n}\n\nfunction writeGeometry(writer: Writer, value: Geometry): void {\n  switch (value.type) {\n    case 'Point':\n      writeHeader(writer, TYPE_POINT, value.srid);\n      writePosition(writer, value.coordinates);\n      break;\n    case 'LineString':\n      writeHeader(writer, TYPE_LINESTRING, value.srid);\n      writeLineStringBody(writer, value.coordinates);\n      break;\n    case 'Polygon':\n      writeHeader(writer, TYPE_POLYGON, value.srid);\n      writePolygonBody(writer, value.coordinates);\n      break;\n    case 'MultiPoint':\n      writeHeader(writer, TYPE_MULTIPOINT, value.srid);\n      writer.writeUint32(value.coordinates.length);\n      for (const position of value.coordinates) {\n        writeHeader(writer, TYPE_POINT);\n        writePosition(writer, position);\n      }\n      break;\n    case 'MultiLineString':\n      writeHeader(writer, TYPE_MULTILINESTRING, value.srid);\n      writer.writeUint32(value.coordinates.length);\n      for (const line of value.coordinates) {\n        writeHeader(writer, TYPE_LINESTRING);\n        writeLineStringBody(writer, line);\n      }\n      break;\n    case 'MultiPolygon':\n      writeHeader(writer, TYPE_MULTIPOLYGON, value.srid);\n      writer.writeUint32(value.coordinates.length);\n      for (const polygon of value.coordinates) {\n        writeHeader(writer, TYPE_POLYGON);\n        writePolygonBody(writer, polygon);\n      }\n      break;\n  }\n}\n\nfunction readGeometryBody(reader: Reader, header: Header): Geometry {\n  switch (header.geomType) {\n    case TYPE_POINT:\n      return readPoint(reader, header);\n    case TYPE_LINESTRING:\n      return readLineString(reader, header);\n    case TYPE_POLYGON:\n      return readPolygon(reader, header);\n    case TYPE_MULTIPOINT:\n      return readMultiPoint(reader, header);\n    case TYPE_MULTILINESTRING:\n      return readMultiLineString(reader, header);\n    case TYPE_MULTIPOLYGON:\n      return readMultiPolygon(reader, header);\n    default:\n      throw new Error(`Geometry wire value: unsupported geometry type ${header.geomType}`);\n  }\n}\n\n/**\n * Encode a GeoJSON-shaped geometry to an EWKT string PostGIS understands\n * via `'<ewkt>'::geometry`. We use EWKT (not EWKB) on the way in so the\n * generated SQL stays human-readable.\n */\nexport function encodeEWKT(value: Geometry): string {\n  const sridPrefix = value.srid !== undefined ? `SRID=${value.srid};` : '';\n  switch (value.type) {\n    case 'Point':\n      return `${sridPrefix}POINT(${formatPosition(value.coordinates)})`;\n    case 'LineString':\n      return `${sridPrefix}LINESTRING(${value.coordinates.map(formatPosition).join(',')})`;\n    case 'Polygon':\n      return `${sridPrefix}POLYGON(${formatRings(value.coordinates)})`;\n    case 'MultiPoint':\n      return `${sridPrefix}MULTIPOINT(${value.coordinates.map(formatPosition).join(',')})`;\n    case 'MultiLineString':\n      return `${sridPrefix}MULTILINESTRING(${value.coordinates\n        .map((line) => `(${line.map(formatPosition).join(',')})`)\n        .join(',')})`;\n    case 'MultiPolygon':\n      return `${sridPrefix}MULTIPOLYGON(${value.coordinates\n        .map((poly) => `(${formatRings(poly)})`)\n        .join(',')})`;\n  }\n}\n\nfunction formatPosition(p: Position): string {\n  if (!Number.isFinite(p[0]) || !Number.isFinite(p[1])) {\n    throw new Error('Geometry encode: coordinates must be finite numbers');\n  }\n  return `${p[0]} ${p[1]}`;\n}\n\nfunction formatRings(rings: ReadonlyArray<ReadonlyArray<Position>>): string {\n  return rings.map((ring) => `(${ring.map(formatPosition).join(',')})`).join(',');\n}\n","/**\n * Geometry codec for the PostGIS extension.\n *\n * Mirrors the descriptor + class pattern used by other codec-shipping\n * packages (e.g. pgvector). Three artefacts:\n *\n * 1. `PostgisGeometryCodec` extends {@link CodecImpl} with the runtime\n *    encode/decode conversions. Wire formats:\n *    - encode: EWKT (`'SRID=4326;POINT(...)'`) — PostgreSQL parses\n *      this when cast to `::geometry`.\n *    - decode: hex EWKB — the default representation `node-postgres`\n *      hands back for `geometry` columns. We parse it into a\n *      GeoJSON-shaped object so callers see structured data, not\n *      opaque hex.\n * 2. `PostgisGeometryDescriptor` extends {@link CodecDescriptorImpl}\n *    with the codec id, traits, target types, params schema\n *    (`{ srid: number }`, validated as a non-negative integer), and\n *    the emit-path `renderOutputType` producing `Geometry<${srid}>` /\n *    `Geometry` when no SRID is supplied.\n * 3. `pgGeometryColumn({ srid })` per-codec column helper invoking\n *    `descriptor.factory({ srid })` and passing the bare\n *    `nativeType: 'geometry'`. The family-layer `expandNativeType`\n *    hook renders the parameterised form\n *    (`geometry(Geometry,${srid})`) at emit/verify time from\n *    `nativeType` + `typeParams`.\n *\n * The geometry codec's encode/decode is parameter-independent — the\n * wire format already carries SRID inside the EWKT/EWKB payload, so the\n * resolved codec for every `(srid)` instance is the same shared codec\n * today. The factory threads the closure for future per-instance state\n * (e.g. SRID cross-checks) without rewriting the constructor.\n */\n\nimport type { JsonValue } from '@prisma-next/contract/types';\nimport {\n  type AnyCodecDescriptor,\n  type CodecCallContext,\n  CodecDescriptorImpl,\n  CodecImpl,\n  type CodecInstanceContext,\n  type ColumnHelperFor,\n  type ColumnHelperForStrict,\n  column,\n} from '@prisma-next/framework-components/codec';\nimport type { ExtractCodecTypes } from '@prisma-next/sql-relational-core/ast';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type as arktype } from 'arktype';\nimport { POSTGIS_GEOMETRY_CODEC_ID } from './constants';\nimport { decodeEWKBHex, encodeEWKBHex, encodeEWKT } from './ewkb';\nimport type { Geometry } from './geojson';\n\ntype GeometryParams = { readonly srid: number };\n\nconst geometryParamsSchema = arktype({\n  srid: 'number',\n}).narrow((params, ctx) => {\n  const { srid } = params;\n  if (!Number.isInteger(srid)) {\n    return ctx.mustBe('an integer');\n  }\n  if (srid < 0) {\n    return ctx.mustBe('a non-negative integer');\n  }\n  return true;\n}) satisfies StandardSchemaV1<GeometryParams>;\n\nconst POSTGIS_GEOMETRY_META = {\n  db: { sql: { postgres: { nativeType: 'geometry' } } },\n} as const;\n\nconst allowedGeometryTypes = new Set([\n  'Point',\n  'LineString',\n  'Polygon',\n  'MultiPoint',\n  'MultiLineString',\n  'MultiPolygon',\n]);\n\nfunction assertGeometry(value: unknown): asserts value is Geometry {\n  if (!value || typeof value !== 'object') {\n    throw new Error('Geometry value must be a GeoJSON-shaped object');\n  }\n  const type = (value as { type?: unknown }).type;\n  if (typeof type !== 'string' || !allowedGeometryTypes.has(type)) {\n    throw new Error(\n      `Geometry value: unsupported type \"${String(type)}\" (expected Point, LineString, Polygon, MultiPoint, MultiLineString, or MultiPolygon)`,\n    );\n  }\n  if (!Array.isArray((value as { coordinates?: unknown }).coordinates)) {\n    throw new Error('Geometry value: \"coordinates\" must be an array');\n  }\n}\n\nexport class PostgisGeometryCodec extends CodecImpl<\n  typeof POSTGIS_GEOMETRY_CODEC_ID,\n  readonly ['equality'],\n  string,\n  Geometry\n> {\n  constructor(descriptor: AnyCodecDescriptor) {\n    super(descriptor);\n  }\n\n  async encode(value: Geometry, _ctx: CodecCallContext): Promise<string> {\n    assertGeometry(value);\n    return encodeEWKT(value);\n  }\n\n  async decode(wire: string, _ctx: CodecCallContext): Promise<Geometry> {\n    if (typeof wire !== 'string') {\n      throw new Error('Geometry wire value must be a string');\n    }\n    return decodeEWKBHex(wire);\n  }\n\n  encodeJson(value: Geometry): JsonValue {\n    assertGeometry(value);\n    return encodeEWKBHex(value);\n  }\n\n  decodeJson(json: JsonValue): Geometry {\n    if (typeof json !== 'string') {\n      throw new Error('Geometry database JSON value must be a HEXEWKB string');\n    }\n    return decodeEWKBHex(json);\n  }\n}\n\nexport class PostgisGeometryDescriptor extends CodecDescriptorImpl<GeometryParams> {\n  override readonly codecId = POSTGIS_GEOMETRY_CODEC_ID;\n  override readonly traits = ['equality'] as const;\n  override readonly targetTypes = ['geometry'] as const;\n  override readonly meta = POSTGIS_GEOMETRY_META;\n  override readonly paramsSchema: StandardSchemaV1<GeometryParams> = geometryParamsSchema;\n  override renderOutputType(params: GeometryParams): string {\n    const srid = (params as GeometryParams | undefined)?.srid;\n    if (srid === undefined) return 'Geometry';\n    return `Geometry<${srid}>`;\n  }\n  /**\n   * The runtime calls `factory(undefined)(ctx)` to materialize a\n   * representative codec for parameterised descriptors that ship a\n   * no-params column variant (here, `geometryColumn` vs `geometry({ srid })`).\n   * The runtime cast widens `params` to `unknown`, so guarding with an\n   * optional read keeps the typed call site (`factory({ srid })`)\n   * strict while still producing an SRID-agnostic codec for\n   * representative use. Encode/decode for an unparameterised column\n   * runs through this representative; the wire format already carries\n   * SRID inside the EWKT/EWKB payload, so it's dimension-independent.\n   */\n  override factory(_params: GeometryParams): (ctx: CodecInstanceContext) => PostgisGeometryCodec {\n    return () => new PostgisGeometryCodec(this);\n  }\n}\n\nexport const postgisGeometryDescriptor = new PostgisGeometryDescriptor();\n\n/**\n * Per-codec column helper for `pg/geometry@1` with an SRID constraint.\n *\n * Generic over `S extends number` so the column site preserves the\n * SRID literal in `typeParams` (e.g. `pgGeometryColumn({ srid: 4326 })`\n * packs `typeParams: { srid: 4326 }`).\n *\n * Passes the bare `nativeType: 'geometry'`; the family-layer\n * `expandNativeType` hook renders the parameterised form\n * (`geometry(Geometry,${srid})`) at emit/verify time from `nativeType`\n * + `typeParams`.\n *\n * @throws {RangeError} If `srid` is not a non-negative integer.\n */\nexport const pgGeometryColumn = <S extends number>(options: { readonly srid: S }) => {\n  const { srid } = options;\n  if (!Number.isInteger(srid) || srid < 0) {\n    throw new RangeError(`postgis: srid must be a non-negative integer, got ${srid}`);\n  }\n  return column(\n    postgisGeometryDescriptor.factory({ srid }),\n    postgisGeometryDescriptor.codecId,\n    { srid },\n    'geometry',\n  );\n};\n\npgGeometryColumn satisfies ColumnHelperFor<PostgisGeometryDescriptor>;\npgGeometryColumn satisfies ColumnHelperForStrict<PostgisGeometryDescriptor>;\n\nconst codecDescriptorMap = {\n  geometry: postgisGeometryDescriptor,\n} as const;\n\nexport type CodecTypes = ExtractCodecTypes<typeof codecDescriptorMap>;\n\nexport const codecDescriptors: readonly AnyCodecDescriptor[] = Object.values(codecDescriptorMap);\n","import { buildCodecDescriptorRegistry } from '@prisma-next/sql-relational-core/codec-descriptor-registry';\nimport type { CodecDescriptorRegistry } from '@prisma-next/sql-relational-core/query-lane-context';\nimport { codecDescriptors } from './codecs';\n\n/**\n * Registry of every codec descriptor shipped by `@prisma-next/extension-postgis`.\n *\n * Public consumer surface for the postgis codec set. Currently a single\n * entry (`pg/geometry@1`); the registry shape stays consistent with\n * the other codec-shipping packages so consumers don't need to\n * special-case extensions.\n */\nexport const postgisCodecRegistry: CodecDescriptorRegistry =\n  buildCodecDescriptorRegistry(codecDescriptors);\n","import { buildOperation, codecOf, toExpr } from '@prisma-next/sql-relational-core/expression';\nimport type { CodecTypes } from '../types/codec-types';\nimport type { QueryOperationTypes } from '../types/operation-types';\nimport { postgisAuthoringTypes } from './authoring';\nimport { postgisCodecRegistry } from './registry';\n\nconst postgisTypeId = 'pg/geometry@1' as const;\n\ntype CodecTypesBase = Record<string, { readonly input: unknown; readonly output: unknown }>;\n\n/**\n * Build the PostGIS query operations exposed on `geometry` columns.\n *\n * Each operation lowers to a function-template that the SQL renderer\n * stitches into the surrounding statement (`{{self}}` is the receiver,\n * `{{argN}}` are the call arguments). All templates rely on the implicit\n * `geometry`/`float8`/`bool` casts already wired up by the SQL family —\n * we only add the PostGIS-specific function names.\n */\nexport function postgisQueryOperations<CT extends CodecTypesBase>(): QueryOperationTypes<CT> {\n  return {\n    distance: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'distance',\n          args: [toExpr(self, selfCodec), toExpr(other, selfCodec)],\n          returns: { codecId: 'pg/float8@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: 'ST_Distance({{self}}, {{arg0}})',\n          },\n        });\n      },\n    },\n    distanceSphere: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'distanceSphere',\n          args: [toExpr(self, selfCodec), toExpr(other, selfCodec)],\n          returns: { codecId: 'pg/float8@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: 'ST_DistanceSphere({{self}}, {{arg0}})',\n          },\n        });\n      },\n    },\n    dwithin: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other, distance) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'dwithin',\n          args: [\n            toExpr(self, selfCodec),\n            toExpr(other, selfCodec),\n            toExpr(distance, { codecId: 'pg/float8@1' }),\n          ],\n          returns: { codecId: 'pg/bool@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: 'ST_DWithin({{self}}, {{arg0}}, {{arg1}})',\n          },\n        });\n      },\n    },\n    contains: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'contains',\n          args: [toExpr(self, selfCodec), toExpr(other, selfCodec)],\n          returns: { codecId: 'pg/bool@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: 'ST_Contains({{self}}, {{arg0}})',\n          },\n        });\n      },\n    },\n    within: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'within',\n          args: [toExpr(self, selfCodec), toExpr(other, selfCodec)],\n          returns: { codecId: 'pg/bool@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: 'ST_Within({{self}}, {{arg0}})',\n          },\n        });\n      },\n    },\n    intersects: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'intersects',\n          args: [toExpr(self, selfCodec), toExpr(other, selfCodec)],\n          returns: { codecId: 'pg/bool@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: 'ST_Intersects({{self}}, {{arg0}})',\n          },\n        });\n      },\n    },\n    intersectsBbox: {\n      self: { codecId: postgisTypeId },\n      impl: (self, other) => {\n        const selfCodec = codecOf(self);\n        return buildOperation({\n          method: 'intersectsBbox',\n          args: [toExpr(self, selfCodec), toExpr(other, selfCodec)],\n          returns: { codecId: 'pg/bool@1', nullable: false },\n          lowering: {\n            targetFamily: 'sql',\n            strategy: 'function',\n            template: '({{self}} && {{arg0}})',\n          },\n        });\n      },\n    },\n  };\n}\n\nconst postgisPackMetaBase = {\n  kind: 'extension',\n  id: 'postgis',\n  familyId: 'sql',\n  targetId: 'postgres',\n  version: '0.0.1',\n  capabilities: {\n    postgres: {\n      'postgis.geometry': true,\n    },\n  },\n  authoring: {\n    type: postgisAuthoringTypes,\n  },\n  types: {\n    codecTypes: {\n      codecDescriptors: Array.from(postgisCodecRegistry.values()),\n      import: {\n        package: '@prisma-next/extension-postgis/codec-types',\n        named: 'CodecTypes',\n        alias: 'PostgisTypes',\n      },\n      typeImports: [\n        {\n          package: '@prisma-next/extension-postgis/codec-types',\n          named: 'Geometry',\n          alias: 'Geometry',\n        },\n      ],\n    },\n    queryOperationTypes: {\n      import: {\n        package: '@prisma-next/extension-postgis/operation-types',\n        named: 'QueryOperationTypes',\n        alias: 'PostgisQueryOperationTypes',\n      },\n    },\n    storage: [\n      { typeId: postgisTypeId, familyId: 'sql', targetId: 'postgres', nativeType: 'geometry' },\n    ],\n  },\n} as const;\n\nexport const postgisPackMeta: typeof postgisPackMetaBase & {\n  readonly __codecTypes?: CodecTypes;\n} = postgisPackMetaBase;\n"],"mappings":"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"}