@prisma-next/adapter-postgres 0.3.0-dev.11 → 0.3.0-dev.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +64 -2
- package/dist/adapter-CWmWEFe1.mjs +361 -0
- package/dist/adapter-CWmWEFe1.mjs.map +1 -0
- package/dist/adapter.d.mts +23 -0
- package/dist/adapter.d.mts.map +1 -0
- package/dist/adapter.mjs +3 -0
- package/dist/codec-ids-Bsm9c7ns.mjs +29 -0
- package/dist/codec-ids-Bsm9c7ns.mjs.map +1 -0
- package/dist/codec-types.d.mts +141 -0
- package/dist/codec-types.d.mts.map +1 -0
- package/dist/codec-types.mjs +3 -0
- package/dist/codecs-DgJcyEBR.mjs +254 -0
- package/dist/codecs-DgJcyEBR.mjs.map +1 -0
- package/dist/column-types.d.mts +110 -0
- package/dist/column-types.d.mts.map +1 -0
- package/dist/column-types.mjs +180 -0
- package/dist/column-types.mjs.map +1 -0
- package/dist/control.d.mts +77 -0
- package/dist/control.d.mts.map +1 -0
- package/dist/control.mjs +773 -0
- package/dist/control.mjs.map +1 -0
- package/dist/descriptor-meta-l_dv8Nnn.mjs +884 -0
- package/dist/descriptor-meta-l_dv8Nnn.mjs.map +1 -0
- package/dist/runtime.d.mts +19 -0
- package/dist/runtime.d.mts.map +1 -0
- package/dist/runtime.mjs +99 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/sql-utils-CSfAGEwF.mjs +78 -0
- package/dist/sql-utils-CSfAGEwF.mjs.map +1 -0
- package/dist/types-aQLL6QVb.d.mts +19 -0
- package/dist/types-aQLL6QVb.d.mts.map +1 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.mjs +1 -0
- package/package.json +39 -46
- package/src/core/adapter.ts +529 -256
- package/src/core/codec-ids.ts +28 -0
- package/src/core/codecs.ts +385 -36
- package/src/core/control-adapter.ts +404 -179
- package/src/core/control-mutation-defaults.ts +335 -0
- package/src/core/default-normalizer.ts +138 -0
- package/src/core/descriptor-meta.ts +296 -9
- package/src/core/enum-control-hooks.ts +733 -0
- package/src/core/json-schema-type-expression.ts +131 -0
- package/src/core/json-schema-validator.ts +53 -0
- package/src/core/sql-utils.ts +111 -0
- package/src/core/standard-schema.ts +71 -0
- package/src/core/types.ts +5 -3
- package/src/exports/codec-types.ts +73 -1
- package/src/exports/column-types.ts +233 -9
- package/src/exports/control.ts +20 -9
- package/src/exports/runtime.ts +76 -19
- package/dist/chunk-HD5YISNQ.js +0 -47
- package/dist/chunk-HD5YISNQ.js.map +0 -1
- package/dist/chunk-J3XSOAM2.js +0 -162
- package/dist/chunk-J3XSOAM2.js.map +0 -1
- package/dist/chunk-T6S3A6VT.js +0 -301
- package/dist/chunk-T6S3A6VT.js.map +0 -1
- package/dist/core/adapter.d.ts +0 -19
- package/dist/core/adapter.d.ts.map +0 -1
- package/dist/core/codecs.d.ts +0 -110
- package/dist/core/codecs.d.ts.map +0 -1
- package/dist/core/control-adapter.d.ts +0 -33
- package/dist/core/control-adapter.d.ts.map +0 -1
- package/dist/core/descriptor-meta.d.ts +0 -72
- package/dist/core/descriptor-meta.d.ts.map +0 -1
- package/dist/core/types.d.ts +0 -16
- package/dist/core/types.d.ts.map +0 -1
- package/dist/exports/adapter.d.ts +0 -2
- package/dist/exports/adapter.d.ts.map +0 -1
- package/dist/exports/adapter.js +0 -8
- package/dist/exports/adapter.js.map +0 -1
- package/dist/exports/codec-types.d.ts +0 -11
- package/dist/exports/codec-types.d.ts.map +0 -1
- package/dist/exports/codec-types.js +0 -7
- package/dist/exports/codec-types.js.map +0 -1
- package/dist/exports/column-types.d.ts +0 -17
- package/dist/exports/column-types.d.ts.map +0 -1
- package/dist/exports/column-types.js +0 -49
- package/dist/exports/column-types.js.map +0 -1
- package/dist/exports/control.d.ts +0 -8
- package/dist/exports/control.d.ts.map +0 -1
- package/dist/exports/control.js +0 -279
- package/dist/exports/control.js.map +0 -1
- package/dist/exports/runtime.d.ts +0 -15
- package/dist/exports/runtime.d.ts.map +0 -1
- package/dist/exports/runtime.js +0 -20
- package/dist/exports/runtime.js.map +0 -1
- package/dist/exports/types.d.ts +0 -2
- package/dist/exports/types.d.ts.map +0 -1
- package/dist/exports/types.js +0 -1
- package/dist/exports/types.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-CWmWEFe1.mjs","names":["parameterizedCodecs: ReadonlyArray<CodecParamsDescriptor>","codec","paramIndexMap: ParamIndexMap","params: unknown[]","sql: string","right: string","orderedColumns: string[]","value: string"],"sources":["../src/core/adapter.ts"],"sourcesContent":["import {\n type Adapter,\n type AdapterProfile,\n type AggregateExpr,\n type AnyExpression,\n type AnyFromSource,\n type AnyQueryAst,\n type BinaryExpr,\n type CodecParamsDescriptor,\n type ColumnRef,\n createCodecRegistry,\n type DeleteAst,\n type InsertAst,\n type InsertValue,\n type JoinAst,\n type JoinOnExpr,\n type JsonArrayAggExpr,\n type JsonObjectExpr,\n type ListExpression,\n LiteralExpr,\n type LowererContext,\n type NullCheckExpr,\n type OperationExpr,\n type OrderByItem,\n type ParamRef,\n type ProjectionItem,\n type SelectAst,\n type SubqueryExpr,\n type UpdateAst,\n} from '@prisma-next/sql-relational-core/ast';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { PG_JSON_CODEC_ID, PG_JSONB_CODEC_ID } from './codec-ids';\nimport { codecDefinitions } from './codecs';\nimport { escapeLiteral, quoteIdentifier } from './sql-utils';\nimport type { PostgresAdapterOptions, PostgresContract, PostgresLoweredStatement } from './types';\n\nconst VECTOR_CODEC_ID = 'pg/vector@1' as const;\n\nfunction getCodecParamCast(codecId: string | undefined): string | undefined {\n if (codecId === VECTOR_CODEC_ID) {\n return 'vector';\n }\n if (codecId === PG_JSON_CODEC_ID) {\n return 'json';\n }\n if (codecId === PG_JSONB_CODEC_ID) {\n return 'jsonb';\n }\n return undefined;\n}\n\nfunction renderTypedParam(index: number, codecId: string | undefined): string {\n const cast = getCodecParamCast(codecId);\n return cast ? `$${index}::${cast}` : `$${index}`;\n}\n\ntype ParamIndexMap = Map<ParamRef, number>;\n\nconst defaultCapabilities = Object.freeze({\n postgres: {\n orderBy: true,\n limit: true,\n lateral: true,\n jsonAgg: true,\n returning: true,\n },\n sql: {\n enums: true,\n },\n});\n\ntype AdapterCodec = (typeof codecDefinitions)[keyof typeof codecDefinitions]['codec'];\ntype ParameterizedCodec = AdapterCodec & {\n readonly paramsSchema: NonNullable<AdapterCodec['paramsSchema']>;\n};\n\nconst parameterizedCodecs: ReadonlyArray<CodecParamsDescriptor> = Object.values(codecDefinitions)\n .map((definition) => definition.codec)\n .filter((codec): codec is ParameterizedCodec => codec.paramsSchema !== undefined)\n .map((codec) =>\n Object.freeze({\n codecId: codec.id,\n paramsSchema: codec.paramsSchema,\n ...ifDefined('init', codec.init),\n }),\n );\n\nclass PostgresAdapterImpl\n implements Adapter<AnyQueryAst, PostgresContract, PostgresLoweredStatement>\n{\n // These fields make the adapter instance structurally compatible with\n // RuntimeAdapterInstance<'sql', 'postgres'> without introducing a runtime-plane dependency.\n readonly familyId = 'sql' as const;\n readonly targetId = 'postgres' as const;\n\n readonly profile: AdapterProfile<'postgres'>;\n private readonly codecRegistry = (() => {\n const registry = createCodecRegistry();\n for (const definition of Object.values(codecDefinitions)) {\n registry.register(definition.codec);\n }\n return registry;\n })();\n\n constructor(options?: PostgresAdapterOptions) {\n this.profile = Object.freeze({\n id: options?.profileId ?? 'postgres/default@1',\n target: 'postgres',\n capabilities: defaultCapabilities,\n codecs: () => this.codecRegistry,\n });\n }\n\n parameterizedCodecs(): ReadonlyArray<CodecParamsDescriptor> {\n return parameterizedCodecs;\n }\n\n lower(ast: AnyQueryAst, context: LowererContext<PostgresContract>) {\n const collectedParamRefs = ast.collectParamRefs();\n const paramIndexMap: ParamIndexMap = new Map();\n const params: unknown[] = [];\n for (const ref of collectedParamRefs) {\n if (paramIndexMap.has(ref)) {\n continue;\n }\n paramIndexMap.set(ref, params.length + 1);\n params.push(ref.value);\n }\n\n let sql: string;\n\n const node = ast;\n switch (node.kind) {\n case 'select':\n sql = renderSelect(node, context.contract, paramIndexMap);\n break;\n case 'insert':\n sql = renderInsert(node, context.contract, paramIndexMap);\n break;\n case 'update':\n sql = renderUpdate(node, context.contract, paramIndexMap);\n break;\n case 'delete':\n sql = renderDelete(node, context.contract, paramIndexMap);\n break;\n // v8 ignore next 4\n default:\n throw new Error(\n `Unsupported AST node kind: ${(node satisfies never as { kind: string }).kind}`,\n );\n }\n\n return Object.freeze({\n profileId: this.profile.id,\n body: Object.freeze({ sql, params }),\n });\n }\n}\n\nfunction renderSelect(ast: SelectAst, contract?: PostgresContract, pim?: ParamIndexMap): string {\n const selectClause = `SELECT ${renderDistinctPrefix(ast.distinct, ast.distinctOn, contract, pim)}${renderProjection(\n ast.projection,\n contract,\n pim,\n )}`;\n const fromClause = `FROM ${renderSource(ast.from, contract, pim)}`;\n\n const joinsClause = ast.joins?.length\n ? ast.joins.map((join) => renderJoin(join, contract, pim)).join(' ')\n : '';\n\n const whereClause = ast.where ? `WHERE ${renderWhere(ast.where, contract, pim)}` : '';\n const groupByClause = ast.groupBy?.length\n ? `GROUP BY ${ast.groupBy.map((expr) => renderExpr(expr, contract, pim)).join(', ')}`\n : '';\n const havingClause = ast.having ? `HAVING ${renderWhere(ast.having, contract, pim)}` : '';\n const orderClause = ast.orderBy?.length\n ? `ORDER BY ${ast.orderBy\n .map((order) => {\n const expr = renderExpr(order.expr, contract, pim);\n return `${expr} ${order.dir.toUpperCase()}`;\n })\n .join(', ')}`\n : '';\n const limitClause = typeof ast.limit === 'number' ? `LIMIT ${ast.limit}` : '';\n const offsetClause = typeof ast.offset === 'number' ? `OFFSET ${ast.offset}` : '';\n\n const clauses = [\n selectClause,\n fromClause,\n joinsClause,\n whereClause,\n groupByClause,\n havingClause,\n orderClause,\n limitClause,\n offsetClause,\n ]\n .filter((part) => part.length > 0)\n .join(' ');\n return clauses.trim();\n}\n\nfunction renderProjection(\n projection: ReadonlyArray<ProjectionItem>,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n return projection\n .map((item) => {\n const alias = quoteIdentifier(item.alias);\n if (item.expr.kind === 'literal') {\n return `${renderLiteral(item.expr)} AS ${alias}`;\n }\n return `${renderExpr(item.expr, contract, pim)} AS ${alias}`;\n })\n .join(', ');\n}\n\nfunction renderDistinctPrefix(\n distinct: true | undefined,\n distinctOn: ReadonlyArray<AnyExpression> | undefined,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n if (distinctOn && distinctOn.length > 0) {\n const rendered = distinctOn.map((expr) => renderExpr(expr, contract, pim)).join(', ');\n return `DISTINCT ON (${rendered}) `;\n }\n if (distinct) {\n return 'DISTINCT ';\n }\n return '';\n}\n\nfunction renderSource(\n source: AnyFromSource,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n const node = source;\n switch (node.kind) {\n case 'table-source': {\n const table = quoteIdentifier(node.name);\n if (!node.alias) {\n return table;\n }\n return `${table} AS ${quoteIdentifier(node.alias)}`;\n }\n case 'derived-table-source':\n return `(${renderSelect(node.query, contract, pim)}) AS ${quoteIdentifier(node.alias)}`;\n // v8 ignore next 4\n default:\n throw new Error(\n `Unsupported source node kind: ${(node satisfies never as { kind: string }).kind}`,\n );\n }\n}\n\nfunction assertScalarSubquery(query: SelectAst): void {\n if (query.projection.length !== 1) {\n throw new Error('Subquery expressions must project exactly one column');\n }\n}\n\nfunction renderSubqueryExpr(\n expr: SubqueryExpr,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n assertScalarSubquery(expr.query);\n return `(${renderSelect(expr.query, contract, pim)})`;\n}\n\nfunction renderWhere(\n expr: AnyExpression,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n return renderExpr(expr, contract, pim);\n}\n\nfunction renderNullCheck(\n expr: NullCheckExpr,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n const rendered = renderExpr(expr.expr, contract, pim);\n const renderedExpr =\n expr.expr.kind === 'operation' || expr.expr.kind === 'subquery' ? `(${rendered})` : rendered;\n return expr.isNull ? `${renderedExpr} IS NULL` : `${renderedExpr} IS NOT NULL`;\n}\n\nfunction renderBinary(expr: BinaryExpr, contract?: PostgresContract, pim?: ParamIndexMap): string {\n if (expr.right.kind === 'list' && expr.right.values.length === 0) {\n if (expr.op === 'in') {\n return 'FALSE';\n }\n if (expr.op === 'notIn') {\n return 'TRUE';\n }\n }\n\n const leftExpr = expr.left;\n const left = renderExpr(leftExpr, contract, pim);\n const leftRendered =\n leftExpr.kind === 'operation' || leftExpr.kind === 'subquery' ? `(${left})` : left;\n\n const rightNode = expr.right;\n let right: string;\n switch (rightNode.kind) {\n case 'list':\n right = renderListLiteral(rightNode, pim);\n break;\n case 'literal':\n right = renderLiteral(rightNode);\n break;\n case 'column-ref':\n right = renderColumn(rightNode);\n break;\n case 'param-ref':\n right = renderParamRef(rightNode, pim);\n break;\n default:\n right = renderExpr(rightNode, contract, pim);\n break;\n }\n\n const operatorMap: Record<BinaryExpr['op'], string> = {\n eq: '=',\n neq: '!=',\n gt: '>',\n lt: '<',\n gte: '>=',\n lte: '<=',\n like: 'LIKE',\n ilike: 'ILIKE',\n in: 'IN',\n notIn: 'NOT IN',\n };\n\n return `${leftRendered} ${operatorMap[expr.op]} ${right}`;\n}\n\nfunction renderListLiteral(expr: ListExpression, pim?: ParamIndexMap): string {\n if (expr.values.length === 0) {\n return '(NULL)';\n }\n const values = expr.values\n .map((v) => {\n if (v.kind === 'param-ref') return renderParamRef(v, pim);\n if (v.kind === 'literal') return renderLiteral(v);\n return renderExpr(v, undefined, pim);\n })\n .join(', ');\n return `(${values})`;\n}\n\nfunction renderColumn(ref: ColumnRef): string {\n if (ref.table === 'excluded') {\n return `excluded.${quoteIdentifier(ref.column)}`;\n }\n return `${quoteIdentifier(ref.table)}.${quoteIdentifier(ref.column)}`;\n}\n\nfunction renderAggregateExpr(\n expr: AggregateExpr,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n const fn = expr.fn.toUpperCase();\n if (!expr.expr) {\n return `${fn}(*)`;\n }\n return `${fn}(${renderExpr(expr.expr, contract, pim)})`;\n}\n\nfunction renderJsonObjectExpr(\n expr: JsonObjectExpr,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n const args = expr.entries\n .flatMap((entry): [string, string] => {\n const key = `'${escapeLiteral(entry.key)}'`;\n if (entry.value.kind === 'literal') {\n return [key, renderLiteral(entry.value)];\n }\n return [key, renderExpr(entry.value, contract, pim)];\n })\n .join(', ');\n return `json_build_object(${args})`;\n}\n\nfunction renderOrderByItems(\n items: ReadonlyArray<OrderByItem>,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n return items\n .map((item) => `${renderExpr(item.expr, contract, pim)} ${item.dir.toUpperCase()}`)\n .join(', ');\n}\n\nfunction renderJsonArrayAggExpr(\n expr: JsonArrayAggExpr,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n const aggregateOrderBy =\n expr.orderBy && expr.orderBy.length > 0\n ? ` ORDER BY ${renderOrderByItems(expr.orderBy, contract, pim)}`\n : '';\n const aggregated = `json_agg(${renderExpr(expr.expr, contract, pim)}${aggregateOrderBy})`;\n if (expr.onEmpty === 'emptyArray') {\n return `coalesce(${aggregated}, json_build_array())`;\n }\n return aggregated;\n}\n\nfunction renderExpr(expr: AnyExpression, contract?: PostgresContract, pim?: ParamIndexMap): string {\n const node = expr;\n switch (node.kind) {\n case 'column-ref':\n return renderColumn(node);\n case 'identifier-ref':\n return quoteIdentifier(node.name);\n case 'operation':\n return renderOperation(node, contract, pim);\n case 'subquery':\n return renderSubqueryExpr(node, contract, pim);\n case 'aggregate':\n return renderAggregateExpr(node, contract, pim);\n case 'json-object':\n return renderJsonObjectExpr(node, contract, pim);\n case 'json-array-agg':\n return renderJsonArrayAggExpr(node, contract, pim);\n case 'binary':\n return renderBinary(node, contract, pim);\n case 'and':\n if (node.exprs.length === 0) {\n return 'TRUE';\n }\n return `(${node.exprs.map((part) => renderExpr(part, contract, pim)).join(' AND ')})`;\n case 'or':\n if (node.exprs.length === 0) {\n return 'FALSE';\n }\n return `(${node.exprs.map((part) => renderExpr(part, contract, pim)).join(' OR ')})`;\n case 'exists': {\n const notKeyword = node.notExists ? 'NOT ' : '';\n const subquery = renderSelect(node.subquery, contract, pim);\n return `${notKeyword}EXISTS (${subquery})`;\n }\n case 'null-check':\n return renderNullCheck(node, contract, pim);\n case 'not':\n return `NOT (${renderExpr(node.expr, contract, pim)})`;\n case 'param-ref':\n return renderParamRef(node, pim);\n case 'literal':\n return renderLiteral(node);\n case 'list':\n return renderListLiteral(node, pim);\n // v8 ignore next 4\n default:\n throw new Error(\n `Unsupported expression node kind: ${(node satisfies never as { kind: string }).kind}`,\n );\n }\n}\n\nfunction renderParamRef(ref: ParamRef, pim?: ParamIndexMap): string {\n const index = pim?.get(ref);\n if (index === undefined) {\n throw new Error('ParamRef not found in index map');\n }\n return renderTypedParam(index, ref.codecId);\n}\n\nfunction renderLiteral(expr: LiteralExpr): string {\n if (typeof expr.value === 'string') {\n return `'${escapeLiteral(expr.value)}'`;\n }\n if (typeof expr.value === 'number' || typeof expr.value === 'boolean') {\n return String(expr.value);\n }\n if (typeof expr.value === 'bigint') {\n return String(expr.value);\n }\n if (expr.value === null) {\n return 'NULL';\n }\n if (expr.value === undefined) {\n return 'NULL';\n }\n if (expr.value instanceof Date) {\n return `'${escapeLiteral(expr.value.toISOString())}'`;\n }\n if (Array.isArray(expr.value)) {\n return `ARRAY[${expr.value.map((v: unknown) => renderLiteral(new LiteralExpr(v))).join(', ')}]`;\n }\n const json = JSON.stringify(expr.value);\n if (json === undefined) {\n return 'NULL';\n }\n return `'${escapeLiteral(json)}'`;\n}\n\nfunction renderOperation(\n expr: OperationExpr,\n contract?: PostgresContract,\n pim?: ParamIndexMap,\n): string {\n const self = renderExpr(expr.self, contract, pim);\n const args = expr.args.map((arg) => {\n return renderExpr(arg, contract, pim);\n });\n\n let result = expr.lowering.template;\n result = result.replace(/\\{\\{self\\}\\}/g, self);\n for (let i = 0; i < args.length; i++) {\n result = result.replace(new RegExp(`\\\\{\\\\{arg${i}\\\\}\\\\}`, 'g'), args[i] ?? '');\n }\n\n return result;\n}\n\nfunction renderJoin(join: JoinAst, contract?: PostgresContract, pim?: ParamIndexMap): string {\n const joinType = join.joinType.toUpperCase();\n const lateral = join.lateral ? 'LATERAL ' : '';\n const source = renderSource(join.source, contract, pim);\n const onClause = renderJoinOn(join.on, contract, pim);\n return `${joinType} JOIN ${lateral}${source} ON ${onClause}`;\n}\n\nfunction renderJoinOn(on: JoinOnExpr, contract?: PostgresContract, pim?: ParamIndexMap): string {\n if (on.kind === 'eq-col-join-on') {\n const left = renderColumn(on.left);\n const right = renderColumn(on.right);\n return `${left} = ${right}`;\n }\n return renderWhere(on, contract, pim);\n}\n\nfunction getInsertColumnOrder(\n rows: ReadonlyArray<Record<string, InsertValue>>,\n contract: PostgresContract,\n tableName: string,\n): string[] {\n const orderedColumns: string[] = [];\n const seenColumns = new Set<string>();\n\n for (const row of rows) {\n for (const column of Object.keys(row)) {\n if (seenColumns.has(column)) {\n continue;\n }\n seenColumns.add(column);\n orderedColumns.push(column);\n }\n }\n\n if (orderedColumns.length > 0) {\n return orderedColumns;\n }\n\n return Object.keys(contract.storage.tables[tableName]?.columns ?? {});\n}\n\nfunction renderInsertValue(value: InsertValue | undefined, pim?: ParamIndexMap): string {\n if (!value || value.kind === 'default-value') {\n return 'DEFAULT';\n }\n\n switch (value.kind) {\n case 'param-ref':\n return renderParamRef(value, pim);\n case 'column-ref':\n return renderColumn(value);\n // v8 ignore next 4\n default:\n throw new Error(\n `Unsupported value node in INSERT: ${(value satisfies never as { kind: string }).kind}`,\n );\n }\n}\n\nfunction renderInsert(ast: InsertAst, contract: PostgresContract, pim?: ParamIndexMap): string {\n const table = quoteIdentifier(ast.table.name);\n const rows = ast.rows;\n if (rows.length === 0) {\n throw new Error('INSERT requires at least one row');\n }\n const hasExplicitValues = rows.some((row) => Object.keys(row).length > 0);\n const insertClause = (() => {\n if (!hasExplicitValues) {\n if (rows.length === 1) {\n return `INSERT INTO ${table} DEFAULT VALUES`;\n }\n\n const defaultColumns = getInsertColumnOrder(rows, contract, ast.table.name);\n if (defaultColumns.length === 0) {\n return `INSERT INTO ${table} VALUES ${rows.map(() => '()').join(', ')}`;\n }\n\n const quotedColumns = defaultColumns.map((column) => quoteIdentifier(column));\n const defaultRow = `(${defaultColumns.map(() => 'DEFAULT').join(', ')})`;\n return `INSERT INTO ${table} (${quotedColumns.join(', ')}) VALUES ${rows\n .map(() => defaultRow)\n .join(', ')}`;\n }\n\n const columnOrder = getInsertColumnOrder(rows, contract, ast.table.name);\n const columns = columnOrder.map((column) => quoteIdentifier(column));\n const values = rows\n .map((row) => {\n const renderedRow = columnOrder.map((column) => renderInsertValue(row[column], pim));\n return `(${renderedRow.join(', ')})`;\n })\n .join(', ');\n\n return `INSERT INTO ${table} (${columns.join(', ')}) VALUES ${values}`;\n })();\n const onConflictClause = ast.onConflict\n ? (() => {\n const conflictColumns = ast.onConflict.columns.map((col) => quoteIdentifier(col.column));\n if (conflictColumns.length === 0) {\n throw new Error('INSERT onConflict requires at least one conflict column');\n }\n\n const action = ast.onConflict.action;\n switch (action.kind) {\n case 'do-nothing':\n return ` ON CONFLICT (${conflictColumns.join(', ')}) DO NOTHING`;\n case 'do-update-set': {\n const updates = Object.entries(action.set).map(([colName, value]) => {\n const target = quoteIdentifier(colName);\n if (value.kind === 'param-ref') {\n return `${target} = ${renderParamRef(value, pim)}`;\n }\n return `${target} = ${renderColumn(value)}`;\n });\n return ` ON CONFLICT (${conflictColumns.join(', ')}) DO UPDATE SET ${updates.join(', ')}`;\n }\n // v8 ignore next 4\n default:\n throw new Error(\n `Unsupported onConflict action: ${(action satisfies never as { kind: string }).kind}`,\n );\n }\n })()\n : '';\n const returningClause = ast.returning?.length\n ? ` RETURNING ${ast.returning.map((col) => `${quoteIdentifier(col.table)}.${quoteIdentifier(col.column)}`).join(', ')}`\n : '';\n\n return `${insertClause}${onConflictClause}${returningClause}`;\n}\n\nfunction renderUpdate(ast: UpdateAst, contract: PostgresContract, pim?: ParamIndexMap): string {\n const table = quoteIdentifier(ast.table.name);\n const setClauses = Object.entries(ast.set).map(([col, val]) => {\n const column = quoteIdentifier(col);\n let value: string;\n switch (val.kind) {\n case 'param-ref':\n value = renderParamRef(val, pim);\n break;\n case 'column-ref':\n value = renderColumn(val);\n break;\n // v8 ignore next 4\n default:\n throw new Error(\n `Unsupported value node in UPDATE: ${(val satisfies never as { kind: string }).kind}`,\n );\n }\n return `${column} = ${value}`;\n });\n\n const whereClause = ast.where ? ` WHERE ${renderWhere(ast.where, contract, pim)}` : '';\n const returningClause = ast.returning?.length\n ? ` RETURNING ${ast.returning.map((col) => `${quoteIdentifier(col.table)}.${quoteIdentifier(col.column)}`).join(', ')}`\n : '';\n\n return `UPDATE ${table} SET ${setClauses.join(', ')}${whereClause}${returningClause}`;\n}\n\nfunction renderDelete(ast: DeleteAst, contract?: PostgresContract, pim?: ParamIndexMap): string {\n const table = quoteIdentifier(ast.table.name);\n const whereClause = ast.where ? ` WHERE ${renderWhere(ast.where, contract, pim)}` : '';\n const returningClause = ast.returning?.length\n ? ` RETURNING ${ast.returning.map((col) => `${quoteIdentifier(col.table)}.${quoteIdentifier(col.column)}`).join(', ')}`\n : '';\n\n return `DELETE FROM ${table}${whereClause}${returningClause}`;\n}\n\nexport function createPostgresAdapter(options?: PostgresAdapterOptions) {\n return Object.freeze(new PostgresAdapterImpl(options));\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { c as PostgresContract, l as PostgresLoweredStatement, s as PostgresAdapterOptions } from "./types-aQLL6QVb.mjs";
|
|
2
|
+
import { Adapter, AdapterProfile, AnyQueryAst, CodecParamsDescriptor, LowererContext } from "@prisma-next/sql-relational-core/ast";
|
|
3
|
+
|
|
4
|
+
//#region src/core/adapter.d.ts
|
|
5
|
+
declare class PostgresAdapterImpl implements Adapter<AnyQueryAst, PostgresContract, PostgresLoweredStatement> {
|
|
6
|
+
readonly familyId: "sql";
|
|
7
|
+
readonly targetId: "postgres";
|
|
8
|
+
readonly profile: AdapterProfile<'postgres'>;
|
|
9
|
+
private readonly codecRegistry;
|
|
10
|
+
constructor(options?: PostgresAdapterOptions);
|
|
11
|
+
parameterizedCodecs(): ReadonlyArray<CodecParamsDescriptor>;
|
|
12
|
+
lower(ast: AnyQueryAst, context: LowererContext<PostgresContract>): Readonly<{
|
|
13
|
+
profileId: string;
|
|
14
|
+
body: Readonly<{
|
|
15
|
+
sql: string;
|
|
16
|
+
params: unknown[];
|
|
17
|
+
}>;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
declare function createPostgresAdapter(options?: PostgresAdapterOptions): Readonly<PostgresAdapterImpl>;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { createPostgresAdapter };
|
|
23
|
+
//# sourceMappingURL=adapter.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.mts","names":[],"sources":["../src/core/adapter.ts"],"sourcesContent":[],"mappings":";;;;cAuFM,mBAAA,YACO,QAAQ,aAAa,kBAAkB;;EAD9C,SAAA,QAAA,EAAA,UACJ;EAAmB,SAAA,OAAA,EAOD,cAPC,CAAA,UAAA,CAAA;EAAa,iBAAA,aAAA;EAAkB,WAAA,CAAA,OAAA,CAAA,EAgB5B,sBAhB4B;EAOhC,mBAAA,CAAA,CAAA,EAkBK,aAlBL,CAkBmB,qBAlBnB,CAAA;EASI,KAAA,CAAA,GAAA,EAaX,WAbW,EAAA,OAAA,EAaW,cAbX,CAa0B,gBAb1B,CAAA,CAAA,EAa2C,QAb3C,CAAA;IASe,SAAA,EAAA,MAAA;IAAd,IAAA,UAAA,CAAA;MAIZ,GAAA,EAAA,MAAA;MAAqC,MAAA,EAAA,OAAA,EAAA;IAAf,CAAA,CAAA;;;AA7BtB,iBAmmBG,qBAAA,CAnmBH,OAAA,CAAA,EAmmBmC,sBAnmBnC,CAAA,EAmmByD,QAnmBzD,CAmmByD,mBAnmBzD,CAAA"}
|
package/dist/adapter.mjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_VARCHAR_CODEC_ID } from "@prisma-next/sql-relational-core/ast";
|
|
2
|
+
|
|
3
|
+
//#region src/core/codec-ids.ts
|
|
4
|
+
const PG_TEXT_CODEC_ID = "pg/text@1";
|
|
5
|
+
const PG_ENUM_CODEC_ID = "pg/enum@1";
|
|
6
|
+
const PG_CHAR_CODEC_ID = "pg/char@1";
|
|
7
|
+
const PG_VARCHAR_CODEC_ID = "pg/varchar@1";
|
|
8
|
+
const PG_INT_CODEC_ID = "pg/int@1";
|
|
9
|
+
const PG_INT2_CODEC_ID = "pg/int2@1";
|
|
10
|
+
const PG_INT4_CODEC_ID = "pg/int4@1";
|
|
11
|
+
const PG_INT8_CODEC_ID = "pg/int8@1";
|
|
12
|
+
const PG_FLOAT_CODEC_ID = "pg/float@1";
|
|
13
|
+
const PG_FLOAT4_CODEC_ID = "pg/float4@1";
|
|
14
|
+
const PG_FLOAT8_CODEC_ID = "pg/float8@1";
|
|
15
|
+
const PG_NUMERIC_CODEC_ID = "pg/numeric@1";
|
|
16
|
+
const PG_BOOL_CODEC_ID = "pg/bool@1";
|
|
17
|
+
const PG_BIT_CODEC_ID = "pg/bit@1";
|
|
18
|
+
const PG_VARBIT_CODEC_ID = "pg/varbit@1";
|
|
19
|
+
const PG_TIMESTAMP_CODEC_ID = "pg/timestamp@1";
|
|
20
|
+
const PG_TIMESTAMPTZ_CODEC_ID = "pg/timestamptz@1";
|
|
21
|
+
const PG_TIME_CODEC_ID = "pg/time@1";
|
|
22
|
+
const PG_TIMETZ_CODEC_ID = "pg/timetz@1";
|
|
23
|
+
const PG_INTERVAL_CODEC_ID = "pg/interval@1";
|
|
24
|
+
const PG_JSON_CODEC_ID = "pg/json@1";
|
|
25
|
+
const PG_JSONB_CODEC_ID = "pg/jsonb@1";
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { SQL_CHAR_CODEC_ID as C, SQL_VARCHAR_CODEC_ID as E, PG_VARCHAR_CODEC_ID as S, SQL_INT_CODEC_ID as T, PG_TIMESTAMPTZ_CODEC_ID as _, PG_FLOAT4_CODEC_ID as a, PG_TIME_CODEC_ID as b, PG_INT2_CODEC_ID as c, PG_INTERVAL_CODEC_ID as d, PG_INT_CODEC_ID as f, PG_TEXT_CODEC_ID as g, PG_NUMERIC_CODEC_ID as h, PG_ENUM_CODEC_ID as i, PG_INT4_CODEC_ID as l, PG_JSON_CODEC_ID as m, PG_BOOL_CODEC_ID as n, PG_FLOAT8_CODEC_ID as o, PG_JSONB_CODEC_ID as p, PG_CHAR_CODEC_ID as r, PG_FLOAT_CODEC_ID as s, PG_BIT_CODEC_ID as t, PG_INT8_CODEC_ID as u, PG_TIMESTAMP_CODEC_ID as v, SQL_FLOAT_CODEC_ID as w, PG_VARBIT_CODEC_ID as x, PG_TIMETZ_CODEC_ID as y };
|
|
29
|
+
//# sourceMappingURL=codec-ids-Bsm9c7ns.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-ids-Bsm9c7ns.mjs","names":[],"sources":["../src/core/codec-ids.ts"],"sourcesContent":["export {\n SQL_CHAR_CODEC_ID,\n SQL_FLOAT_CODEC_ID,\n SQL_INT_CODEC_ID,\n SQL_VARCHAR_CODEC_ID,\n} from '@prisma-next/sql-relational-core/ast';\nexport const PG_TEXT_CODEC_ID = 'pg/text@1' as const;\nexport const PG_ENUM_CODEC_ID = 'pg/enum@1' as const;\nexport const PG_CHAR_CODEC_ID = 'pg/char@1' as const;\nexport const PG_VARCHAR_CODEC_ID = 'pg/varchar@1' as const;\nexport const PG_INT_CODEC_ID = 'pg/int@1' as const;\nexport const PG_INT2_CODEC_ID = 'pg/int2@1' as const;\nexport const PG_INT4_CODEC_ID = 'pg/int4@1' as const;\nexport const PG_INT8_CODEC_ID = 'pg/int8@1' as const;\nexport const PG_FLOAT_CODEC_ID = 'pg/float@1' as const;\nexport const PG_FLOAT4_CODEC_ID = 'pg/float4@1' as const;\nexport const PG_FLOAT8_CODEC_ID = 'pg/float8@1' as const;\nexport const PG_NUMERIC_CODEC_ID = 'pg/numeric@1' as const;\nexport const PG_BOOL_CODEC_ID = 'pg/bool@1' as const;\nexport const PG_BIT_CODEC_ID = 'pg/bit@1' as const;\nexport const PG_VARBIT_CODEC_ID = 'pg/varbit@1' as const;\nexport const PG_TIMESTAMP_CODEC_ID = 'pg/timestamp@1' as const;\nexport const PG_TIMESTAMPTZ_CODEC_ID = 'pg/timestamptz@1' as const;\nexport const PG_TIME_CODEC_ID = 'pg/time@1' as const;\nexport const PG_TIMETZ_CODEC_ID = 'pg/timetz@1' as const;\nexport const PG_INTERVAL_CODEC_ID = 'pg/interval@1' as const;\nexport const PG_JSON_CODEC_ID = 'pg/json@1' as const;\nexport const PG_JSONB_CODEC_ID = 'pg/jsonb@1' as const;\n"],"mappings":";;;AAMA,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,sBAAsB;AACnC,MAAa,kBAAkB;AAC/B,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,oBAAoB;AACjC,MAAa,qBAAqB;AAClC,MAAa,qBAAqB;AAClC,MAAa,sBAAsB;AACnC,MAAa,mBAAmB;AAChC,MAAa,kBAAkB;AAC/B,MAAa,qBAAqB;AAClC,MAAa,wBAAwB;AACrC,MAAa,0BAA0B;AACvC,MAAa,mBAAmB;AAChC,MAAa,qBAAqB;AAClC,MAAa,uBAAuB;AACpC,MAAa,mBAAmB;AAChC,MAAa,oBAAoB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as _prisma_next_sql_relational_core_ast0 from "@prisma-next/sql-relational-core/ast";
|
|
2
|
+
import { Codec } from "@prisma-next/sql-relational-core/ast";
|
|
3
|
+
|
|
4
|
+
//#region src/core/codecs.d.ts
|
|
5
|
+
|
|
6
|
+
type JsonValue = string | number | boolean | null | {
|
|
7
|
+
readonly [key: string]: JsonValue;
|
|
8
|
+
} | readonly JsonValue[];
|
|
9
|
+
declare const codecs: _prisma_next_sql_relational_core_ast0.CodecDefBuilder<{
|
|
10
|
+
char: Codec<"sql/char@1", readonly ["equality", "order", "textual"], string, string, Record<string, unknown>, unknown>;
|
|
11
|
+
varchar: Codec<"sql/varchar@1", readonly ["equality", "order", "textual"], string, string, Record<string, unknown>, unknown>;
|
|
12
|
+
int: Codec<"sql/int@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
13
|
+
float: Codec<"sql/float@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
14
|
+
text: Codec<"pg/text@1", readonly ["equality", "order", "textual"], string, string, Record<string, unknown>, unknown>;
|
|
15
|
+
character: Codec<"pg/char@1", readonly ["equality", "order", "textual"], string, string, Record<string, unknown>, unknown>;
|
|
16
|
+
"character varying": Codec<"pg/varchar@1", readonly ["equality", "order", "textual"], string, string, Record<string, unknown>, unknown>;
|
|
17
|
+
integer: Codec<"pg/int@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
18
|
+
"double precision": Codec<"pg/float@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
19
|
+
int4: Codec<"pg/int4@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
20
|
+
int2: Codec<"pg/int2@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
21
|
+
int8: Codec<"pg/int8@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
22
|
+
float4: Codec<"pg/float4@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
23
|
+
float8: Codec<"pg/float8@1", readonly ["equality", "order", "numeric"], number, number, Record<string, unknown>, unknown>;
|
|
24
|
+
numeric: Codec<"pg/numeric@1", readonly ["equality", "order", "numeric"], string, string, Record<string, unknown>, unknown>;
|
|
25
|
+
timestamp: Codec<"pg/timestamp@1", readonly ["equality", "order"], string | Date, string, Record<string, unknown>, unknown>;
|
|
26
|
+
timestamptz: Codec<"pg/timestamptz@1", readonly ["equality", "order"], string | Date, string, Record<string, unknown>, unknown>;
|
|
27
|
+
time: Codec<"pg/time@1", readonly ["equality", "order"], string, string, Record<string, unknown>, unknown>;
|
|
28
|
+
timetz: Codec<"pg/timetz@1", readonly ["equality", "order"], string, string, Record<string, unknown>, unknown>;
|
|
29
|
+
bool: Codec<"pg/bool@1", readonly ["equality", "boolean"], boolean, boolean, Record<string, unknown>, unknown>;
|
|
30
|
+
bit: Codec<"pg/bit@1", readonly ["equality", "order"], string, string, Record<string, unknown>, unknown>;
|
|
31
|
+
"bit varying": Codec<"pg/varbit@1", readonly ["equality", "order"], string, string, Record<string, unknown>, unknown>;
|
|
32
|
+
interval: Codec<"pg/interval@1", readonly ["equality", "order"], string | Record<string, unknown>, string, Record<string, unknown>, unknown>;
|
|
33
|
+
enum: Codec<"pg/enum@1", readonly ["equality", "order"], string, string, Record<string, unknown>, unknown>;
|
|
34
|
+
json: Codec<"pg/json@1", readonly [], string, JsonValue, Record<string, unknown>, unknown>;
|
|
35
|
+
} & Record<"jsonb", Codec<"pg/jsonb@1", readonly ["equality"], string, JsonValue, Record<string, unknown>, unknown>>>;
|
|
36
|
+
declare const dataTypes: {
|
|
37
|
+
readonly char: "sql/char@1";
|
|
38
|
+
readonly varchar: "sql/varchar@1";
|
|
39
|
+
readonly int: "sql/int@1";
|
|
40
|
+
readonly float: "sql/float@1";
|
|
41
|
+
readonly text: "pg/text@1";
|
|
42
|
+
readonly character: "pg/char@1";
|
|
43
|
+
readonly "character varying": "pg/varchar@1";
|
|
44
|
+
readonly integer: "pg/int@1";
|
|
45
|
+
readonly "double precision": "pg/float@1";
|
|
46
|
+
readonly int4: "pg/int4@1";
|
|
47
|
+
readonly int2: "pg/int2@1";
|
|
48
|
+
readonly int8: "pg/int8@1";
|
|
49
|
+
readonly float4: "pg/float4@1";
|
|
50
|
+
readonly float8: "pg/float8@1";
|
|
51
|
+
readonly numeric: "pg/numeric@1";
|
|
52
|
+
readonly timestamp: "pg/timestamp@1";
|
|
53
|
+
readonly timestamptz: "pg/timestamptz@1";
|
|
54
|
+
readonly time: "pg/time@1";
|
|
55
|
+
readonly timetz: "pg/timetz@1";
|
|
56
|
+
readonly bool: "pg/bool@1";
|
|
57
|
+
readonly bit: "pg/bit@1";
|
|
58
|
+
readonly "bit varying": "pg/varbit@1";
|
|
59
|
+
readonly interval: "pg/interval@1";
|
|
60
|
+
readonly enum: "pg/enum@1";
|
|
61
|
+
readonly json: "pg/json@1";
|
|
62
|
+
readonly jsonb: "pg/jsonb@1";
|
|
63
|
+
};
|
|
64
|
+
type CodecTypes$1 = typeof codecs.CodecTypes;
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/exports/codec-types.d.ts
|
|
67
|
+
/**
|
|
68
|
+
* Compile-time view of the Standard Schema protocol.
|
|
69
|
+
* Reads `~standard.types.output` to resolve TypeScript output types for contract.d.ts.
|
|
70
|
+
*
|
|
71
|
+
* This differs from the runtime `StandardSchemaLike` in `standard-schema.ts`, which reads
|
|
72
|
+
* `~standard.jsonSchema.output` for the serializable JSON Schema representation.
|
|
73
|
+
* Both are needed: this one drives compile-time type narrowing, the other drives
|
|
74
|
+
* build-time contract emission.
|
|
75
|
+
*/
|
|
76
|
+
type StandardSchemaLike = {
|
|
77
|
+
readonly '~standard'?: {
|
|
78
|
+
readonly types?: {
|
|
79
|
+
readonly output?: unknown;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
type ResolveStandardSchemaOutput<P> = P extends {
|
|
84
|
+
readonly schema: infer Schema;
|
|
85
|
+
} ? Schema extends {
|
|
86
|
+
readonly infer: infer Output;
|
|
87
|
+
} ? Output : Schema extends {
|
|
88
|
+
readonly '~standard': {
|
|
89
|
+
readonly types?: {
|
|
90
|
+
readonly output?: infer Output;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
} ? Output extends undefined ? JsonValue : Output : JsonValue : JsonValue;
|
|
94
|
+
type CodecTypes = CodecTypes$1 & {
|
|
95
|
+
readonly 'pg/json@1': CodecTypes$1['pg/json@1'] & {
|
|
96
|
+
readonly parameterizedOutput: <P extends {
|
|
97
|
+
readonly schema?: StandardSchemaLike;
|
|
98
|
+
}>(params: P) => ResolveStandardSchemaOutput<P>;
|
|
99
|
+
};
|
|
100
|
+
readonly 'pg/jsonb@1': CodecTypes$1['pg/jsonb@1'] & {
|
|
101
|
+
readonly parameterizedOutput: <P extends {
|
|
102
|
+
readonly schema?: StandardSchemaLike;
|
|
103
|
+
}>(params: P) => ResolveStandardSchemaOutput<P>;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
type Branded<T, Shape extends Record<string, unknown>> = T & { readonly [K in keyof Shape]: Shape[K] };
|
|
107
|
+
type BrandedString<Shape extends Record<string, unknown>> = Branded<string, Shape>;
|
|
108
|
+
type Char<N extends number> = BrandedString<{
|
|
109
|
+
__charLength: N;
|
|
110
|
+
}>;
|
|
111
|
+
type Varchar<N extends number> = BrandedString<{
|
|
112
|
+
__varcharLength: N;
|
|
113
|
+
}>;
|
|
114
|
+
type Numeric<P extends number, S extends number | undefined = undefined> = BrandedString<{
|
|
115
|
+
__numericPrecision: P;
|
|
116
|
+
__numericScale: S;
|
|
117
|
+
}>;
|
|
118
|
+
type Bit<N extends number> = BrandedString<{
|
|
119
|
+
__bitLength: N;
|
|
120
|
+
}>;
|
|
121
|
+
type VarBit<N extends number> = BrandedString<{
|
|
122
|
+
__varbitLength: N;
|
|
123
|
+
}>;
|
|
124
|
+
type Timestamp<P extends number | undefined = undefined> = BrandedString<{
|
|
125
|
+
__timestampPrecision: P;
|
|
126
|
+
}>;
|
|
127
|
+
type Timestamptz<P extends number | undefined = undefined> = BrandedString<{
|
|
128
|
+
__timestamptzPrecision: P;
|
|
129
|
+
}>;
|
|
130
|
+
type Time<P extends number | undefined = undefined> = BrandedString<{
|
|
131
|
+
__timePrecision: P;
|
|
132
|
+
}>;
|
|
133
|
+
type Timetz<P extends number | undefined = undefined> = BrandedString<{
|
|
134
|
+
__timetzPrecision: P;
|
|
135
|
+
}>;
|
|
136
|
+
type Interval<P extends number | undefined = undefined> = BrandedString<{
|
|
137
|
+
__intervalPrecision: P;
|
|
138
|
+
}>;
|
|
139
|
+
//#endregion
|
|
140
|
+
export { Bit, Char, CodecTypes, Interval, type JsonValue, Numeric, Time, Timestamp, Timestamptz, Timetz, VarBit, Varchar, dataTypes };
|
|
141
|
+
//# sourceMappingURL=codec-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec-types.d.mts","names":[],"sources":["../src/core/codecs.ts","../src/exports/codec-types.ts"],"sourcesContent":[],"mappings":";;;;;KAuFY,SAAA;0BAKkB;aACjB;cAiaP,8CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAED,YAAA,UAAoB,MAAA,CAAO;;;;;;;;;;;;KC1gBlC,kBAAA;;;;;;;KAQA,iCAAiC;;;;;;;;;;+BAO5B,qBAEF,YACJ;KAEQ,UAAA,GAAa;wBACD;;wBACyC;eACnD,MACL,4BAA4B;;yBAEZ;;wBACwC;eACnD,MACL,4BAA4B;;;KAOhC,yBAAyB,2BAA2B,2BAClC,QAAQ,MAAM;KAGhC,4BAA4B,2BAA2B,gBAAgB;KAEhE,yBAAyB;gBAA8B;;KACvD,4BAA4B;mBAAiC;;KAC7D,sEAAsE;sBAC5D;kBACJ;;KAEN,wBAAwB,aD0bxB,CAAA;EAAA,WAAA,EC1bqD,CD0brD;AA8BZ,CAAA,CAAA;AAEY,KCzdA,MDydA,CAAU,UAAA,MAAU,CAAA,GCzdO,aDydU,CAAA;kBCzdsB;;KAC3D,sDAAsD;EAlD7D,oBAAA,EAmDmB,CAnDD;AAAA,CAAA,CAAA;AAQe,KA6C1B,WA7C0B,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GA6C8B,aA7C9B,CAAA;EAO5B,sBAAA,EAuCgB,CAvChB;CAEF,CAAA;AACJ,KAsCQ,IAtCR,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAsCyD,aAtCzD,CAAA;EAAS,eAAA,EAsCiF,CAtCjF;AAEb,CAAA,CAAA;AAAyB,KAqCb,MArCa,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAqCsC,aArCtC,CAAA;EACD,iBAAA,EAqCH,CArCG;CACyC,CAAA;AACnD,KAqCF,QArCE,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAqCmD,aArCnD,CAAA;EACuB,mBAAA,EAqCd,CArCc;CAA5B,CAAA"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { S as PG_VARCHAR_CODEC_ID, _ as PG_TIMESTAMPTZ_CODEC_ID, a as PG_FLOAT4_CODEC_ID, b as PG_TIME_CODEC_ID, c as PG_INT2_CODEC_ID, d as PG_INTERVAL_CODEC_ID, f as PG_INT_CODEC_ID, g as PG_TEXT_CODEC_ID, h as PG_NUMERIC_CODEC_ID, i as PG_ENUM_CODEC_ID, l as PG_INT4_CODEC_ID, m as PG_JSON_CODEC_ID, n as PG_BOOL_CODEC_ID, o as PG_FLOAT8_CODEC_ID, p as PG_JSONB_CODEC_ID, r as PG_CHAR_CODEC_ID, s as PG_FLOAT_CODEC_ID, t as PG_BIT_CODEC_ID, u as PG_INT8_CODEC_ID, v as PG_TIMESTAMP_CODEC_ID, x as PG_VARBIT_CODEC_ID, y as PG_TIMETZ_CODEC_ID } from "./codec-ids-Bsm9c7ns.mjs";
|
|
2
|
+
import { codec, defineCodecs, sqlCodecDefinitions } from "@prisma-next/sql-relational-core/ast";
|
|
3
|
+
import { ifDefined } from "@prisma-next/utils/defined";
|
|
4
|
+
import { type } from "arktype";
|
|
5
|
+
|
|
6
|
+
//#region src/core/codecs.ts
|
|
7
|
+
const lengthParamsSchema = type({ length: "number.integer > 0" });
|
|
8
|
+
const numericParamsSchema = type({
|
|
9
|
+
precision: "number.integer > 0 & number.integer <= 1000",
|
|
10
|
+
"scale?": "number.integer >= 0"
|
|
11
|
+
});
|
|
12
|
+
const precisionParamsSchema = type({ "precision?": "number.integer >= 0 & number.integer <= 6" });
|
|
13
|
+
function aliasCodec(base, options) {
|
|
14
|
+
return {
|
|
15
|
+
id: options.typeId,
|
|
16
|
+
targetTypes: options.targetTypes,
|
|
17
|
+
...ifDefined("meta", options.meta),
|
|
18
|
+
...ifDefined("paramsSchema", base.paramsSchema),
|
|
19
|
+
...ifDefined("init", base.init),
|
|
20
|
+
...ifDefined("encode", base.encode),
|
|
21
|
+
...ifDefined("traits", base.traits),
|
|
22
|
+
decode: base.decode
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const sqlCharCodec = sqlCodecDefinitions.char.codec;
|
|
26
|
+
const sqlVarcharCodec = sqlCodecDefinitions.varchar.codec;
|
|
27
|
+
const sqlIntCodec = sqlCodecDefinitions.int.codec;
|
|
28
|
+
const sqlFloatCodec = sqlCodecDefinitions.float.codec;
|
|
29
|
+
const pgTextCodec = codec({
|
|
30
|
+
typeId: PG_TEXT_CODEC_ID,
|
|
31
|
+
targetTypes: ["text"],
|
|
32
|
+
traits: [
|
|
33
|
+
"equality",
|
|
34
|
+
"order",
|
|
35
|
+
"textual"
|
|
36
|
+
],
|
|
37
|
+
encode: (value) => value,
|
|
38
|
+
decode: (wire) => wire,
|
|
39
|
+
meta: { db: { sql: { postgres: { nativeType: "text" } } } }
|
|
40
|
+
});
|
|
41
|
+
const pgCharCodec = aliasCodec(sqlCharCodec, {
|
|
42
|
+
typeId: PG_CHAR_CODEC_ID,
|
|
43
|
+
targetTypes: ["character"],
|
|
44
|
+
meta: { db: { sql: { postgres: { nativeType: "character" } } } }
|
|
45
|
+
});
|
|
46
|
+
const pgVarcharCodec = aliasCodec(sqlVarcharCodec, {
|
|
47
|
+
typeId: PG_VARCHAR_CODEC_ID,
|
|
48
|
+
targetTypes: ["character varying"],
|
|
49
|
+
meta: { db: { sql: { postgres: { nativeType: "character varying" } } } }
|
|
50
|
+
});
|
|
51
|
+
const pgIntCodec = aliasCodec(sqlIntCodec, {
|
|
52
|
+
typeId: PG_INT_CODEC_ID,
|
|
53
|
+
targetTypes: ["int4"],
|
|
54
|
+
meta: { db: { sql: { postgres: { nativeType: "integer" } } } }
|
|
55
|
+
});
|
|
56
|
+
const pgFloatCodec = aliasCodec(sqlFloatCodec, {
|
|
57
|
+
typeId: PG_FLOAT_CODEC_ID,
|
|
58
|
+
targetTypes: ["float8"],
|
|
59
|
+
meta: { db: { sql: { postgres: { nativeType: "double precision" } } } }
|
|
60
|
+
});
|
|
61
|
+
const pgInt4Codec = codec({
|
|
62
|
+
typeId: PG_INT4_CODEC_ID,
|
|
63
|
+
targetTypes: ["int4"],
|
|
64
|
+
traits: [
|
|
65
|
+
"equality",
|
|
66
|
+
"order",
|
|
67
|
+
"numeric"
|
|
68
|
+
],
|
|
69
|
+
encode: (value) => value,
|
|
70
|
+
decode: (wire) => wire,
|
|
71
|
+
meta: { db: { sql: { postgres: { nativeType: "integer" } } } }
|
|
72
|
+
});
|
|
73
|
+
const pgNumericCodec = codec({
|
|
74
|
+
typeId: PG_NUMERIC_CODEC_ID,
|
|
75
|
+
targetTypes: ["numeric", "decimal"],
|
|
76
|
+
traits: [
|
|
77
|
+
"equality",
|
|
78
|
+
"order",
|
|
79
|
+
"numeric"
|
|
80
|
+
],
|
|
81
|
+
encode: (value) => value,
|
|
82
|
+
decode: (wire) => {
|
|
83
|
+
if (typeof wire === "number") return String(wire);
|
|
84
|
+
return wire;
|
|
85
|
+
},
|
|
86
|
+
paramsSchema: numericParamsSchema,
|
|
87
|
+
meta: { db: { sql: { postgres: { nativeType: "numeric" } } } }
|
|
88
|
+
});
|
|
89
|
+
const pgInt2Codec = codec({
|
|
90
|
+
typeId: PG_INT2_CODEC_ID,
|
|
91
|
+
targetTypes: ["int2"],
|
|
92
|
+
traits: [
|
|
93
|
+
"equality",
|
|
94
|
+
"order",
|
|
95
|
+
"numeric"
|
|
96
|
+
],
|
|
97
|
+
encode: (value) => value,
|
|
98
|
+
decode: (wire) => wire,
|
|
99
|
+
meta: { db: { sql: { postgres: { nativeType: "smallint" } } } }
|
|
100
|
+
});
|
|
101
|
+
const pgInt8Codec = codec({
|
|
102
|
+
typeId: PG_INT8_CODEC_ID,
|
|
103
|
+
targetTypes: ["int8"],
|
|
104
|
+
traits: [
|
|
105
|
+
"equality",
|
|
106
|
+
"order",
|
|
107
|
+
"numeric"
|
|
108
|
+
],
|
|
109
|
+
encode: (value) => value,
|
|
110
|
+
decode: (wire) => wire,
|
|
111
|
+
meta: { db: { sql: { postgres: { nativeType: "bigint" } } } }
|
|
112
|
+
});
|
|
113
|
+
const pgFloat4Codec = codec({
|
|
114
|
+
typeId: PG_FLOAT4_CODEC_ID,
|
|
115
|
+
targetTypes: ["float4"],
|
|
116
|
+
traits: [
|
|
117
|
+
"equality",
|
|
118
|
+
"order",
|
|
119
|
+
"numeric"
|
|
120
|
+
],
|
|
121
|
+
encode: (value) => value,
|
|
122
|
+
decode: (wire) => wire,
|
|
123
|
+
meta: { db: { sql: { postgres: { nativeType: "real" } } } }
|
|
124
|
+
});
|
|
125
|
+
const pgFloat8Codec = codec({
|
|
126
|
+
typeId: PG_FLOAT8_CODEC_ID,
|
|
127
|
+
targetTypes: ["float8"],
|
|
128
|
+
traits: [
|
|
129
|
+
"equality",
|
|
130
|
+
"order",
|
|
131
|
+
"numeric"
|
|
132
|
+
],
|
|
133
|
+
encode: (value) => value,
|
|
134
|
+
decode: (wire) => wire,
|
|
135
|
+
meta: { db: { sql: { postgres: { nativeType: "double precision" } } } }
|
|
136
|
+
});
|
|
137
|
+
const pgTimestampCodec = codec({
|
|
138
|
+
typeId: PG_TIMESTAMP_CODEC_ID,
|
|
139
|
+
targetTypes: ["timestamp"],
|
|
140
|
+
traits: ["equality", "order"],
|
|
141
|
+
encode: (value) => {
|
|
142
|
+
if (value instanceof Date) return value.toISOString();
|
|
143
|
+
if (typeof value === "string") return value;
|
|
144
|
+
return String(value);
|
|
145
|
+
},
|
|
146
|
+
decode: (wire) => {
|
|
147
|
+
if (wire instanceof Date) return wire.toISOString();
|
|
148
|
+
return wire;
|
|
149
|
+
},
|
|
150
|
+
paramsSchema: precisionParamsSchema,
|
|
151
|
+
meta: { db: { sql: { postgres: { nativeType: "timestamp without time zone" } } } }
|
|
152
|
+
});
|
|
153
|
+
const pgTimestamptzCodec = codec({
|
|
154
|
+
typeId: PG_TIMESTAMPTZ_CODEC_ID,
|
|
155
|
+
targetTypes: ["timestamptz"],
|
|
156
|
+
traits: ["equality", "order"],
|
|
157
|
+
encode: (value) => {
|
|
158
|
+
if (value instanceof Date) return value.toISOString();
|
|
159
|
+
if (typeof value === "string") return value;
|
|
160
|
+
return String(value);
|
|
161
|
+
},
|
|
162
|
+
decode: (wire) => {
|
|
163
|
+
if (wire instanceof Date) return wire.toISOString();
|
|
164
|
+
return wire;
|
|
165
|
+
},
|
|
166
|
+
paramsSchema: precisionParamsSchema,
|
|
167
|
+
meta: { db: { sql: { postgres: { nativeType: "timestamp with time zone" } } } }
|
|
168
|
+
});
|
|
169
|
+
const pgTimeCodec = codec({
|
|
170
|
+
typeId: PG_TIME_CODEC_ID,
|
|
171
|
+
targetTypes: ["time"],
|
|
172
|
+
traits: ["equality", "order"],
|
|
173
|
+
encode: (value) => value,
|
|
174
|
+
decode: (wire) => wire,
|
|
175
|
+
paramsSchema: precisionParamsSchema,
|
|
176
|
+
meta: { db: { sql: { postgres: { nativeType: "time" } } } }
|
|
177
|
+
});
|
|
178
|
+
const pgTimetzCodec = codec({
|
|
179
|
+
typeId: PG_TIMETZ_CODEC_ID,
|
|
180
|
+
targetTypes: ["timetz"],
|
|
181
|
+
traits: ["equality", "order"],
|
|
182
|
+
encode: (value) => value,
|
|
183
|
+
decode: (wire) => wire,
|
|
184
|
+
paramsSchema: precisionParamsSchema,
|
|
185
|
+
meta: { db: { sql: { postgres: { nativeType: "timetz" } } } }
|
|
186
|
+
});
|
|
187
|
+
const pgBoolCodec = codec({
|
|
188
|
+
typeId: PG_BOOL_CODEC_ID,
|
|
189
|
+
targetTypes: ["bool"],
|
|
190
|
+
traits: ["equality", "boolean"],
|
|
191
|
+
encode: (value) => value,
|
|
192
|
+
decode: (wire) => wire,
|
|
193
|
+
meta: { db: { sql: { postgres: { nativeType: "boolean" } } } }
|
|
194
|
+
});
|
|
195
|
+
const pgBitCodec = codec({
|
|
196
|
+
typeId: PG_BIT_CODEC_ID,
|
|
197
|
+
targetTypes: ["bit"],
|
|
198
|
+
traits: ["equality", "order"],
|
|
199
|
+
encode: (value) => value,
|
|
200
|
+
decode: (wire) => wire,
|
|
201
|
+
paramsSchema: lengthParamsSchema,
|
|
202
|
+
meta: { db: { sql: { postgres: { nativeType: "bit" } } } }
|
|
203
|
+
});
|
|
204
|
+
const pgVarbitCodec = codec({
|
|
205
|
+
typeId: PG_VARBIT_CODEC_ID,
|
|
206
|
+
targetTypes: ["bit varying"],
|
|
207
|
+
traits: ["equality", "order"],
|
|
208
|
+
encode: (value) => value,
|
|
209
|
+
decode: (wire) => wire,
|
|
210
|
+
paramsSchema: lengthParamsSchema,
|
|
211
|
+
meta: { db: { sql: { postgres: { nativeType: "bit varying" } } } }
|
|
212
|
+
});
|
|
213
|
+
const pgEnumCodec = codec({
|
|
214
|
+
typeId: PG_ENUM_CODEC_ID,
|
|
215
|
+
targetTypes: ["enum"],
|
|
216
|
+
traits: ["equality", "order"],
|
|
217
|
+
encode: (value) => value,
|
|
218
|
+
decode: (wire) => wire
|
|
219
|
+
});
|
|
220
|
+
const pgIntervalCodec = codec({
|
|
221
|
+
typeId: PG_INTERVAL_CODEC_ID,
|
|
222
|
+
targetTypes: ["interval"],
|
|
223
|
+
traits: ["equality", "order"],
|
|
224
|
+
encode: (value) => value,
|
|
225
|
+
decode: (wire) => {
|
|
226
|
+
if (typeof wire === "string") return wire;
|
|
227
|
+
return JSON.stringify(wire);
|
|
228
|
+
},
|
|
229
|
+
paramsSchema: precisionParamsSchema,
|
|
230
|
+
meta: { db: { sql: { postgres: { nativeType: "interval" } } } }
|
|
231
|
+
});
|
|
232
|
+
const pgJsonCodec = codec({
|
|
233
|
+
typeId: PG_JSON_CODEC_ID,
|
|
234
|
+
targetTypes: ["json"],
|
|
235
|
+
traits: [],
|
|
236
|
+
encode: (value) => JSON.stringify(value),
|
|
237
|
+
decode: (wire) => typeof wire === "string" ? JSON.parse(wire) : wire,
|
|
238
|
+
meta: { db: { sql: { postgres: { nativeType: "json" } } } }
|
|
239
|
+
});
|
|
240
|
+
const pgJsonbCodec = codec({
|
|
241
|
+
typeId: PG_JSONB_CODEC_ID,
|
|
242
|
+
targetTypes: ["jsonb"],
|
|
243
|
+
traits: ["equality"],
|
|
244
|
+
encode: (value) => JSON.stringify(value),
|
|
245
|
+
decode: (wire) => typeof wire === "string" ? JSON.parse(wire) : wire,
|
|
246
|
+
meta: { db: { sql: { postgres: { nativeType: "jsonb" } } } }
|
|
247
|
+
});
|
|
248
|
+
const codecs = defineCodecs().add("char", sqlCharCodec).add("varchar", sqlVarcharCodec).add("int", sqlIntCodec).add("float", sqlFloatCodec).add("text", pgTextCodec).add("character", pgCharCodec).add("character varying", pgVarcharCodec).add("integer", pgIntCodec).add("double precision", pgFloatCodec).add("int4", pgInt4Codec).add("int2", pgInt2Codec).add("int8", pgInt8Codec).add("float4", pgFloat4Codec).add("float8", pgFloat8Codec).add("numeric", pgNumericCodec).add("timestamp", pgTimestampCodec).add("timestamptz", pgTimestamptzCodec).add("time", pgTimeCodec).add("timetz", pgTimetzCodec).add("bool", pgBoolCodec).add("bit", pgBitCodec).add("bit varying", pgVarbitCodec).add("interval", pgIntervalCodec).add("enum", pgEnumCodec).add("json", pgJsonCodec).add("jsonb", pgJsonbCodec);
|
|
249
|
+
const codecDefinitions = codecs.codecDefinitions;
|
|
250
|
+
const dataTypes = codecs.dataTypes;
|
|
251
|
+
|
|
252
|
+
//#endregion
|
|
253
|
+
export { dataTypes as n, codecDefinitions as t };
|
|
254
|
+
//# sourceMappingURL=codecs-DgJcyEBR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs-DgJcyEBR.mjs","names":["arktype"],"sources":["../src/core/codecs.ts"],"sourcesContent":["/**\n * Unified codec definitions for Postgres adapter.\n *\n * This file contains a single source of truth for all codec information:\n * - Scalar names\n * - Type IDs\n * - Codec implementations (runtime)\n * - Type information (compile-time)\n *\n * This structure is used both at runtime (to populate the registry) and\n * at compile time (to derive CodecTypes).\n */\n\nimport type { Codec, CodecMeta, CodecTrait } from '@prisma-next/sql-relational-core/ast';\nimport { codec, defineCodecs, sqlCodecDefinitions } from '@prisma-next/sql-relational-core/ast';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { type as arktype } from 'arktype';\nimport {\n PG_BIT_CODEC_ID,\n PG_BOOL_CODEC_ID,\n PG_CHAR_CODEC_ID,\n PG_ENUM_CODEC_ID,\n PG_FLOAT_CODEC_ID,\n PG_FLOAT4_CODEC_ID,\n PG_FLOAT8_CODEC_ID,\n PG_INT_CODEC_ID,\n PG_INT2_CODEC_ID,\n PG_INT4_CODEC_ID,\n PG_INT8_CODEC_ID,\n PG_INTERVAL_CODEC_ID,\n PG_JSON_CODEC_ID,\n PG_JSONB_CODEC_ID,\n PG_NUMERIC_CODEC_ID,\n PG_TEXT_CODEC_ID,\n PG_TIME_CODEC_ID,\n PG_TIMESTAMP_CODEC_ID,\n PG_TIMESTAMPTZ_CODEC_ID,\n PG_TIMETZ_CODEC_ID,\n PG_VARBIT_CODEC_ID,\n PG_VARCHAR_CODEC_ID,\n} from './codec-ids';\n\nconst lengthParamsSchema = arktype({\n length: 'number.integer > 0',\n});\n\nconst numericParamsSchema = arktype({\n precision: 'number.integer > 0 & number.integer <= 1000',\n 'scale?': 'number.integer >= 0',\n});\n\nconst precisionParamsSchema = arktype({\n 'precision?': 'number.integer >= 0 & number.integer <= 6',\n});\n\nfunction aliasCodec<\n Id extends string,\n TTraits extends readonly CodecTrait[],\n TWire,\n TJs,\n TParams,\n THelper,\n>(\n base: Codec<string, TTraits, TWire, TJs, TParams, THelper>,\n options: {\n readonly typeId: Id;\n readonly targetTypes: readonly string[];\n readonly meta?: CodecMeta;\n },\n): Codec<Id, TTraits, TWire, TJs, TParams, THelper> {\n return {\n id: options.typeId,\n targetTypes: options.targetTypes,\n ...ifDefined('meta', options.meta),\n ...ifDefined('paramsSchema', base.paramsSchema),\n ...ifDefined('init', base.init),\n ...ifDefined('encode', base.encode),\n ...ifDefined('traits', base.traits),\n decode: base.decode,\n } as Codec<Id, TTraits, TWire, TJs, TParams, THelper>;\n}\n\nconst sqlCharCodec = sqlCodecDefinitions.char.codec;\nconst sqlVarcharCodec = sqlCodecDefinitions.varchar.codec;\nconst sqlIntCodec = sqlCodecDefinitions.int.codec;\nconst sqlFloatCodec = sqlCodecDefinitions.float.codec;\n\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | { readonly [key: string]: JsonValue }\n | readonly JsonValue[];\n\n// Create individual codec instances\nconst pgTextCodec = codec({\n typeId: PG_TEXT_CODEC_ID,\n targetTypes: ['text'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'text',\n },\n },\n },\n },\n});\n\nconst pgCharCodec = aliasCodec(sqlCharCodec, {\n typeId: PG_CHAR_CODEC_ID,\n targetTypes: ['character'],\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'character',\n },\n },\n },\n },\n});\n\nconst pgVarcharCodec = aliasCodec(sqlVarcharCodec, {\n typeId: PG_VARCHAR_CODEC_ID,\n targetTypes: ['character varying'],\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'character varying',\n },\n },\n },\n },\n});\n\nconst pgIntCodec = aliasCodec(sqlIntCodec, {\n typeId: PG_INT_CODEC_ID,\n targetTypes: ['int4'],\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'integer',\n },\n },\n },\n },\n});\n\nconst pgFloatCodec = aliasCodec(sqlFloatCodec, {\n typeId: PG_FLOAT_CODEC_ID,\n targetTypes: ['float8'],\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'double precision',\n },\n },\n },\n },\n});\n\nconst pgInt4Codec = codec({\n typeId: PG_INT4_CODEC_ID,\n targetTypes: ['int4'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'integer',\n },\n },\n },\n },\n});\n\nconst pgNumericCodec = codec<\n typeof PG_NUMERIC_CODEC_ID,\n readonly ['equality', 'order', 'numeric'],\n string,\n string\n>({\n typeId: PG_NUMERIC_CODEC_ID,\n targetTypes: ['numeric', 'decimal'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: string): string => value,\n decode: (wire: string | number): string => {\n if (typeof wire === 'number') return String(wire);\n return wire;\n },\n paramsSchema: numericParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'numeric',\n },\n },\n },\n },\n});\n\nconst pgInt2Codec = codec({\n typeId: PG_INT2_CODEC_ID,\n targetTypes: ['int2'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'smallint',\n },\n },\n },\n },\n});\n\nconst pgInt8Codec = codec({\n typeId: PG_INT8_CODEC_ID,\n targetTypes: ['int8'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'bigint',\n },\n },\n },\n },\n});\n\nconst pgFloat4Codec = codec({\n typeId: PG_FLOAT4_CODEC_ID,\n targetTypes: ['float4'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'real',\n },\n },\n },\n },\n});\n\nconst pgFloat8Codec = codec({\n typeId: PG_FLOAT8_CODEC_ID,\n targetTypes: ['float8'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'double precision',\n },\n },\n },\n },\n});\n\nconst pgTimestampCodec = codec<\n typeof PG_TIMESTAMP_CODEC_ID,\n readonly ['equality', 'order'],\n string | Date,\n string\n>({\n typeId: PG_TIMESTAMP_CODEC_ID,\n targetTypes: ['timestamp'],\n traits: ['equality', 'order'],\n encode: (value: string | Date): string => {\n if (value instanceof Date) return value.toISOString();\n if (typeof value === 'string') return value;\n return String(value);\n },\n decode: (wire: string | Date): string => {\n if (wire instanceof Date) return wire.toISOString();\n return wire;\n },\n paramsSchema: precisionParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'timestamp without time zone',\n },\n },\n },\n },\n});\n\nconst pgTimestamptzCodec = codec<\n typeof PG_TIMESTAMPTZ_CODEC_ID,\n readonly ['equality', 'order'],\n string | Date,\n string\n>({\n typeId: PG_TIMESTAMPTZ_CODEC_ID,\n targetTypes: ['timestamptz'],\n traits: ['equality', 'order'],\n encode: (value: string | Date): string => {\n if (value instanceof Date) return value.toISOString();\n if (typeof value === 'string') return value;\n return String(value);\n },\n decode: (wire: string | Date): string => {\n if (wire instanceof Date) return wire.toISOString();\n return wire;\n },\n paramsSchema: precisionParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'timestamp with time zone',\n },\n },\n },\n },\n});\n\nconst pgTimeCodec = codec<typeof PG_TIME_CODEC_ID, readonly ['equality', 'order'], string, string>({\n typeId: PG_TIME_CODEC_ID,\n targetTypes: ['time'],\n traits: ['equality', 'order'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: precisionParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'time',\n },\n },\n },\n },\n});\n\nconst pgTimetzCodec = codec<\n typeof PG_TIMETZ_CODEC_ID,\n readonly ['equality', 'order'],\n string,\n string\n>({\n typeId: PG_TIMETZ_CODEC_ID,\n targetTypes: ['timetz'],\n traits: ['equality', 'order'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: precisionParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'timetz',\n },\n },\n },\n },\n});\n\nconst pgBoolCodec = codec({\n typeId: PG_BOOL_CODEC_ID,\n targetTypes: ['bool'],\n traits: ['equality', 'boolean'],\n encode: (value: boolean): boolean => value,\n decode: (wire: boolean): boolean => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'boolean',\n },\n },\n },\n },\n});\n\nconst pgBitCodec = codec<typeof PG_BIT_CODEC_ID, readonly ['equality', 'order'], string, string>({\n typeId: PG_BIT_CODEC_ID,\n targetTypes: ['bit'],\n traits: ['equality', 'order'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: lengthParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'bit',\n },\n },\n },\n },\n});\n\nconst pgVarbitCodec = codec<\n typeof PG_VARBIT_CODEC_ID,\n readonly ['equality', 'order'],\n string,\n string\n>({\n typeId: PG_VARBIT_CODEC_ID,\n targetTypes: ['bit varying'],\n traits: ['equality', 'order'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: lengthParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'bit varying',\n },\n },\n },\n },\n});\n\nconst pgEnumCodec = codec({\n typeId: PG_ENUM_CODEC_ID,\n targetTypes: ['enum'],\n traits: ['equality', 'order'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n});\n\nconst pgIntervalCodec = codec<\n typeof PG_INTERVAL_CODEC_ID,\n readonly ['equality', 'order'],\n string | Record<string, unknown>,\n string\n>({\n typeId: PG_INTERVAL_CODEC_ID,\n targetTypes: ['interval'],\n traits: ['equality', 'order'],\n encode: (value: string): string => value,\n decode: (wire: string | Record<string, unknown>): string => {\n if (typeof wire === 'string') return wire;\n return JSON.stringify(wire);\n },\n paramsSchema: precisionParamsSchema,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'interval',\n },\n },\n },\n },\n});\n\nconst pgJsonCodec = codec({\n typeId: PG_JSON_CODEC_ID,\n targetTypes: ['json'],\n traits: [],\n encode: (value: string | JsonValue): string => JSON.stringify(value),\n decode: (wire: string | JsonValue): JsonValue =>\n typeof wire === 'string' ? JSON.parse(wire) : wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'json',\n },\n },\n },\n },\n});\n\nconst pgJsonbCodec = codec({\n typeId: PG_JSONB_CODEC_ID,\n targetTypes: ['jsonb'],\n traits: ['equality'],\n encode: (value: string | JsonValue): string => JSON.stringify(value),\n decode: (wire: string | JsonValue): JsonValue =>\n typeof wire === 'string' ? JSON.parse(wire) : wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'jsonb',\n },\n },\n },\n },\n});\n\n// Build codec definitions using the builder DSL\nconst codecs = defineCodecs()\n .add('char', sqlCharCodec)\n .add('varchar', sqlVarcharCodec)\n .add('int', sqlIntCodec)\n .add('float', sqlFloatCodec)\n .add('text', pgTextCodec)\n .add('character', pgCharCodec)\n .add('character varying', pgVarcharCodec)\n .add('integer', pgIntCodec)\n .add('double precision', pgFloatCodec)\n .add('int4', pgInt4Codec)\n .add('int2', pgInt2Codec)\n .add('int8', pgInt8Codec)\n .add('float4', pgFloat4Codec)\n .add('float8', pgFloat8Codec)\n .add('numeric', pgNumericCodec)\n .add('timestamp', pgTimestampCodec)\n .add('timestamptz', pgTimestamptzCodec)\n .add('time', pgTimeCodec)\n .add('timetz', pgTimetzCodec)\n .add('bool', pgBoolCodec)\n .add('bit', pgBitCodec)\n .add('bit varying', pgVarbitCodec)\n .add('interval', pgIntervalCodec)\n .add('enum', pgEnumCodec)\n .add('json', pgJsonCodec)\n .add('jsonb', pgJsonbCodec);\n\n// Export derived structures directly from codecs builder\nexport const codecDefinitions = codecs.codecDefinitions;\nexport const dataTypes = codecs.dataTypes;\n\nexport type CodecTypes = typeof codecs.CodecTypes;\n"],"mappings":"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"}
|