@prisma-next/adapter-postgres 0.3.0-dev.33 → 0.3.0-dev.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -2
- package/dist/adapter-DB1CK2jM.mjs +265 -0
- package/dist/adapter-DB1CK2jM.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-DcC1nPzh.mjs +206 -0
- package/dist/codecs-DcC1nPzh.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 +111 -0
- package/dist/control.d.mts.map +1 -0
- package/dist/control.mjs +405 -0
- package/dist/control.mjs.map +1 -0
- package/dist/descriptor-meta-D7pxo-wo.mjs +996 -0
- package/dist/descriptor-meta-D7pxo-wo.mjs.map +1 -0
- package/dist/runtime.d.mts +19 -0
- package/dist/runtime.d.mts.map +1 -0
- package/dist/runtime.mjs +85 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/types-BY395pUv.d.mts +19 -0
- package/dist/types-BY395pUv.d.mts.map +1 -0
- package/dist/types.d.mts +2 -0
- package/dist/types.mjs +1 -0
- package/package.json +32 -41
- package/src/core/adapter.ts +90 -17
- package/src/core/codec-ids.ts +28 -0
- package/src/core/codecs.ts +316 -19
- package/src/core/control-adapter.ts +341 -180
- package/src/core/default-normalizer.ts +77 -0
- package/src/core/descriptor-meta.ts +221 -9
- package/src/core/enum-control-hooks.ts +735 -0
- package/src/core/json-schema-type-expression.ts +131 -0
- package/src/core/json-schema-validator.ts +53 -0
- package/src/core/parameterized-types.ts +118 -0
- package/src/core/sql-utils.ts +111 -0
- package/src/core/standard-schema.ts +71 -0
- package/src/exports/codec-types.ts +73 -1
- package/src/exports/column-types.ts +233 -9
- package/src/exports/control.ts +16 -9
- package/src/exports/runtime.ts +61 -18
- 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-Y6L4BBLR.js +0 -309
- package/dist/chunk-Y6L4BBLR.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":"codec-types.d.mts","names":[],"sources":["../src/core/codecs.ts","../src/exports/codec-types.ts"],"sourcesContent":[],"mappings":";;;;;KAqFY,SAAA;0BAKkB;aACjB;cA8WP,8CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAGD,YAAA,UAAoB,MAAA,CAAO;;;;;;;;;;;;KCtdlC,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;eAA6B;CDqYrD,CAAA;AA8BC,KClaD,MDka6B,CAAA,UAAA,MAAA,CAAA,GClaF,aDkaE,CAAA;EAG7B,cAAA,ECra2D,CDqajD;;KCpaV,sDAAsD;wBAC1C;AA9DsD,CAAA,CAAA;AAmBzE,KA6CO,WA7CP,CAAA,UAA2B,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GA6CoC,aA7CpC,CAAA;EAAM,sBAAA,EA8CZ,CA9CY;CAO5B,CAAA;AAEF,KAuCI,IAvCJ,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAuCqD,aAvCrD,CAAA;EACJ,eAAA,EAsC0F,CAtC1F;CAAS,CAAA;AAED,KAqCA,MArCU,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAqCyC,aArCzC,CAAA;EAAG,iBAAA,EAsCJ,CAtCI;CACD,CAAA;AACyC,KAsCrD,QAtCqD,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAsCA,aAtCA,CAAA;EACnD,mBAAA,EAsCS,CAtCT;CACuB,CAAA"}
|
|
@@ -0,0 +1,206 @@
|
|
|
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
|
+
decode: base.decode
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const sqlCharCodec = sqlCodecDefinitions.char.codec;
|
|
25
|
+
const sqlVarcharCodec = sqlCodecDefinitions.varchar.codec;
|
|
26
|
+
const sqlIntCodec = sqlCodecDefinitions.int.codec;
|
|
27
|
+
const sqlFloatCodec = sqlCodecDefinitions.float.codec;
|
|
28
|
+
const pgTextCodec = codec({
|
|
29
|
+
typeId: PG_TEXT_CODEC_ID,
|
|
30
|
+
targetTypes: ["text"],
|
|
31
|
+
encode: (value) => value,
|
|
32
|
+
decode: (wire) => wire,
|
|
33
|
+
meta: { db: { sql: { postgres: { nativeType: "text" } } } }
|
|
34
|
+
});
|
|
35
|
+
const pgCharCodec = aliasCodec(sqlCharCodec, {
|
|
36
|
+
typeId: PG_CHAR_CODEC_ID,
|
|
37
|
+
targetTypes: ["character"],
|
|
38
|
+
meta: { db: { sql: { postgres: { nativeType: "character" } } } }
|
|
39
|
+
});
|
|
40
|
+
const pgVarcharCodec = aliasCodec(sqlVarcharCodec, {
|
|
41
|
+
typeId: PG_VARCHAR_CODEC_ID,
|
|
42
|
+
targetTypes: ["character varying"],
|
|
43
|
+
meta: { db: { sql: { postgres: { nativeType: "character varying" } } } }
|
|
44
|
+
});
|
|
45
|
+
const pgIntCodec = aliasCodec(sqlIntCodec, {
|
|
46
|
+
typeId: PG_INT_CODEC_ID,
|
|
47
|
+
targetTypes: ["int4"],
|
|
48
|
+
meta: { db: { sql: { postgres: { nativeType: "integer" } } } }
|
|
49
|
+
});
|
|
50
|
+
const pgFloatCodec = aliasCodec(sqlFloatCodec, {
|
|
51
|
+
typeId: PG_FLOAT_CODEC_ID,
|
|
52
|
+
targetTypes: ["float8"],
|
|
53
|
+
meta: { db: { sql: { postgres: { nativeType: "double precision" } } } }
|
|
54
|
+
});
|
|
55
|
+
const pgInt4Codec = codec({
|
|
56
|
+
typeId: PG_INT4_CODEC_ID,
|
|
57
|
+
targetTypes: ["int4"],
|
|
58
|
+
encode: (value) => value,
|
|
59
|
+
decode: (wire) => wire,
|
|
60
|
+
meta: { db: { sql: { postgres: { nativeType: "integer" } } } }
|
|
61
|
+
});
|
|
62
|
+
const pgNumericCodec = codec({
|
|
63
|
+
typeId: PG_NUMERIC_CODEC_ID,
|
|
64
|
+
targetTypes: ["numeric", "decimal"],
|
|
65
|
+
encode: (value) => value,
|
|
66
|
+
decode: (wire) => {
|
|
67
|
+
if (typeof wire === "number") return String(wire);
|
|
68
|
+
return wire;
|
|
69
|
+
},
|
|
70
|
+
paramsSchema: numericParamsSchema,
|
|
71
|
+
meta: { db: { sql: { postgres: { nativeType: "numeric" } } } }
|
|
72
|
+
});
|
|
73
|
+
const pgInt2Codec = codec({
|
|
74
|
+
typeId: PG_INT2_CODEC_ID,
|
|
75
|
+
targetTypes: ["int2"],
|
|
76
|
+
encode: (value) => value,
|
|
77
|
+
decode: (wire) => wire,
|
|
78
|
+
meta: { db: { sql: { postgres: { nativeType: "smallint" } } } }
|
|
79
|
+
});
|
|
80
|
+
const pgInt8Codec = codec({
|
|
81
|
+
typeId: PG_INT8_CODEC_ID,
|
|
82
|
+
targetTypes: ["int8"],
|
|
83
|
+
encode: (value) => value,
|
|
84
|
+
decode: (wire) => wire,
|
|
85
|
+
meta: { db: { sql: { postgres: { nativeType: "bigint" } } } }
|
|
86
|
+
});
|
|
87
|
+
const pgFloat4Codec = codec({
|
|
88
|
+
typeId: PG_FLOAT4_CODEC_ID,
|
|
89
|
+
targetTypes: ["float4"],
|
|
90
|
+
encode: (value) => value,
|
|
91
|
+
decode: (wire) => wire,
|
|
92
|
+
meta: { db: { sql: { postgres: { nativeType: "real" } } } }
|
|
93
|
+
});
|
|
94
|
+
const pgFloat8Codec = codec({
|
|
95
|
+
typeId: PG_FLOAT8_CODEC_ID,
|
|
96
|
+
targetTypes: ["float8"],
|
|
97
|
+
encode: (value) => value,
|
|
98
|
+
decode: (wire) => wire,
|
|
99
|
+
meta: { db: { sql: { postgres: { nativeType: "double precision" } } } }
|
|
100
|
+
});
|
|
101
|
+
const pgTimestampCodec = codec({
|
|
102
|
+
typeId: PG_TIMESTAMP_CODEC_ID,
|
|
103
|
+
targetTypes: ["timestamp"],
|
|
104
|
+
encode: (value) => {
|
|
105
|
+
if (value instanceof Date) return value.toISOString();
|
|
106
|
+
if (typeof value === "string") return value;
|
|
107
|
+
return String(value);
|
|
108
|
+
},
|
|
109
|
+
decode: (wire) => {
|
|
110
|
+
if (typeof wire === "string") return wire;
|
|
111
|
+
if (wire instanceof Date) return wire.toISOString();
|
|
112
|
+
return String(wire);
|
|
113
|
+
},
|
|
114
|
+
paramsSchema: precisionParamsSchema,
|
|
115
|
+
meta: { db: { sql: { postgres: { nativeType: "timestamp without time zone" } } } }
|
|
116
|
+
});
|
|
117
|
+
const pgTimestamptzCodec = codec({
|
|
118
|
+
typeId: PG_TIMESTAMPTZ_CODEC_ID,
|
|
119
|
+
targetTypes: ["timestamptz"],
|
|
120
|
+
encode: (value) => {
|
|
121
|
+
if (value instanceof Date) return value.toISOString();
|
|
122
|
+
if (typeof value === "string") return value;
|
|
123
|
+
return String(value);
|
|
124
|
+
},
|
|
125
|
+
decode: (wire) => {
|
|
126
|
+
if (typeof wire === "string") return wire;
|
|
127
|
+
if (wire instanceof Date) return wire.toISOString();
|
|
128
|
+
return String(wire);
|
|
129
|
+
},
|
|
130
|
+
paramsSchema: precisionParamsSchema,
|
|
131
|
+
meta: { db: { sql: { postgres: { nativeType: "timestamp with time zone" } } } }
|
|
132
|
+
});
|
|
133
|
+
const pgTimeCodec = codec({
|
|
134
|
+
typeId: PG_TIME_CODEC_ID,
|
|
135
|
+
targetTypes: ["time"],
|
|
136
|
+
encode: (value) => value,
|
|
137
|
+
decode: (wire) => wire,
|
|
138
|
+
paramsSchema: precisionParamsSchema,
|
|
139
|
+
meta: { db: { sql: { postgres: { nativeType: "time" } } } }
|
|
140
|
+
});
|
|
141
|
+
const pgTimetzCodec = codec({
|
|
142
|
+
typeId: PG_TIMETZ_CODEC_ID,
|
|
143
|
+
targetTypes: ["timetz"],
|
|
144
|
+
encode: (value) => value,
|
|
145
|
+
decode: (wire) => wire,
|
|
146
|
+
paramsSchema: precisionParamsSchema,
|
|
147
|
+
meta: { db: { sql: { postgres: { nativeType: "timetz" } } } }
|
|
148
|
+
});
|
|
149
|
+
const pgBoolCodec = codec({
|
|
150
|
+
typeId: PG_BOOL_CODEC_ID,
|
|
151
|
+
targetTypes: ["bool"],
|
|
152
|
+
encode: (value) => value,
|
|
153
|
+
decode: (wire) => wire,
|
|
154
|
+
meta: { db: { sql: { postgres: { nativeType: "boolean" } } } }
|
|
155
|
+
});
|
|
156
|
+
const pgBitCodec = codec({
|
|
157
|
+
typeId: PG_BIT_CODEC_ID,
|
|
158
|
+
targetTypes: ["bit"],
|
|
159
|
+
encode: (value) => value,
|
|
160
|
+
decode: (wire) => wire,
|
|
161
|
+
paramsSchema: lengthParamsSchema,
|
|
162
|
+
meta: { db: { sql: { postgres: { nativeType: "bit" } } } }
|
|
163
|
+
});
|
|
164
|
+
const pgVarbitCodec = codec({
|
|
165
|
+
typeId: PG_VARBIT_CODEC_ID,
|
|
166
|
+
targetTypes: ["bit varying"],
|
|
167
|
+
encode: (value) => value,
|
|
168
|
+
decode: (wire) => wire,
|
|
169
|
+
paramsSchema: lengthParamsSchema,
|
|
170
|
+
meta: { db: { sql: { postgres: { nativeType: "bit varying" } } } }
|
|
171
|
+
});
|
|
172
|
+
const pgEnumCodec = codec({
|
|
173
|
+
typeId: PG_ENUM_CODEC_ID,
|
|
174
|
+
targetTypes: ["enum"],
|
|
175
|
+
encode: (value) => value,
|
|
176
|
+
decode: (wire) => wire
|
|
177
|
+
});
|
|
178
|
+
const pgIntervalCodec = codec({
|
|
179
|
+
typeId: PG_INTERVAL_CODEC_ID,
|
|
180
|
+
targetTypes: ["interval"],
|
|
181
|
+
encode: (value) => value,
|
|
182
|
+
decode: (wire) => wire,
|
|
183
|
+
paramsSchema: precisionParamsSchema,
|
|
184
|
+
meta: { db: { sql: { postgres: { nativeType: "interval" } } } }
|
|
185
|
+
});
|
|
186
|
+
const pgJsonCodec = codec({
|
|
187
|
+
typeId: PG_JSON_CODEC_ID,
|
|
188
|
+
targetTypes: ["json"],
|
|
189
|
+
encode: (value) => JSON.stringify(value),
|
|
190
|
+
decode: (wire) => typeof wire === "string" ? JSON.parse(wire) : wire,
|
|
191
|
+
meta: { db: { sql: { postgres: { nativeType: "json" } } } }
|
|
192
|
+
});
|
|
193
|
+
const pgJsonbCodec = codec({
|
|
194
|
+
typeId: PG_JSONB_CODEC_ID,
|
|
195
|
+
targetTypes: ["jsonb"],
|
|
196
|
+
encode: (value) => JSON.stringify(value),
|
|
197
|
+
decode: (wire) => typeof wire === "string" ? JSON.parse(wire) : wire,
|
|
198
|
+
meta: { db: { sql: { postgres: { nativeType: "jsonb" } } } }
|
|
199
|
+
});
|
|
200
|
+
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);
|
|
201
|
+
const codecDefinitions = codecs.codecDefinitions;
|
|
202
|
+
const dataTypes = codecs.dataTypes;
|
|
203
|
+
|
|
204
|
+
//#endregion
|
|
205
|
+
export { dataTypes as n, codecDefinitions as t };
|
|
206
|
+
//# sourceMappingURL=codecs-DcC1nPzh.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs-DcC1nPzh.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 } 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 TWire,\n TJs,\n TParams = Record<string, unknown>,\n THelper = unknown,\n>(\n base: Codec<string, TWire, TJs, TParams, THelper>,\n options: {\n readonly typeId: Id;\n readonly targetTypes: readonly string[];\n readonly meta?: CodecMeta;\n },\n): Codec<Id, 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 decode: base.decode,\n };\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 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<typeof PG_INT4_CODEC_ID, number, number>({\n typeId: PG_INT4_CODEC_ID,\n targetTypes: ['int4'],\n encode: (value) => value,\n decode: (wire) => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'integer',\n },\n },\n },\n },\n});\n\nconst pgNumericCodec = codec<typeof PG_NUMERIC_CODEC_ID, string, string>({\n typeId: PG_NUMERIC_CODEC_ID,\n targetTypes: ['numeric', 'decimal'],\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<typeof PG_INT2_CODEC_ID, number, number>({\n typeId: PG_INT2_CODEC_ID,\n targetTypes: ['int2'],\n encode: (value) => value,\n decode: (wire) => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'smallint',\n },\n },\n },\n },\n});\n\nconst pgInt8Codec = codec<typeof PG_INT8_CODEC_ID, number, number>({\n typeId: PG_INT8_CODEC_ID,\n targetTypes: ['int8'],\n encode: (value) => value,\n decode: (wire) => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'bigint',\n },\n },\n },\n },\n});\n\nconst pgFloat4Codec = codec<typeof PG_FLOAT4_CODEC_ID, number, number>({\n typeId: PG_FLOAT4_CODEC_ID,\n targetTypes: ['float4'],\n encode: (value) => value,\n decode: (wire) => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'real',\n },\n },\n },\n },\n});\n\nconst pgFloat8Codec = codec<typeof PG_FLOAT8_CODEC_ID, number, number>({\n typeId: PG_FLOAT8_CODEC_ID,\n targetTypes: ['float8'],\n encode: (value) => value,\n decode: (wire) => wire,\n meta: {\n db: {\n sql: {\n postgres: {\n nativeType: 'double precision',\n },\n },\n },\n },\n});\n\nconst pgTimestampCodec = codec<typeof PG_TIMESTAMP_CODEC_ID, string | Date, string>({\n typeId: PG_TIMESTAMP_CODEC_ID,\n targetTypes: ['timestamp'],\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 (typeof wire === 'string') return wire;\n if (wire instanceof Date) return wire.toISOString();\n return String(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<typeof PG_TIMESTAMPTZ_CODEC_ID, string | Date, string>({\n typeId: PG_TIMESTAMPTZ_CODEC_ID,\n targetTypes: ['timestamptz'],\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 (typeof wire === 'string') return wire;\n if (wire instanceof Date) return wire.toISOString();\n return String(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, string, string>({\n typeId: PG_TIME_CODEC_ID,\n targetTypes: ['time'],\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<typeof PG_TIMETZ_CODEC_ID, string, string>({\n typeId: PG_TIMETZ_CODEC_ID,\n targetTypes: ['timetz'],\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<typeof PG_BOOL_CODEC_ID, boolean, boolean>({\n typeId: PG_BOOL_CODEC_ID,\n targetTypes: ['bool'],\n encode: (value) => value,\n decode: (wire) => 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, string, string>({\n typeId: PG_BIT_CODEC_ID,\n targetTypes: ['bit'],\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<typeof PG_VARBIT_CODEC_ID, string, string>({\n typeId: PG_VARBIT_CODEC_ID,\n targetTypes: ['bit varying'],\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<typeof PG_ENUM_CODEC_ID, string, string>({\n typeId: PG_ENUM_CODEC_ID,\n targetTypes: ['enum'],\n encode: (value) => value,\n decode: (wire) => wire,\n});\n\nconst pgIntervalCodec = codec<typeof PG_INTERVAL_CODEC_ID, string, string>({\n typeId: PG_INTERVAL_CODEC_ID,\n targetTypes: ['interval'],\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: 'interval',\n },\n },\n },\n },\n});\n\nconst pgJsonCodec = codec<typeof PG_JSON_CODEC_ID, string | JsonValue, JsonValue>({\n typeId: PG_JSON_CODEC_ID,\n targetTypes: ['json'],\n encode: (value) => JSON.stringify(value),\n decode: (wire) => (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<typeof PG_JSONB_CODEC_ID, string | JsonValue, JsonValue>({\n typeId: PG_JSONB_CODEC_ID,\n targetTypes: ['jsonb'],\n encode: (value) => JSON.stringify(value),\n decode: (wire) => (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\n// Export types derived from codecs builder\nexport type CodecTypes = typeof codecs.CodecTypes;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { StorageTypeInstance } from "@prisma-next/sql-contract/types";
|
|
2
|
+
import { ColumnTypeDescriptor } from "@prisma-next/contract-authoring";
|
|
3
|
+
|
|
4
|
+
//#region src/core/standard-schema.d.ts
|
|
5
|
+
type StandardSchemaJsonSchemaField = {
|
|
6
|
+
readonly output?: unknown;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Runtime view of the Standard Schema protocol.
|
|
10
|
+
* Reads `~standard.jsonSchema.output` for the serializable JSON Schema representation,
|
|
11
|
+
* and `.expression` for an optional TypeScript type expression string (Arktype-specific).
|
|
12
|
+
*
|
|
13
|
+
* This differs from the compile-time `StandardSchemaLike` in `codec-types.ts`, which reads
|
|
14
|
+
* `~standard.types.output` for TypeScript type narrowing in contract.d.ts.
|
|
15
|
+
*/
|
|
16
|
+
type StandardSchemaLike = {
|
|
17
|
+
readonly '~standard'?: {
|
|
18
|
+
readonly version?: number;
|
|
19
|
+
readonly jsonSchema?: StandardSchemaJsonSchemaField;
|
|
20
|
+
};
|
|
21
|
+
readonly expression?: unknown;
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/exports/column-types.d.ts
|
|
25
|
+
declare const textColumn: ColumnTypeDescriptor;
|
|
26
|
+
declare function charColumn(length: number): ColumnTypeDescriptor & {
|
|
27
|
+
readonly typeParams: {
|
|
28
|
+
readonly length: number;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
declare function varcharColumn(length: number): ColumnTypeDescriptor & {
|
|
32
|
+
readonly typeParams: {
|
|
33
|
+
readonly length: number;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
declare const int4Column: ColumnTypeDescriptor;
|
|
37
|
+
declare const int2Column: ColumnTypeDescriptor;
|
|
38
|
+
declare const int8Column: ColumnTypeDescriptor;
|
|
39
|
+
declare const float4Column: ColumnTypeDescriptor;
|
|
40
|
+
declare const float8Column: ColumnTypeDescriptor;
|
|
41
|
+
declare function numericColumn(precision: number, scale?: number): ColumnTypeDescriptor & {
|
|
42
|
+
readonly typeParams: {
|
|
43
|
+
readonly precision: number;
|
|
44
|
+
readonly scale?: number;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
declare const timestampColumn: ColumnTypeDescriptor;
|
|
48
|
+
declare const timestamptzColumn: ColumnTypeDescriptor;
|
|
49
|
+
declare function timeColumn(precision?: number): ColumnTypeDescriptor & {
|
|
50
|
+
readonly typeParams?: {
|
|
51
|
+
readonly precision: number;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
declare function timetzColumn(precision?: number): ColumnTypeDescriptor & {
|
|
55
|
+
readonly typeParams?: {
|
|
56
|
+
readonly precision: number;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
declare const boolColumn: ColumnTypeDescriptor;
|
|
60
|
+
declare function bitColumn(length: number): ColumnTypeDescriptor & {
|
|
61
|
+
readonly typeParams: {
|
|
62
|
+
readonly length: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
declare function varbitColumn(length: number): ColumnTypeDescriptor & {
|
|
66
|
+
readonly typeParams: {
|
|
67
|
+
readonly length: number;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
declare function intervalColumn(precision?: number): ColumnTypeDescriptor & {
|
|
71
|
+
readonly typeParams?: {
|
|
72
|
+
readonly precision: number;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
declare const jsonColumn: ColumnTypeDescriptor;
|
|
76
|
+
declare const jsonbColumn: ColumnTypeDescriptor;
|
|
77
|
+
type JsonSchemaTypeParams = {
|
|
78
|
+
readonly schemaJson: Record<string, unknown>;
|
|
79
|
+
readonly type?: string;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Typed column descriptor for JSON/JSONB columns with Standard Schema.
|
|
83
|
+
*
|
|
84
|
+
* `typeParams.schemaJson` carries the runtime JSON Schema payload (serializable record)
|
|
85
|
+
* used by the emitter to render TypeScript type expressions in contract.d.ts.
|
|
86
|
+
*
|
|
87
|
+
* `typeParams.schema` is a phantom-only key: at runtime it does not exist, but at the
|
|
88
|
+
* type level it preserves the original `TSchema` so that `ResolveStandardSchemaOutput<P>`
|
|
89
|
+
* in codec-types.ts can resolve the output type via `~standard.types.output` or `.infer`.
|
|
90
|
+
*/
|
|
91
|
+
type TypedColumnDescriptor<TSchema extends StandardSchemaLike> = ColumnTypeDescriptor & {
|
|
92
|
+
readonly typeParams: JsonSchemaTypeParams & {
|
|
93
|
+
readonly schema: TSchema;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
declare function json(): ColumnTypeDescriptor;
|
|
97
|
+
declare function json<TSchema extends StandardSchemaLike>(schema: TSchema): TypedColumnDescriptor<TSchema>;
|
|
98
|
+
declare function jsonb(): ColumnTypeDescriptor;
|
|
99
|
+
declare function jsonb<TSchema extends StandardSchemaLike>(schema: TSchema): TypedColumnDescriptor<TSchema>;
|
|
100
|
+
declare function enumType<const Values extends readonly string[]>(name: string, values: Values): StorageTypeInstance & {
|
|
101
|
+
readonly typeParams: {
|
|
102
|
+
readonly values: Values;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
declare function enumColumn<TypeName extends string>(typeName: TypeName, nativeType: string): ColumnTypeDescriptor & {
|
|
106
|
+
readonly typeRef: TypeName;
|
|
107
|
+
};
|
|
108
|
+
//#endregion
|
|
109
|
+
export { bitColumn, boolColumn, charColumn, enumColumn, enumType, float4Column, float8Column, int2Column, int4Column, int8Column, intervalColumn, json, jsonColumn, jsonb, jsonbColumn, numericColumn, textColumn, timeColumn, timestampColumn, timestamptzColumn, timetzColumn, varbitColumn, varcharColumn };
|
|
110
|
+
//# sourceMappingURL=column-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-types.d.mts","names":[],"sources":["../src/core/standard-schema.ts","../src/exports/column-types.ts"],"sourcesContent":[],"mappings":";;;;KAEK,6BAAA;;;AAFsB;AAc3B;;;;ACwBA;AAKA;AAUA;AAUa,KDjDD,kBAAA,GCiDa;EAKZ,SAAA,WAGH,CAAA,EAAA;IAEG,SAGH,OAAA,CAAA,EAAA,MAHe;IAKZ,SAAA,UAGH,CAAA,EDhEgB,6BCgEhB;EAEG,CAAA;EAKG,SAAA,UAAa,CAAA,EAAA,OAG1B;AAUH,CAAA;;;AA/Da,cAAA,UAAY,EAAA,oBAGf;AAEM,iBAAA,UAAA,CAA4B,MAAA,EAAA,MAAoB,CAAA,EAApB,oBAAoB,GAAA;EAUhD,SAAA,UAAa,EAAA;IAUhB,SAGH,MAAA,EAAA,MAHe;EAKZ,CAAA;AAKb,CAAA;AAKa,iBAzBG,aAAA,CAyBW,MAAA,EAAA,MAGjB,CAAA,EA5BqC,oBA4BrC,GAAA;EAEG,SAAA,UAGH,EAAA;IAEM,SAAA,MAAa,EAAA,MAG1B;EAUU,CAAA;AAKb,CAAA;AAKgB,cAhDH,UAgDmC,EAhDvB,oBAgD2C;AAUpD,cArDH,UAqDqC,EArDzB,oBAqD6C;AAUzD,cA1DA,UA0DY,EA1DA,oBA6Df;AAEM,cA1DH,YA0D8B,EA1DhB,oBA0DoC;AAU/C,cA/DH,YA+DiC,EA/DnB,oBA+DuC;AAUlD,iBApEA,aAAA,CAoEoC,SAAA,EAAA,MAAoB,EAAA,KAAA,CAAA,EAAA,MAAA,CAAA,EAjErE,oBAiEqE,GAAA;EAU3D,SAAA,UAGH,EAAA;IAEG,SAAA,SAGH,EAAA,MAHgB;IAKrB,SAAA,KAAA,CAAA,EAAA,MAAoB;EA6BpB,CAAA;CAAsC;AAAsB,cAxGpD,eAwGoD,EAxGnC,oBAwGmC;AAC1C,cApGV,iBAoGU,EApGS,oBAoGT;AAA0C,iBA/FjD,UAAA,CA+FiD,SAAA,CAAA,EAAA,MAAA,CAAA,EA/FjB,oBA+FiB,GAAA;EAAO,SAAA,UAAA,CAAA,EAAA;IAkCxD,SAAI,SAAI,EAAA,MAAA;EACR,CAAA;CAAqB;AAC3B,iBAzHM,YAAA,CAyHN,SAAA,CAAA,EAAA,MAAA,CAAA,EAzHwC,oBAyHxC,GAAA;EACe,SAAA,UAAA,CAAA,EAAA;IAAtB,SAAA,SAAA,EAAA,MAAA;EAAqB,CAAA;AAKxB,CAAA;AACgB,cAtHH,UAsHQ,EAtHI,oBAsHJ;AAAiB,iBAjHtB,SAAA,CAiHsB,MAAA,EAAA,MAAA,CAAA,EAjHK,oBAiHL,GAAA;EAC5B,SAAA,UAAA,EAAA;IACe,SAAA,MAAA,EAAA,MAAA;EAAtB,CAAA;CAAqB;AAKR,iBA9GA,YAAA,CA8GQ,MAAA,EAAA,MAAA,CAAA,EA9GsB,oBA8GtB,GAAA;EAEd,SAAA,UAAA,EAAA;IACP,SAAA,MAAA,EAAA,MAAA;EAAgE,CAAA;CAAM;AAQzD,iBA/GA,cAAA,CA+GU,SAAA,CAAA,EAAA,MAAA,CAAA,EA/G0B,oBA+G1B,GAAA;EACd,SAAA,UAAA,CAAA,EAAA;IAET,SAAA,SAAA,EAAA,MAAA;EAA2C,CAAA;CAAQ;cAxGzC,YAAY;cAKZ,aAAa;KAKrB,oBAAA;uBACkB;;;;;;;;;;;;;KA4BlB,sCAAsC,sBAAsB;uBAC1C;qBAA0C;;;iBAkCjD,IAAA,CAAA,GAAQ;iBACR,qBAAqB,4BAC3B,UACP,sBAAsB;iBAKT,KAAA,CAAA,GAAS;iBACT,sBAAsB,4BAC5B,UACP,sBAAsB;iBAKT,uEAEN,SACP;;qBAAgE;;;iBAQnD,8CACJ,+BAET;oBAA2C"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { C as SQL_CHAR_CODEC_ID, E as SQL_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, 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, 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
|
+
|
|
3
|
+
//#region src/core/standard-schema.ts
|
|
4
|
+
function isObjectLike(value) {
|
|
5
|
+
return (typeof value === "object" || typeof value === "function") && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function resolveOutputJsonSchemaField(schema) {
|
|
8
|
+
const jsonSchema = schema["~standard"]?.jsonSchema;
|
|
9
|
+
if (!jsonSchema) return;
|
|
10
|
+
if (typeof jsonSchema.output === "function") return jsonSchema.output({ target: "draft-07" });
|
|
11
|
+
return jsonSchema.output;
|
|
12
|
+
}
|
|
13
|
+
function extractStandardSchemaOutputJsonSchema(schema) {
|
|
14
|
+
const outputSchema = resolveOutputJsonSchemaField(schema);
|
|
15
|
+
if (!isObjectLike(outputSchema)) return;
|
|
16
|
+
return outputSchema;
|
|
17
|
+
}
|
|
18
|
+
function extractStandardSchemaTypeExpression(schema) {
|
|
19
|
+
const expression = schema.expression;
|
|
20
|
+
if (typeof expression !== "string") return;
|
|
21
|
+
const trimmedExpression = expression.trim();
|
|
22
|
+
if (trimmedExpression.length === 0) return;
|
|
23
|
+
return trimmedExpression;
|
|
24
|
+
}
|
|
25
|
+
function isStandardSchemaLike(value) {
|
|
26
|
+
return isObjectLike(value) && isObjectLike(value["~standard"]);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/exports/column-types.ts
|
|
31
|
+
const textColumn = {
|
|
32
|
+
codecId: PG_TEXT_CODEC_ID,
|
|
33
|
+
nativeType: "text"
|
|
34
|
+
};
|
|
35
|
+
function charColumn(length) {
|
|
36
|
+
return {
|
|
37
|
+
codecId: SQL_CHAR_CODEC_ID,
|
|
38
|
+
nativeType: "character",
|
|
39
|
+
typeParams: { length }
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function varcharColumn(length) {
|
|
43
|
+
return {
|
|
44
|
+
codecId: SQL_VARCHAR_CODEC_ID,
|
|
45
|
+
nativeType: "character varying",
|
|
46
|
+
typeParams: { length }
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const int4Column = {
|
|
50
|
+
codecId: PG_INT4_CODEC_ID,
|
|
51
|
+
nativeType: "int4"
|
|
52
|
+
};
|
|
53
|
+
const int2Column = {
|
|
54
|
+
codecId: PG_INT2_CODEC_ID,
|
|
55
|
+
nativeType: "int2"
|
|
56
|
+
};
|
|
57
|
+
const int8Column = {
|
|
58
|
+
codecId: PG_INT8_CODEC_ID,
|
|
59
|
+
nativeType: "int8"
|
|
60
|
+
};
|
|
61
|
+
const float4Column = {
|
|
62
|
+
codecId: PG_FLOAT4_CODEC_ID,
|
|
63
|
+
nativeType: "float4"
|
|
64
|
+
};
|
|
65
|
+
const float8Column = {
|
|
66
|
+
codecId: PG_FLOAT8_CODEC_ID,
|
|
67
|
+
nativeType: "float8"
|
|
68
|
+
};
|
|
69
|
+
function numericColumn(precision, scale) {
|
|
70
|
+
return {
|
|
71
|
+
codecId: PG_NUMERIC_CODEC_ID,
|
|
72
|
+
nativeType: "numeric",
|
|
73
|
+
typeParams: scale === void 0 ? { precision } : {
|
|
74
|
+
precision,
|
|
75
|
+
scale
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const timestampColumn = {
|
|
80
|
+
codecId: PG_TIMESTAMP_CODEC_ID,
|
|
81
|
+
nativeType: "timestamp"
|
|
82
|
+
};
|
|
83
|
+
const timestamptzColumn = {
|
|
84
|
+
codecId: PG_TIMESTAMPTZ_CODEC_ID,
|
|
85
|
+
nativeType: "timestamptz"
|
|
86
|
+
};
|
|
87
|
+
function timeColumn(precision) {
|
|
88
|
+
return {
|
|
89
|
+
codecId: PG_TIME_CODEC_ID,
|
|
90
|
+
nativeType: "time",
|
|
91
|
+
...precision === void 0 ? {} : { typeParams: { precision } }
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function timetzColumn(precision) {
|
|
95
|
+
return {
|
|
96
|
+
codecId: PG_TIMETZ_CODEC_ID,
|
|
97
|
+
nativeType: "timetz",
|
|
98
|
+
...precision === void 0 ? {} : { typeParams: { precision } }
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const boolColumn = {
|
|
102
|
+
codecId: PG_BOOL_CODEC_ID,
|
|
103
|
+
nativeType: "bool"
|
|
104
|
+
};
|
|
105
|
+
function bitColumn(length) {
|
|
106
|
+
return {
|
|
107
|
+
codecId: PG_BIT_CODEC_ID,
|
|
108
|
+
nativeType: "bit",
|
|
109
|
+
typeParams: { length }
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function varbitColumn(length) {
|
|
113
|
+
return {
|
|
114
|
+
codecId: PG_VARBIT_CODEC_ID,
|
|
115
|
+
nativeType: "bit varying",
|
|
116
|
+
typeParams: { length }
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function intervalColumn(precision) {
|
|
120
|
+
return {
|
|
121
|
+
codecId: PG_INTERVAL_CODEC_ID,
|
|
122
|
+
nativeType: "interval",
|
|
123
|
+
...precision === void 0 ? {} : { typeParams: { precision } }
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const jsonColumn = {
|
|
127
|
+
codecId: PG_JSON_CODEC_ID,
|
|
128
|
+
nativeType: "json"
|
|
129
|
+
};
|
|
130
|
+
const jsonbColumn = {
|
|
131
|
+
codecId: PG_JSONB_CODEC_ID,
|
|
132
|
+
nativeType: "jsonb"
|
|
133
|
+
};
|
|
134
|
+
function createJsonTypeParams(schema) {
|
|
135
|
+
const outputSchema = extractStandardSchemaOutputJsonSchema(schema);
|
|
136
|
+
if (!outputSchema) throw new Error("JSON schema must expose ~standard.jsonSchema.output()");
|
|
137
|
+
const expression = extractStandardSchemaTypeExpression(schema);
|
|
138
|
+
if (expression) return {
|
|
139
|
+
schemaJson: outputSchema,
|
|
140
|
+
type: expression
|
|
141
|
+
};
|
|
142
|
+
return { schemaJson: outputSchema };
|
|
143
|
+
}
|
|
144
|
+
function createJsonColumnFactory(codecId, nativeType, staticDescriptor) {
|
|
145
|
+
return (schema) => {
|
|
146
|
+
if (!schema) return staticDescriptor;
|
|
147
|
+
if (!isStandardSchemaLike(schema)) throw new Error(`${nativeType}(schema) expects a Standard Schema value`);
|
|
148
|
+
return {
|
|
149
|
+
codecId,
|
|
150
|
+
nativeType,
|
|
151
|
+
typeParams: createJsonTypeParams(schema)
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const _json = createJsonColumnFactory(PG_JSON_CODEC_ID, "json", jsonColumn);
|
|
156
|
+
const _jsonb = createJsonColumnFactory(PG_JSONB_CODEC_ID, "jsonb", jsonbColumn);
|
|
157
|
+
function json(schema) {
|
|
158
|
+
return _json(schema);
|
|
159
|
+
}
|
|
160
|
+
function jsonb(schema) {
|
|
161
|
+
return _jsonb(schema);
|
|
162
|
+
}
|
|
163
|
+
function enumType(name, values) {
|
|
164
|
+
return {
|
|
165
|
+
codecId: PG_ENUM_CODEC_ID,
|
|
166
|
+
nativeType: name,
|
|
167
|
+
typeParams: { values }
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function enumColumn(typeName, nativeType) {
|
|
171
|
+
return {
|
|
172
|
+
codecId: PG_ENUM_CODEC_ID,
|
|
173
|
+
nativeType,
|
|
174
|
+
typeRef: typeName
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
//#endregion
|
|
179
|
+
export { bitColumn, boolColumn, charColumn, enumColumn, enumType, float4Column, float8Column, int2Column, int4Column, int8Column, intervalColumn, json, jsonColumn, jsonb, jsonbColumn, numericColumn, textColumn, timeColumn, timestampColumn, timestamptzColumn, timetzColumn, varbitColumn, varcharColumn };
|
|
180
|
+
//# sourceMappingURL=column-types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-types.mjs","names":["textColumn: ColumnTypeDescriptor","int4Column: ColumnTypeDescriptor","int2Column: ColumnTypeDescriptor","int8Column: ColumnTypeDescriptor","float4Column: ColumnTypeDescriptor","float8Column: ColumnTypeDescriptor","timestampColumn: ColumnTypeDescriptor","timestamptzColumn: ColumnTypeDescriptor","boolColumn: ColumnTypeDescriptor","jsonColumn: ColumnTypeDescriptor","jsonbColumn: ColumnTypeDescriptor"],"sources":["../src/core/standard-schema.ts","../src/exports/column-types.ts"],"sourcesContent":["type UnknownRecord = Record<string, unknown>;\n\ntype StandardSchemaJsonSchemaField = {\n readonly output?: unknown;\n};\n\n/**\n * Runtime view of the Standard Schema protocol.\n * Reads `~standard.jsonSchema.output` for the serializable JSON Schema representation,\n * and `.expression` for an optional TypeScript type expression string (Arktype-specific).\n *\n * This differs from the compile-time `StandardSchemaLike` in `codec-types.ts`, which reads\n * `~standard.types.output` for TypeScript type narrowing in contract.d.ts.\n */\nexport type StandardSchemaLike = {\n readonly '~standard'?: {\n readonly version?: number;\n readonly jsonSchema?: StandardSchemaJsonSchemaField;\n };\n readonly expression?: unknown;\n};\n\nfunction isObjectLike(value: unknown): value is UnknownRecord {\n return (typeof value === 'object' || typeof value === 'function') && value !== null;\n}\n\nfunction resolveOutputJsonSchemaField(schema: StandardSchemaLike): unknown {\n const jsonSchema = schema['~standard']?.jsonSchema;\n if (!jsonSchema) {\n return undefined;\n }\n\n if (typeof jsonSchema.output === 'function') {\n return jsonSchema.output({\n target: 'draft-07',\n });\n }\n\n return jsonSchema.output;\n}\n\nexport function extractStandardSchemaOutputJsonSchema(\n schema: StandardSchemaLike,\n): UnknownRecord | undefined {\n const outputSchema = resolveOutputJsonSchemaField(schema);\n if (!isObjectLike(outputSchema)) {\n return undefined;\n }\n\n return outputSchema;\n}\n\nexport function extractStandardSchemaTypeExpression(\n schema: StandardSchemaLike,\n): string | undefined {\n const expression = schema.expression;\n if (typeof expression !== 'string') {\n return undefined;\n }\n\n const trimmedExpression = expression.trim();\n if (trimmedExpression.length === 0) {\n return undefined;\n }\n\n return trimmedExpression;\n}\n\nexport function isStandardSchemaLike(value: unknown): value is StandardSchemaLike {\n return isObjectLike(value) && isObjectLike((value as StandardSchemaLike)['~standard']);\n}\n","/**\n * Column type descriptors for Postgres adapter.\n *\n * These descriptors provide both codecId and nativeType for use in contract authoring.\n * They are derived from the same source of truth as codec definitions and manifests.\n */\n\nimport type { ColumnTypeDescriptor } from '@prisma-next/contract-authoring';\nimport type { StorageTypeInstance } from '@prisma-next/sql-contract/types';\nimport {\n PG_BIT_CODEC_ID,\n PG_BOOL_CODEC_ID,\n PG_ENUM_CODEC_ID,\n PG_FLOAT4_CODEC_ID,\n PG_FLOAT8_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 SQL_CHAR_CODEC_ID,\n SQL_VARCHAR_CODEC_ID,\n} from '../core/codec-ids';\nimport {\n extractStandardSchemaOutputJsonSchema,\n extractStandardSchemaTypeExpression,\n isStandardSchemaLike,\n type StandardSchemaLike,\n} from '../core/standard-schema';\n\nexport const textColumn: ColumnTypeDescriptor = {\n codecId: PG_TEXT_CODEC_ID,\n nativeType: 'text',\n} as const;\n\nexport function charColumn(length: number): ColumnTypeDescriptor & {\n readonly typeParams: { readonly length: number };\n} {\n return {\n codecId: SQL_CHAR_CODEC_ID,\n nativeType: 'character',\n typeParams: { length },\n } as const;\n}\n\nexport function varcharColumn(length: number): ColumnTypeDescriptor & {\n readonly typeParams: { readonly length: number };\n} {\n return {\n codecId: SQL_VARCHAR_CODEC_ID,\n nativeType: 'character varying',\n typeParams: { length },\n } as const;\n}\n\nexport const int4Column: ColumnTypeDescriptor = {\n codecId: PG_INT4_CODEC_ID,\n nativeType: 'int4',\n} as const;\n\nexport const int2Column: ColumnTypeDescriptor = {\n codecId: PG_INT2_CODEC_ID,\n nativeType: 'int2',\n} as const;\n\nexport const int8Column: ColumnTypeDescriptor = {\n codecId: PG_INT8_CODEC_ID,\n nativeType: 'int8',\n} as const;\n\nexport const float4Column: ColumnTypeDescriptor = {\n codecId: PG_FLOAT4_CODEC_ID,\n nativeType: 'float4',\n} as const;\n\nexport const float8Column: ColumnTypeDescriptor = {\n codecId: PG_FLOAT8_CODEC_ID,\n nativeType: 'float8',\n} as const;\n\nexport function numericColumn(\n precision: number,\n scale?: number,\n): ColumnTypeDescriptor & {\n readonly typeParams: { readonly precision: number; readonly scale?: number };\n} {\n return {\n codecId: PG_NUMERIC_CODEC_ID,\n nativeType: 'numeric',\n typeParams: scale === undefined ? { precision } : { precision, scale },\n } as const;\n}\n\nexport const timestampColumn: ColumnTypeDescriptor = {\n codecId: PG_TIMESTAMP_CODEC_ID,\n nativeType: 'timestamp',\n} as const;\n\nexport const timestamptzColumn: ColumnTypeDescriptor = {\n codecId: PG_TIMESTAMPTZ_CODEC_ID,\n nativeType: 'timestamptz',\n} as const;\n\nexport function timeColumn(precision?: number): ColumnTypeDescriptor & {\n readonly typeParams?: { readonly precision: number };\n} {\n return {\n codecId: PG_TIME_CODEC_ID,\n nativeType: 'time',\n ...(precision === undefined ? {} : { typeParams: { precision } }),\n } as const;\n}\n\nexport function timetzColumn(precision?: number): ColumnTypeDescriptor & {\n readonly typeParams?: { readonly precision: number };\n} {\n return {\n codecId: PG_TIMETZ_CODEC_ID,\n nativeType: 'timetz',\n ...(precision === undefined ? {} : { typeParams: { precision } }),\n } as const;\n}\n\nexport const boolColumn: ColumnTypeDescriptor = {\n codecId: PG_BOOL_CODEC_ID,\n nativeType: 'bool',\n} as const;\n\nexport function bitColumn(length: number): ColumnTypeDescriptor & {\n readonly typeParams: { readonly length: number };\n} {\n return {\n codecId: PG_BIT_CODEC_ID,\n nativeType: 'bit',\n typeParams: { length },\n } as const;\n}\n\nexport function varbitColumn(length: number): ColumnTypeDescriptor & {\n readonly typeParams: { readonly length: number };\n} {\n return {\n codecId: PG_VARBIT_CODEC_ID,\n nativeType: 'bit varying',\n typeParams: { length },\n } as const;\n}\n\nexport function intervalColumn(precision?: number): ColumnTypeDescriptor & {\n readonly typeParams?: { readonly precision: number };\n} {\n return {\n codecId: PG_INTERVAL_CODEC_ID,\n nativeType: 'interval',\n ...(precision === undefined ? {} : { typeParams: { precision } }),\n } as const;\n}\n\nexport const jsonColumn: ColumnTypeDescriptor = {\n codecId: PG_JSON_CODEC_ID,\n nativeType: 'json',\n} as const;\n\nexport const jsonbColumn: ColumnTypeDescriptor = {\n codecId: PG_JSONB_CODEC_ID,\n nativeType: 'jsonb',\n} as const;\n\ntype JsonSchemaTypeParams = {\n readonly schemaJson: Record<string, unknown>;\n readonly type?: string;\n};\n\nfunction createJsonTypeParams(schema: StandardSchemaLike): JsonSchemaTypeParams {\n const outputSchema = extractStandardSchemaOutputJsonSchema(schema);\n if (!outputSchema) {\n throw new Error('JSON schema must expose ~standard.jsonSchema.output()');\n }\n\n const expression = extractStandardSchemaTypeExpression(schema);\n if (expression) {\n return { schemaJson: outputSchema, type: expression };\n }\n\n return { schemaJson: outputSchema };\n}\n\n/**\n * Typed column descriptor for JSON/JSONB columns with Standard Schema.\n *\n * `typeParams.schemaJson` carries the runtime JSON Schema payload (serializable record)\n * used by the emitter to render TypeScript type expressions in contract.d.ts.\n *\n * `typeParams.schema` is a phantom-only key: at runtime it does not exist, but at the\n * type level it preserves the original `TSchema` so that `ResolveStandardSchemaOutput<P>`\n * in codec-types.ts can resolve the output type via `~standard.types.output` or `.infer`.\n */\ntype TypedColumnDescriptor<TSchema extends StandardSchemaLike> = ColumnTypeDescriptor & {\n readonly typeParams: JsonSchemaTypeParams & { readonly schema: TSchema };\n};\n\nfunction createJsonColumnFactory(\n codecId: string,\n nativeType: string,\n staticDescriptor: ColumnTypeDescriptor,\n) {\n return <TSchema extends StandardSchemaLike>(schema?: TSchema): ColumnTypeDescriptor => {\n if (!schema) {\n return staticDescriptor;\n }\n\n if (!isStandardSchemaLike(schema)) {\n throw new Error(`${nativeType}(schema) expects a Standard Schema value`);\n }\n\n return {\n codecId,\n nativeType,\n // At runtime, typeParams only contains { schemaJson, type? }.\n // The `schema` key exists only at the type level (phantom) so that\n // `ResolveStandardSchemaOutput<P>` in codec-types.ts can resolve the\n // schema's output type via `~standard.types.output` or `.infer`.\n typeParams: createJsonTypeParams(schema) as JsonSchemaTypeParams & {\n readonly schema: TSchema;\n },\n };\n };\n}\n\nconst _json = createJsonColumnFactory(PG_JSON_CODEC_ID, 'json', jsonColumn);\nconst _jsonb = createJsonColumnFactory(PG_JSONB_CODEC_ID, 'jsonb', jsonbColumn);\n\nexport function json(): ColumnTypeDescriptor;\nexport function json<TSchema extends StandardSchemaLike>(\n schema: TSchema,\n): TypedColumnDescriptor<TSchema>;\nexport function json<TSchema extends StandardSchemaLike>(schema?: TSchema): ColumnTypeDescriptor {\n return _json(schema);\n}\n\nexport function jsonb(): ColumnTypeDescriptor;\nexport function jsonb<TSchema extends StandardSchemaLike>(\n schema: TSchema,\n): TypedColumnDescriptor<TSchema>;\nexport function jsonb<TSchema extends StandardSchemaLike>(schema?: TSchema): ColumnTypeDescriptor {\n return _jsonb(schema);\n}\n\nexport function enumType<const Values extends readonly string[]>(\n name: string,\n values: Values,\n): StorageTypeInstance & { readonly typeParams: { readonly values: Values } } {\n return {\n codecId: PG_ENUM_CODEC_ID,\n nativeType: name,\n typeParams: { values },\n } as const;\n}\n\nexport function enumColumn<TypeName extends string>(\n typeName: TypeName,\n nativeType: string,\n): ColumnTypeDescriptor & { readonly typeRef: TypeName } {\n return {\n codecId: PG_ENUM_CODEC_ID,\n nativeType,\n typeRef: typeName,\n };\n}\n"],"mappings":"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"}
|