@prisma-next/adapter-postgres 0.3.0-dev.6 → 0.3.0-dev.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +64 -2
  3. package/dist/adapter-DtehReRR.mjs +271 -0
  4. package/dist/adapter-DtehReRR.mjs.map +1 -0
  5. package/dist/adapter.d.mts +23 -0
  6. package/dist/adapter.d.mts.map +1 -0
  7. package/dist/adapter.mjs +5 -0
  8. package/dist/codec-ids-Bsm9c7ns.mjs +29 -0
  9. package/dist/codec-ids-Bsm9c7ns.mjs.map +1 -0
  10. package/dist/codec-types.d.mts +141 -0
  11. package/dist/codec-types.d.mts.map +1 -0
  12. package/dist/codec-types.mjs +4 -0
  13. package/dist/codecs-BfC_5c-4.mjs +207 -0
  14. package/dist/codecs-BfC_5c-4.mjs.map +1 -0
  15. package/dist/column-types.d.mts +110 -0
  16. package/dist/column-types.d.mts.map +1 -0
  17. package/dist/column-types.mjs +180 -0
  18. package/dist/column-types.mjs.map +1 -0
  19. package/dist/control.d.mts +111 -0
  20. package/dist/control.d.mts.map +1 -0
  21. package/dist/control.mjs +463 -0
  22. package/dist/control.mjs.map +1 -0
  23. package/dist/descriptor-meta-ilnFI7bx.mjs +921 -0
  24. package/dist/descriptor-meta-ilnFI7bx.mjs.map +1 -0
  25. package/dist/runtime.d.mts +19 -0
  26. package/dist/runtime.d.mts.map +1 -0
  27. package/dist/runtime.mjs +85 -0
  28. package/dist/runtime.mjs.map +1 -0
  29. package/dist/sql-utils-CSfAGEwF.mjs +78 -0
  30. package/dist/sql-utils-CSfAGEwF.mjs.map +1 -0
  31. package/dist/types-CXO7EB60.d.mts +19 -0
  32. package/dist/types-CXO7EB60.d.mts.map +1 -0
  33. package/dist/types.d.mts +2 -0
  34. package/dist/types.mjs +1 -0
  35. package/package.json +37 -46
  36. package/src/core/adapter.ts +139 -28
  37. package/src/core/codec-ids.ts +28 -0
  38. package/src/core/codecs.ts +325 -23
  39. package/src/core/control-adapter.ts +400 -178
  40. package/src/core/default-normalizer.ts +90 -0
  41. package/src/core/descriptor-meta.ts +221 -9
  42. package/src/core/enum-control-hooks.ts +735 -0
  43. package/src/core/json-schema-type-expression.ts +131 -0
  44. package/src/core/json-schema-validator.ts +53 -0
  45. package/src/core/parameterized-types.ts +118 -0
  46. package/src/core/sql-utils.ts +111 -0
  47. package/src/core/standard-schema.ts +71 -0
  48. package/src/exports/codec-types.ts +73 -1
  49. package/src/exports/column-types.ts +233 -9
  50. package/src/exports/control.ts +16 -9
  51. package/src/exports/runtime.ts +61 -18
  52. package/dist/chunk-HD5YISNQ.js +0 -47
  53. package/dist/chunk-HD5YISNQ.js.map +0 -1
  54. package/dist/chunk-J3XSOAM2.js +0 -162
  55. package/dist/chunk-J3XSOAM2.js.map +0 -1
  56. package/dist/chunk-T6S3A6VT.js +0 -301
  57. package/dist/chunk-T6S3A6VT.js.map +0 -1
  58. package/dist/core/adapter.d.ts +0 -19
  59. package/dist/core/adapter.d.ts.map +0 -1
  60. package/dist/core/codecs.d.ts +0 -110
  61. package/dist/core/codecs.d.ts.map +0 -1
  62. package/dist/core/control-adapter.d.ts +0 -33
  63. package/dist/core/control-adapter.d.ts.map +0 -1
  64. package/dist/core/descriptor-meta.d.ts +0 -72
  65. package/dist/core/descriptor-meta.d.ts.map +0 -1
  66. package/dist/core/types.d.ts +0 -16
  67. package/dist/core/types.d.ts.map +0 -1
  68. package/dist/exports/adapter.d.ts +0 -2
  69. package/dist/exports/adapter.d.ts.map +0 -1
  70. package/dist/exports/adapter.js +0 -8
  71. package/dist/exports/adapter.js.map +0 -1
  72. package/dist/exports/codec-types.d.ts +0 -11
  73. package/dist/exports/codec-types.d.ts.map +0 -1
  74. package/dist/exports/codec-types.js +0 -7
  75. package/dist/exports/codec-types.js.map +0 -1
  76. package/dist/exports/column-types.d.ts +0 -17
  77. package/dist/exports/column-types.d.ts.map +0 -1
  78. package/dist/exports/column-types.js +0 -49
  79. package/dist/exports/column-types.js.map +0 -1
  80. package/dist/exports/control.d.ts +0 -8
  81. package/dist/exports/control.d.ts.map +0 -1
  82. package/dist/exports/control.js +0 -279
  83. package/dist/exports/control.js.map +0 -1
  84. package/dist/exports/runtime.d.ts +0 -15
  85. package/dist/exports/runtime.d.ts.map +0 -1
  86. package/dist/exports/runtime.js +0 -20
  87. package/dist/exports/runtime.js.map +0 -1
  88. package/dist/exports/types.d.ts +0 -2
  89. package/dist/exports/types.d.ts.map +0 -1
  90. package/dist/exports/types.js +0 -1
  91. package/dist/exports/types.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ import { c as PostgresContract, l as PostgresLoweredStatement, s as PostgresAdapterOptions } from "./types-CXO7EB60.mjs";
2
+ import { Adapter, AdapterProfile, CodecParamsDescriptor, LowererContext, QueryAst } from "@prisma-next/sql-relational-core/ast";
3
+
4
+ //#region src/core/adapter.d.ts
5
+ declare class PostgresAdapterImpl implements Adapter<QueryAst, 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: QueryAst, 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":";;;;cA8EM,mBAAA,YAA+B,QAAQ,UAAU,kBAAkB;;EAAnE,SAAA,QAAA,EAAA,UAAoB;EAAmB,SAAA,OAAA,EAMzB,cANyB,CAAA,UAAA,CAAA;EAAU,iBAAA,aAAA;EAAkB,WAAA,CAAA,OAAA,CAAA,EAejD,sBAfiD;EAMrD,mBAAA,CAAA,CAAA,EAkBK,aAlBL,CAkBmB,qBAlBnB,CAAA;EASI,KAAA,CAAA,GAAA,EAaX,QAbW,EAAA,OAAA,EAaQ,cAbR,CAauB,gBAbvB,CAAA,CAAA,EAawC,QAbxC,CAAA;IASe,SAAA,EAAA,MAAA;IAAd,IAAA,UAAA,CAAA;MAIZ,GAAA,EAAA,MAAA;MAAkC,MAAA,EAAA,OAAA,EAAA;IAAf,CAAA,CAAA;;;AA5BK,iBA2crB,qBAAA,CA3cqB,OAAA,CAAA,EA2cW,sBA3cX,CAAA,EA2ciC,QA3cjC,CA2ciC,mBA3cjC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import "./codec-ids-Bsm9c7ns.mjs";
2
+ import "./codecs-BfC_5c-4.mjs";
3
+ import { t as createPostgresAdapter } from "./adapter-DtehReRR.mjs";
4
+
5
+ export { createPostgresAdapter };
@@ -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", string, string, Record<string, unknown>, unknown>;
11
+ varchar: Codec<"sql/varchar@1", string, string, Record<string, unknown>, unknown>;
12
+ int: Codec<"sql/int@1", number, number, Record<string, unknown>, unknown>;
13
+ float: Codec<"sql/float@1", number, number, Record<string, unknown>, unknown>;
14
+ text: Codec<"pg/text@1", string, string, Record<string, unknown>, unknown>;
15
+ character: Codec<"pg/char@1", string, string, Record<string, unknown>, unknown>;
16
+ "character varying": Codec<"pg/varchar@1", string, string, Record<string, unknown>, unknown>;
17
+ integer: Codec<"pg/int@1", number, number, Record<string, unknown>, unknown>;
18
+ "double precision": Codec<"pg/float@1", number, number, Record<string, unknown>, unknown>;
19
+ int4: Codec<"pg/int4@1", number, number, Record<string, unknown>, unknown>;
20
+ int2: Codec<"pg/int2@1", number, number, Record<string, unknown>, unknown>;
21
+ int8: Codec<"pg/int8@1", number, number, Record<string, unknown>, unknown>;
22
+ float4: Codec<"pg/float4@1", number, number, Record<string, unknown>, unknown>;
23
+ float8: Codec<"pg/float8@1", number, number, Record<string, unknown>, unknown>;
24
+ numeric: Codec<"pg/numeric@1", string, string, Record<string, unknown>, unknown>;
25
+ timestamp: Codec<"pg/timestamp@1", string | Date, string, Record<string, unknown>, unknown>;
26
+ timestamptz: Codec<"pg/timestamptz@1", string | Date, string, Record<string, unknown>, unknown>;
27
+ time: Codec<"pg/time@1", string, string, Record<string, unknown>, unknown>;
28
+ timetz: Codec<"pg/timetz@1", string, string, Record<string, unknown>, unknown>;
29
+ bool: Codec<"pg/bool@1", boolean, boolean, Record<string, unknown>, unknown>;
30
+ bit: Codec<"pg/bit@1", string, string, Record<string, unknown>, unknown>;
31
+ "bit varying": Codec<"pg/varbit@1", string, string, Record<string, unknown>, unknown>;
32
+ interval: Codec<"pg/interval@1", string | Record<string, unknown>, string, Record<string, unknown>, unknown>;
33
+ enum: Codec<"pg/enum@1", string, string, Record<string, unknown>, unknown>;
34
+ json: Codec<"pg/json@1", JsonValue, JsonValue, Record<string, unknown>, unknown>;
35
+ } & Record<"jsonb", Codec<"pg/jsonb@1", JsonValue, 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":";;;;;KAqFY,SAAA;0BAKkB;aACjB;cAmXP,8CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAGD,YAAA,UAAoB,MAAA,CAAO;;;;;;;;;;;;KC3dlC,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;;AD0YrD,KCzYA,MDyYA,CAAA,UAAA,MAAA,CAAA,GCzY2B,aDyY3B,CAAA;EA8BC,cAA4B,ECva8B,CDua9B;AAGzC,CAAA,CAAA;KCzaY,sDAAsD;wBAC1C;;AAnDnB,KAqDO,WArDP,CAAA,UAAkB,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAqD6C,aArD7C,CAAA;EAQlB,sBAAA,EA8CqB,CA9CrB;CAAiC,CAAA;AAO5B,KAyCE,IAzCF,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAyCmD,aAzCnD,CAAA;EAEF,eAAA,EAuCsF,CAvCtF;CACJ,CAAA;AAAS,KAuCD,MAvCC,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAuCkD,aAvClD,CAAA;EAED,iBAAU,EAsCD,CAtCC;CAAG,CAAA;AACD,KAuCZ,QAvCY,CAAA,UAAA,MAAA,GAAA,SAAA,GAAA,SAAA,CAAA,GAuCyC,aAvCzC,CAAA;EACyC,mBAAA,EAuC1C,CAvC0C;CACnD,CAAA"}
@@ -0,0 +1,4 @@
1
+ import "./codec-ids-Bsm9c7ns.mjs";
2
+ import { n as dataTypes } from "./codecs-BfC_5c-4.mjs";
3
+
4
+ export { dataTypes };
@@ -0,0 +1,207 @@
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 (wire instanceof Date) return wire.toISOString();
111
+ return wire;
112
+ },
113
+ paramsSchema: precisionParamsSchema,
114
+ meta: { db: { sql: { postgres: { nativeType: "timestamp without time zone" } } } }
115
+ });
116
+ const pgTimestamptzCodec = codec({
117
+ typeId: PG_TIMESTAMPTZ_CODEC_ID,
118
+ targetTypes: ["timestamptz"],
119
+ encode: (value) => {
120
+ if (value instanceof Date) return value.toISOString();
121
+ if (typeof value === "string") return value;
122
+ return String(value);
123
+ },
124
+ decode: (wire) => {
125
+ if (wire instanceof Date) return wire.toISOString();
126
+ return wire;
127
+ },
128
+ paramsSchema: precisionParamsSchema,
129
+ meta: { db: { sql: { postgres: { nativeType: "timestamp with time zone" } } } }
130
+ });
131
+ const pgTimeCodec = codec({
132
+ typeId: PG_TIME_CODEC_ID,
133
+ targetTypes: ["time"],
134
+ encode: (value) => value,
135
+ decode: (wire) => wire,
136
+ paramsSchema: precisionParamsSchema,
137
+ meta: { db: { sql: { postgres: { nativeType: "time" } } } }
138
+ });
139
+ const pgTimetzCodec = codec({
140
+ typeId: PG_TIMETZ_CODEC_ID,
141
+ targetTypes: ["timetz"],
142
+ encode: (value) => value,
143
+ decode: (wire) => wire,
144
+ paramsSchema: precisionParamsSchema,
145
+ meta: { db: { sql: { postgres: { nativeType: "timetz" } } } }
146
+ });
147
+ const pgBoolCodec = codec({
148
+ typeId: PG_BOOL_CODEC_ID,
149
+ targetTypes: ["bool"],
150
+ encode: (value) => value,
151
+ decode: (wire) => wire,
152
+ meta: { db: { sql: { postgres: { nativeType: "boolean" } } } }
153
+ });
154
+ const pgBitCodec = codec({
155
+ typeId: PG_BIT_CODEC_ID,
156
+ targetTypes: ["bit"],
157
+ encode: (value) => value,
158
+ decode: (wire) => wire,
159
+ paramsSchema: lengthParamsSchema,
160
+ meta: { db: { sql: { postgres: { nativeType: "bit" } } } }
161
+ });
162
+ const pgVarbitCodec = codec({
163
+ typeId: PG_VARBIT_CODEC_ID,
164
+ targetTypes: ["bit varying"],
165
+ encode: (value) => value,
166
+ decode: (wire) => wire,
167
+ paramsSchema: lengthParamsSchema,
168
+ meta: { db: { sql: { postgres: { nativeType: "bit varying" } } } }
169
+ });
170
+ const pgEnumCodec = codec({
171
+ typeId: PG_ENUM_CODEC_ID,
172
+ targetTypes: ["enum"],
173
+ encode: (value) => value,
174
+ decode: (wire) => wire
175
+ });
176
+ const pgIntervalCodec = codec({
177
+ typeId: PG_INTERVAL_CODEC_ID,
178
+ targetTypes: ["interval"],
179
+ encode: (value) => value,
180
+ decode: (wire) => {
181
+ if (typeof wire === "string") return wire;
182
+ return JSON.stringify(wire);
183
+ },
184
+ paramsSchema: precisionParamsSchema,
185
+ meta: { db: { sql: { postgres: { nativeType: "interval" } } } }
186
+ });
187
+ const pgJsonCodec = codec({
188
+ typeId: PG_JSON_CODEC_ID,
189
+ targetTypes: ["json"],
190
+ encode: (value) => JSON.stringify(value),
191
+ decode: (wire) => typeof wire === "string" ? JSON.parse(wire) : wire,
192
+ meta: { db: { sql: { postgres: { nativeType: "json" } } } }
193
+ });
194
+ const pgJsonbCodec = codec({
195
+ typeId: PG_JSONB_CODEC_ID,
196
+ targetTypes: ["jsonb"],
197
+ encode: (value) => JSON.stringify(value),
198
+ decode: (wire) => typeof wire === "string" ? JSON.parse(wire) : wire,
199
+ meta: { db: { sql: { postgres: { nativeType: "jsonb" } } } }
200
+ });
201
+ 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);
202
+ const codecDefinitions = codecs.codecDefinitions;
203
+ const dataTypes = codecs.dataTypes;
204
+
205
+ //#endregion
206
+ export { dataTypes as n, codecDefinitions as t };
207
+ //# sourceMappingURL=codecs-BfC_5c-4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codecs-BfC_5c-4.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 (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<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 (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, 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<\n typeof PG_INTERVAL_CODEC_ID,\n string | Record<string, unknown>,\n string\n>({\n typeId: PG_INTERVAL_CODEC_ID,\n targetTypes: ['interval'],\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<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,MAAA;EAahB,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"}