@prisma-next/sql-relational-core 0.3.0-pr.93.5 → 0.3.0-pr.94.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/errors-BwxypN2Q.mjs +3 -0
  2. package/dist/errors-CLx1Ylq0.d.mts +2 -0
  3. package/dist/exports/ast.d.mts +123 -0
  4. package/dist/exports/ast.d.mts.map +1 -0
  5. package/dist/exports/ast.mjs +304 -0
  6. package/dist/exports/ast.mjs.map +1 -0
  7. package/dist/exports/errors.d.mts +2 -0
  8. package/dist/exports/errors.mjs +3 -0
  9. package/dist/exports/guards.d.mts +88 -0
  10. package/dist/exports/guards.d.mts.map +1 -0
  11. package/dist/exports/guards.mjs +3 -0
  12. package/dist/exports/operations-registry.d.mts +5 -0
  13. package/dist/exports/operations-registry.mjs +3 -0
  14. package/dist/exports/param.d.mts +5 -0
  15. package/dist/exports/param.mjs +3 -0
  16. package/dist/exports/plan.d.mts +2 -0
  17. package/dist/exports/plan.mjs +17 -0
  18. package/dist/exports/plan.mjs.map +1 -0
  19. package/dist/exports/query-lane-context.d.mts +2 -0
  20. package/dist/exports/query-lane-context.mjs +1 -0
  21. package/dist/exports/schema.d.mts +5 -0
  22. package/dist/exports/schema.mjs +4 -0
  23. package/dist/exports/types.d.mts +4 -0
  24. package/dist/exports/types.mjs +3 -0
  25. package/dist/guards-4T0IByJo.mjs +132 -0
  26. package/dist/guards-4T0IByJo.mjs.map +1 -0
  27. package/dist/index.d.mts +12 -0
  28. package/dist/index.mjs +12 -0
  29. package/dist/operations-registry-7R5KE2-5.mjs +152 -0
  30. package/dist/operations-registry-7R5KE2-5.mjs.map +1 -0
  31. package/dist/operations-registry-CIcn4f2P.d.mts +9 -0
  32. package/dist/operations-registry-CIcn4f2P.d.mts.map +1 -0
  33. package/dist/param-B4LzVPv2.d.mts +8 -0
  34. package/dist/param-B4LzVPv2.d.mts.map +1 -0
  35. package/dist/param-BFvNAaHR.mjs +14 -0
  36. package/dist/param-BFvNAaHR.mjs.map +1 -0
  37. package/dist/plan-9PvH-Tu3.d.mts +157 -0
  38. package/dist/plan-9PvH-Tu3.d.mts.map +1 -0
  39. package/dist/query-lane-context-wr_XXnB5.d.mts +143 -0
  40. package/dist/query-lane-context-wr_XXnB5.d.mts.map +1 -0
  41. package/dist/schema-BsY2EXAf.mjs +148 -0
  42. package/dist/schema-BsY2EXAf.mjs.map +1 -0
  43. package/dist/schema-Dse48uyP.d.mts +63 -0
  44. package/dist/schema-Dse48uyP.d.mts.map +1 -0
  45. package/dist/types-Bg2kUmUA.d.mts +359 -0
  46. package/dist/types-Bg2kUmUA.d.mts.map +1 -0
  47. package/dist/types-D_FRJvm0.mjs +18 -0
  48. package/dist/types-D_FRJvm0.mjs.map +1 -0
  49. package/package.json +28 -50
  50. package/src/ast/predicate.ts +3 -11
  51. package/src/ast/types.ts +23 -9
  52. package/src/exports/guards.ts +5 -0
  53. package/src/operations-registry.ts +112 -73
  54. package/src/schema.ts +40 -29
  55. package/src/types.ts +102 -52
  56. package/src/utils/guards.ts +88 -18
  57. package/dist/ast/adapter-types.d.ts +0 -28
  58. package/dist/ast/adapter-types.d.ts.map +0 -1
  59. package/dist/ast/codec-types.d.ts +0 -141
  60. package/dist/ast/codec-types.d.ts.map +0 -1
  61. package/dist/ast/common.d.ts +0 -7
  62. package/dist/ast/common.d.ts.map +0 -1
  63. package/dist/ast/delete.d.ts +0 -8
  64. package/dist/ast/delete.d.ts.map +0 -1
  65. package/dist/ast/driver-types.d.ts +0 -20
  66. package/dist/ast/driver-types.d.ts.map +0 -1
  67. package/dist/ast/insert.d.ts +0 -8
  68. package/dist/ast/insert.d.ts.map +0 -1
  69. package/dist/ast/join.d.ts +0 -6
  70. package/dist/ast/join.d.ts.map +0 -1
  71. package/dist/ast/order.d.ts +0 -6
  72. package/dist/ast/order.d.ts.map +0 -1
  73. package/dist/ast/predicate.d.ts +0 -4
  74. package/dist/ast/predicate.d.ts.map +0 -1
  75. package/dist/ast/select.d.ts +0 -18
  76. package/dist/ast/select.d.ts.map +0 -1
  77. package/dist/ast/types.d.ts +0 -118
  78. package/dist/ast/types.d.ts.map +0 -1
  79. package/dist/ast/update.d.ts +0 -9
  80. package/dist/ast/update.d.ts.map +0 -1
  81. package/dist/ast/util.d.ts +0 -2
  82. package/dist/ast/util.d.ts.map +0 -1
  83. package/dist/chunk-2F7DSEOU.js +0 -8
  84. package/dist/chunk-2F7DSEOU.js.map +0 -1
  85. package/dist/chunk-36WJWNHT.js +0 -1
  86. package/dist/chunk-36WJWNHT.js.map +0 -1
  87. package/dist/chunk-5N34PNVZ.js +0 -62
  88. package/dist/chunk-5N34PNVZ.js.map +0 -1
  89. package/dist/chunk-7I3EMQID.js +0 -16
  90. package/dist/chunk-7I3EMQID.js.map +0 -1
  91. package/dist/chunk-D4JLPIWO.js +0 -13
  92. package/dist/chunk-D4JLPIWO.js.map +0 -1
  93. package/dist/chunk-G52ENULI.js +0 -1
  94. package/dist/chunk-G52ENULI.js.map +0 -1
  95. package/dist/chunk-J6O2HVBM.js +0 -320
  96. package/dist/chunk-J6O2HVBM.js.map +0 -1
  97. package/dist/chunk-KYSP7L5C.js +0 -16
  98. package/dist/chunk-KYSP7L5C.js.map +0 -1
  99. package/dist/chunk-M23L3JHG.js +0 -159
  100. package/dist/chunk-M23L3JHG.js.map +0 -1
  101. package/dist/chunk-U7AXAUJA.js +0 -1
  102. package/dist/chunk-U7AXAUJA.js.map +0 -1
  103. package/dist/chunk-U7IAFPVU.js +0 -152
  104. package/dist/chunk-U7IAFPVU.js.map +0 -1
  105. package/dist/errors.d.ts +0 -2
  106. package/dist/errors.d.ts.map +0 -1
  107. package/dist/exports/ast.d.ts +0 -14
  108. package/dist/exports/ast.d.ts.map +0 -1
  109. package/dist/exports/ast.js +0 -46
  110. package/dist/exports/ast.js.map +0 -1
  111. package/dist/exports/errors.d.ts +0 -2
  112. package/dist/exports/errors.d.ts.map +0 -1
  113. package/dist/exports/errors.js +0 -9
  114. package/dist/exports/errors.js.map +0 -1
  115. package/dist/exports/guards.d.ts +0 -2
  116. package/dist/exports/guards.d.ts.map +0 -1
  117. package/dist/exports/guards.js +0 -21
  118. package/dist/exports/guards.js.map +0 -1
  119. package/dist/exports/operations-registry.d.ts +0 -2
  120. package/dist/exports/operations-registry.d.ts.map +0 -1
  121. package/dist/exports/operations-registry.js +0 -9
  122. package/dist/exports/operations-registry.js.map +0 -1
  123. package/dist/exports/param.d.ts +0 -3
  124. package/dist/exports/param.d.ts.map +0 -1
  125. package/dist/exports/param.js +0 -7
  126. package/dist/exports/param.js.map +0 -1
  127. package/dist/exports/plan.d.ts +0 -2
  128. package/dist/exports/plan.d.ts.map +0 -1
  129. package/dist/exports/plan.js +0 -7
  130. package/dist/exports/plan.js.map +0 -1
  131. package/dist/exports/query-lane-context.d.ts +0 -2
  132. package/dist/exports/query-lane-context.d.ts.map +0 -1
  133. package/dist/exports/query-lane-context.js +0 -2
  134. package/dist/exports/query-lane-context.js.map +0 -1
  135. package/dist/exports/schema.d.ts +0 -3
  136. package/dist/exports/schema.d.ts.map +0 -1
  137. package/dist/exports/schema.js +0 -14
  138. package/dist/exports/schema.js.map +0 -1
  139. package/dist/exports/types.d.ts +0 -2
  140. package/dist/exports/types.d.ts.map +0 -1
  141. package/dist/exports/types.js +0 -10
  142. package/dist/exports/types.js.map +0 -1
  143. package/dist/index.d.ts +0 -9
  144. package/dist/index.d.ts.map +0 -1
  145. package/dist/index.js +0 -81
  146. package/dist/index.js.map +0 -1
  147. package/dist/operations-registry.d.ts +0 -5
  148. package/dist/operations-registry.d.ts.map +0 -1
  149. package/dist/param.d.ts +0 -4
  150. package/dist/param.d.ts.map +0 -1
  151. package/dist/plan.d.ts +0 -23
  152. package/dist/plan.d.ts.map +0 -1
  153. package/dist/query-lane-context.d.ts +0 -16
  154. package/dist/query-lane-context.d.ts.map +0 -1
  155. package/dist/schema.d.ts +0 -63
  156. package/dist/schema.d.ts.map +0 -1
  157. package/dist/types.d.ts +0 -332
  158. package/dist/types.d.ts.map +0 -1
  159. package/dist/utils/guards.d.ts +0 -55
  160. package/dist/utils/guards.d.ts.map +0 -1
@@ -1,320 +0,0 @@
1
- import {
2
- isColumnBuilder
3
- } from "./chunk-D4JLPIWO.js";
4
-
5
- // src/ast/codec-types.ts
6
- var CodecRegistryImpl = class {
7
- _byId = /* @__PURE__ */ new Map();
8
- _byScalar = /* @__PURE__ */ new Map();
9
- /**
10
- * Map-like interface for codec lookup by ID.
11
- * Example: registry.get('pg/text@1')
12
- */
13
- get(id) {
14
- return this._byId.get(id);
15
- }
16
- /**
17
- * Check if a codec with the given ID is registered.
18
- */
19
- has(id) {
20
- return this._byId.has(id);
21
- }
22
- /**
23
- * Get all codecs that handle a given scalar type.
24
- * Returns an empty frozen array if no codecs are found.
25
- * Example: registry.getByScalar('text') → [codec1, codec2, ...]
26
- */
27
- getByScalar(scalar) {
28
- return this._byScalar.get(scalar) ?? Object.freeze([]);
29
- }
30
- /**
31
- * Get the default codec for a scalar type (first registered codec).
32
- * Returns undefined if no codec handles this scalar type.
33
- */
34
- getDefaultCodec(scalar) {
35
- const _codecs = this._byScalar.get(scalar);
36
- return _codecs?.[0];
37
- }
38
- /**
39
- * Register a codec in the registry.
40
- * Throws an error if a codec with the same ID is already registered.
41
- *
42
- * @param codec - The codec to register
43
- * @throws Error if a codec with the same ID already exists
44
- */
45
- register(codec2) {
46
- if (this._byId.has(codec2.id)) {
47
- throw new Error(`Codec with ID '${codec2.id}' is already registered`);
48
- }
49
- this._byId.set(codec2.id, codec2);
50
- for (const scalarType of codec2.targetTypes) {
51
- const existing = this._byScalar.get(scalarType);
52
- if (existing) {
53
- existing.push(codec2);
54
- } else {
55
- this._byScalar.set(scalarType, [codec2]);
56
- }
57
- }
58
- }
59
- /**
60
- * Returns an iterator over all registered codecs.
61
- * Useful for iterating through codecs from another registry.
62
- */
63
- *[Symbol.iterator]() {
64
- for (const codec2 of this._byId.values()) {
65
- yield codec2;
66
- }
67
- }
68
- /**
69
- * Returns an iterable of all registered codecs.
70
- */
71
- values() {
72
- return this._byId.values();
73
- }
74
- };
75
- function codec(config) {
76
- return {
77
- id: config.typeId,
78
- targetTypes: config.targetTypes,
79
- ...config.meta ? { meta: config.meta } : {},
80
- encode: config.encode,
81
- decode: config.decode
82
- };
83
- }
84
- var CodecDefBuilderImpl = class _CodecDefBuilderImpl {
85
- _codecs;
86
- CodecTypes;
87
- dataTypes;
88
- constructor(codecs) {
89
- this._codecs = codecs;
90
- const codecTypes = {};
91
- for (const [, codecImpl] of Object.entries(this._codecs)) {
92
- const codecImplTyped = codecImpl;
93
- codecTypes[codecImplTyped.id] = {
94
- input: void 0,
95
- output: void 0
96
- };
97
- }
98
- this.CodecTypes = codecTypes;
99
- const dataTypes = {};
100
- for (const key in this._codecs) {
101
- if (Object.hasOwn(this._codecs, key)) {
102
- const codec2 = this._codecs[key];
103
- dataTypes[key] = codec2.id;
104
- }
105
- }
106
- this.dataTypes = dataTypes;
107
- }
108
- add(scalarName, codecImpl) {
109
- return new _CodecDefBuilderImpl({
110
- ...this._codecs,
111
- [scalarName]: codecImpl
112
- });
113
- }
114
- /**
115
- * Derive codecDefinitions structure.
116
- */
117
- get codecDefinitions() {
118
- const result = {};
119
- for (const [scalarName, codecImpl] of Object.entries(this._codecs)) {
120
- const codec2 = codecImpl;
121
- result[scalarName] = {
122
- typeId: codec2.id,
123
- scalar: scalarName,
124
- codec: codec2,
125
- input: void 0,
126
- output: void 0,
127
- jsType: void 0
128
- };
129
- }
130
- return result;
131
- }
132
- };
133
- function createCodecRegistry() {
134
- return new CodecRegistryImpl();
135
- }
136
- function defineCodecs() {
137
- return new CodecDefBuilderImpl({});
138
- }
139
-
140
- // src/ast/util.ts
141
- function compact(o) {
142
- const out = {};
143
- for (const [k, v] of Object.entries(o)) {
144
- if (v === void 0 || v === null) continue;
145
- if (Array.isArray(v) && v.length === 0) continue;
146
- out[k] = v;
147
- }
148
- return out;
149
- }
150
-
151
- // src/ast/common.ts
152
- function createTableRef(name) {
153
- return {
154
- kind: "table",
155
- name
156
- };
157
- }
158
- function createColumnRef(table, column) {
159
- return {
160
- kind: "col",
161
- table,
162
- column
163
- };
164
- }
165
- function createParamRef(index, name) {
166
- return compact({
167
- kind: "param",
168
- index,
169
- name
170
- });
171
- }
172
- function createOperationExpr(operation) {
173
- return operation;
174
- }
175
- function createLiteralExpr(value) {
176
- return {
177
- kind: "literal",
178
- value
179
- };
180
- }
181
-
182
- // src/ast/delete.ts
183
- function createDeleteAst(options) {
184
- return compact({
185
- kind: "delete",
186
- table: options.table,
187
- where: options.where,
188
- returning: options.returning
189
- });
190
- }
191
-
192
- // src/ast/insert.ts
193
- function createInsertAst(options) {
194
- return compact({
195
- kind: "insert",
196
- table: options.table,
197
- values: options.values,
198
- returning: options.returning
199
- });
200
- }
201
-
202
- // src/ast/join.ts
203
- import { planInvalid } from "@prisma-next/plan";
204
- function createJoin(joinType, table, on) {
205
- return {
206
- kind: "join",
207
- joinType,
208
- table,
209
- on
210
- };
211
- }
212
- function createJoinOnExpr(left, right) {
213
- return {
214
- kind: "eqCol",
215
- left,
216
- right
217
- };
218
- }
219
- var JoinOnBuilderImpl = class {
220
- eqCol(left, right) {
221
- if (!left || !isColumnBuilder(left)) {
222
- throw planInvalid("Join ON left operand must be a column");
223
- }
224
- if (!right || !isColumnBuilder(right)) {
225
- throw planInvalid("Join ON right operand must be a column");
226
- }
227
- const leftCol = left;
228
- const rightCol = right;
229
- if (leftCol.table === rightCol.table) {
230
- throw planInvalid("Self-joins are not supported in MVP");
231
- }
232
- return {
233
- kind: "join-on",
234
- left,
235
- right
236
- };
237
- }
238
- };
239
- function createJoinOnBuilder() {
240
- return new JoinOnBuilderImpl();
241
- }
242
-
243
- // src/ast/order.ts
244
- function createOrderByItem(expr, dir) {
245
- return {
246
- expr,
247
- dir
248
- };
249
- }
250
-
251
- // src/ast/predicate.ts
252
- function createBinaryExpr(op, left, right) {
253
- return {
254
- kind: "bin",
255
- op,
256
- left,
257
- right
258
- };
259
- }
260
- function createExistsExpr(not, subquery) {
261
- return {
262
- kind: "exists",
263
- not,
264
- subquery
265
- };
266
- }
267
-
268
- // src/ast/select.ts
269
- function createSelectAst(options) {
270
- return compact({
271
- kind: "select",
272
- from: options.from,
273
- joins: options.joins,
274
- includes: options.includes,
275
- project: options.project,
276
- where: options.where,
277
- orderBy: options.orderBy,
278
- limit: options.limit
279
- });
280
- }
281
-
282
- // src/ast/types.ts
283
- function isOperationExpr(expr) {
284
- return expr.kind === "operation";
285
- }
286
-
287
- // src/ast/update.ts
288
- function createUpdateAst(options) {
289
- return compact({
290
- kind: "update",
291
- table: options.table,
292
- set: options.set,
293
- where: options.where,
294
- returning: options.returning
295
- });
296
- }
297
-
298
- export {
299
- codec,
300
- createCodecRegistry,
301
- defineCodecs,
302
- compact,
303
- createTableRef,
304
- createColumnRef,
305
- createParamRef,
306
- createOperationExpr,
307
- createLiteralExpr,
308
- createDeleteAst,
309
- createInsertAst,
310
- createJoin,
311
- createJoinOnExpr,
312
- createJoinOnBuilder,
313
- createOrderByItem,
314
- createBinaryExpr,
315
- createExistsExpr,
316
- createSelectAst,
317
- isOperationExpr,
318
- createUpdateAst
319
- };
320
- //# sourceMappingURL=chunk-J6O2HVBM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ast/codec-types.ts","../src/ast/util.ts","../src/ast/common.ts","../src/ast/delete.ts","../src/ast/insert.ts","../src/ast/join.ts","../src/ast/order.ts","../src/ast/predicate.ts","../src/ast/select.ts","../src/ast/types.ts","../src/ast/update.ts"],"sourcesContent":["import type { O } from 'ts-toolbelt';\n\n/**\n * Codec metadata for database-specific type information.\n * Used for schema introspection and verification.\n */\nexport interface CodecMeta {\n readonly db?: {\n readonly sql?: {\n readonly postgres?: {\n readonly nativeType: string; // e.g. 'integer', 'text', 'vector', 'timestamp with time zone'\n };\n };\n };\n}\n\n/**\n * Codec interface for encoding/decoding values between wire format and JavaScript types.\n *\n * Codecs are pure, synchronous functions with no side effects or IO.\n * They provide deterministic conversion between database wire types and JS values.\n */\nexport interface Codec<Id extends string = string, TWire = unknown, TJs = unknown> {\n /**\n * Namespaced codec identifier in format 'namespace/name@version'\n * Examples: 'pg/text@1', 'pg/uuid@1', 'pg/timestamptz@1'\n */\n readonly id: Id;\n\n /**\n * Contract scalar type IDs that this codec can handle.\n * Examples: ['text'], ['int4', 'float8'], ['timestamp', 'timestamptz']\n */\n readonly targetTypes: readonly string[];\n\n /**\n * Optional metadata for database-specific type information.\n * Used for schema introspection and verification.\n */\n readonly meta?: CodecMeta;\n\n /**\n * Decode a wire value (from database) to JavaScript type.\n * Must be synchronous and pure (no side effects).\n */\n decode(wire: TWire): TJs;\n\n /**\n * Encode a JavaScript value to wire format (for database).\n * Optional - if not provided, values pass through unchanged.\n * Must be synchronous and pure (no side effects).\n */\n encode?(value: TJs): TWire;\n}\n\n/**\n * Registry interface for codecs organized by ID and by contract scalar type.\n *\n * The registry allows looking up codecs by their namespaced ID or by the\n * contract scalar types they handle. Multiple codecs may handle the same\n * scalar type; ordering in byScalar reflects preference (adapter first,\n * then packs, then app overrides).\n */\nexport interface CodecRegistry {\n get(id: string): Codec<string> | undefined;\n has(id: string): boolean;\n getByScalar(scalar: string): readonly Codec<string>[];\n getDefaultCodec(scalar: string): Codec<string> | undefined;\n register(codec: Codec<string>): void;\n [Symbol.iterator](): Iterator<Codec<string>>;\n values(): IterableIterator<Codec<string>>;\n}\n\n/**\n * Implementation of CodecRegistry.\n */\nclass CodecRegistryImpl implements CodecRegistry {\n private readonly _byId = new Map<string, Codec<string>>();\n private readonly _byScalar = new Map<string, Codec<string>[]>();\n\n /**\n * Map-like interface for codec lookup by ID.\n * Example: registry.get('pg/text@1')\n */\n get(id: string): Codec<string> | undefined {\n return this._byId.get(id);\n }\n\n /**\n * Check if a codec with the given ID is registered.\n */\n has(id: string): boolean {\n return this._byId.has(id);\n }\n\n /**\n * Get all codecs that handle a given scalar type.\n * Returns an empty frozen array if no codecs are found.\n * Example: registry.getByScalar('text') → [codec1, codec2, ...]\n */\n getByScalar(scalar: string): readonly Codec<string>[] {\n return this._byScalar.get(scalar) ?? Object.freeze([]);\n }\n\n /**\n * Get the default codec for a scalar type (first registered codec).\n * Returns undefined if no codec handles this scalar type.\n */\n getDefaultCodec(scalar: string): Codec<string> | undefined {\n const _codecs = this._byScalar.get(scalar);\n return _codecs?.[0];\n }\n\n /**\n * Register a codec in the registry.\n * Throws an error if a codec with the same ID is already registered.\n *\n * @param codec - The codec to register\n * @throws Error if a codec with the same ID already exists\n */\n register(codec: Codec<string>): void {\n if (this._byId.has(codec.id)) {\n throw new Error(`Codec with ID '${codec.id}' is already registered`);\n }\n\n this._byId.set(codec.id, codec);\n\n // Update byScalar mapping\n for (const scalarType of codec.targetTypes) {\n const existing = this._byScalar.get(scalarType);\n if (existing) {\n existing.push(codec);\n } else {\n this._byScalar.set(scalarType, [codec]);\n }\n }\n }\n\n /**\n * Returns an iterator over all registered codecs.\n * Useful for iterating through codecs from another registry.\n */\n *[Symbol.iterator](): Iterator<Codec<string>> {\n for (const codec of this._byId.values()) {\n yield codec;\n }\n }\n\n /**\n * Returns an iterable of all registered codecs.\n */\n values(): IterableIterator<Codec<string>> {\n return this._byId.values();\n }\n}\n\n/**\n * Codec factory - creates a codec with typeId and encode/decode functions.\n */\nexport function codec<Id extends string, TWire, TJs>(config: {\n typeId: Id;\n targetTypes: readonly string[];\n encode: (value: TJs) => TWire;\n decode: (wire: TWire) => TJs;\n meta?: CodecMeta;\n}): Codec<Id, TWire, TJs> {\n return {\n id: config.typeId,\n targetTypes: config.targetTypes,\n ...(config.meta ? { meta: config.meta } : {}),\n encode: config.encode,\n decode: config.decode,\n };\n}\n\n/**\n * Type helpers to extract codec types.\n */\nexport type CodecId<T> =\n T extends Codec<infer Id, unknown, unknown>\n ? Id\n : T extends { readonly id: infer Id }\n ? Id\n : never;\nexport type CodecInput<T> = T extends Codec<string, unknown, infer JsT> ? JsT : never;\nexport type CodecOutput<T> = T extends Codec<string, unknown, infer JsT> ? JsT : never;\n\n/**\n * Type helper to extract codec types from builder instance.\n */\nexport type ExtractCodecTypes<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>,\n> = {\n readonly [K in keyof ScalarNames as ScalarNames[K] extends Codec<infer Id, unknown, unknown>\n ? Id\n : never]: {\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n };\n};\n\n/**\n * Type helper to extract data type IDs from builder instance.\n * Uses ExtractCodecTypes which preserves literal types as keys.\n * Since ExtractCodecTypes<Record<K, ScalarNames[K]>> has exactly one key (the Id),\n * we extract it by creating a mapped type that uses the Id as both key and value,\n * then extract the value type. This preserves literal types.\n */\nexport type ExtractDataTypes<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> },\n> = {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n};\n\n/**\n * Builder interface for declaring codecs.\n */\nexport interface CodecDefBuilder<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>,\n> {\n readonly CodecTypes: ExtractCodecTypes<ScalarNames>;\n\n add<ScalarName extends string, CodecImpl extends Codec<string>>(\n scalarName: ScalarName,\n codecImpl: CodecImpl,\n ): CodecDefBuilder<\n O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>\n >;\n\n readonly codecDefinitions: {\n readonly [K in keyof ScalarNames]: {\n readonly typeId: ScalarNames[K] extends Codec<infer Id extends string, unknown, unknown>\n ? Id\n : never;\n readonly scalar: K;\n readonly codec: ScalarNames[K];\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly jsType: CodecOutput<ScalarNames[K]>;\n };\n };\n\n readonly dataTypes: {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n };\n}\n\n/**\n * Implementation of CodecDefBuilder.\n */\nclass CodecDefBuilderImpl<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>,\n> implements CodecDefBuilder<ScalarNames>\n{\n private readonly _codecs: ScalarNames;\n\n public readonly CodecTypes: ExtractCodecTypes<ScalarNames>;\n public readonly dataTypes: {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n };\n\n constructor(codecs: ScalarNames) {\n this._codecs = codecs;\n\n // Populate CodecTypes from codecs\n const codecTypes: Record<string, { readonly input: unknown; readonly output: unknown }> = {};\n for (const [, codecImpl] of Object.entries(this._codecs)) {\n const codecImplTyped = codecImpl as Codec<string>;\n codecTypes[codecImplTyped.id] = {\n input: undefined as unknown as CodecInput<typeof codecImplTyped>,\n output: undefined as unknown as CodecOutput<typeof codecImplTyped>,\n };\n }\n this.CodecTypes = codecTypes as ExtractCodecTypes<ScalarNames>;\n\n // Populate dataTypes from codecs - extract id property from each codec\n // Build object preserving keys from ScalarNames\n // Type assertion is safe because we know ScalarNames structure matches the return type\n // biome-ignore lint/suspicious/noExplicitAny: dynamic codec mapping requires any\n const dataTypes = {} as any;\n for (const key in this._codecs) {\n if (Object.hasOwn(this._codecs, key)) {\n const codec = this._codecs[key] as Codec<string>;\n dataTypes[key] = codec.id;\n }\n }\n this.dataTypes = dataTypes as {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n };\n }\n\n add<ScalarName extends string, CodecImpl extends Codec<string>>(\n scalarName: ScalarName,\n codecImpl: CodecImpl,\n ): CodecDefBuilder<\n O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>\n > {\n return new CodecDefBuilderImpl({\n ...this._codecs,\n [scalarName]: codecImpl,\n } as O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>);\n }\n\n /**\n * Derive codecDefinitions structure.\n */\n get codecDefinitions(): {\n readonly [K in keyof ScalarNames]: {\n readonly typeId: ScalarNames[K] extends Codec<infer Id, unknown, unknown> ? Id : never;\n readonly scalar: K;\n readonly codec: ScalarNames[K];\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly jsType: CodecOutput<ScalarNames[K]>;\n };\n } {\n const result: Record<\n string,\n {\n typeId: string;\n scalar: string;\n codec: Codec;\n input: unknown;\n output: unknown;\n jsType: unknown;\n }\n > = {};\n\n for (const [scalarName, codecImpl] of Object.entries(this._codecs)) {\n const codec = codecImpl as Codec<string>;\n result[scalarName] = {\n typeId: codec.id,\n scalar: scalarName,\n codec: codec,\n input: undefined as unknown as CodecInput<typeof codec>,\n output: undefined as unknown as CodecOutput<typeof codec>,\n jsType: undefined as unknown as CodecOutput<typeof codec>,\n };\n }\n\n return result as {\n readonly [K in keyof ScalarNames]: {\n readonly typeId: ScalarNames[K] extends Codec<infer Id extends string, unknown, unknown>\n ? Id\n : never;\n readonly scalar: K;\n readonly codec: ScalarNames[K];\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly jsType: CodecOutput<ScalarNames[K]>;\n };\n };\n }\n}\n\n/**\n * Create a new codec registry.\n */\nexport function createCodecRegistry(): CodecRegistry {\n return new CodecRegistryImpl();\n}\n\n/**\n * Create a new codec definition builder.\n */\nexport function defineCodecs(): CodecDefBuilder<Record<never, never>> {\n return new CodecDefBuilderImpl({});\n}\n","export function compact<T extends Record<string, unknown>>(o: T): T {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(o)) {\n if (v === undefined || v === null) continue;\n if (Array.isArray(v) && v.length === 0) continue;\n out[k] = v;\n }\n return out as T;\n}\n","import type { ColumnRef, LiteralExpr, OperationExpr, ParamRef, TableRef } from './types';\nimport { compact } from './util';\n\nexport function createTableRef(name: string): TableRef {\n return {\n kind: 'table',\n name,\n };\n}\n\nexport function createColumnRef(table: string, column: string): ColumnRef {\n return {\n kind: 'col',\n table,\n column,\n };\n}\n\nexport function createParamRef(index: number, name?: string): ParamRef {\n return compact({\n kind: 'param',\n index,\n name,\n }) as ParamRef;\n}\n\nexport function createOperationExpr(operation: OperationExpr): OperationExpr {\n return operation;\n}\n\nexport function createLiteralExpr(value: unknown): LiteralExpr {\n return {\n kind: 'literal',\n value,\n };\n}\n","import type { BinaryExpr, ColumnRef, DeleteAst, TableRef } from './types';\nimport { compact } from './util';\n\nexport interface CreateDeleteAstOptions {\n readonly table: TableRef;\n readonly where: BinaryExpr;\n readonly returning?: ReadonlyArray<ColumnRef>;\n}\n\nexport function createDeleteAst(options: CreateDeleteAstOptions): DeleteAst {\n return compact({\n kind: 'delete',\n table: options.table,\n where: options.where,\n returning: options.returning,\n }) as DeleteAst;\n}\n","import type { ColumnRef, InsertAst, ParamRef, TableRef } from './types';\nimport { compact } from './util';\n\nexport interface CreateInsertAstOptions {\n readonly table: TableRef;\n readonly values: Record<string, ColumnRef | ParamRef>;\n readonly returning?: ReadonlyArray<ColumnRef>;\n}\n\nexport function createInsertAst(options: CreateInsertAstOptions): InsertAst {\n return compact({\n kind: 'insert',\n table: options.table,\n values: options.values,\n returning: options.returning,\n }) as InsertAst;\n}\n","import { planInvalid } from '@prisma-next/plan';\nimport type { AnyColumnBuilder, JoinOnBuilder, JoinOnPredicate } from '../types';\nimport { isColumnBuilder } from '../types';\nimport type { ColumnRef, JoinAst, JoinOnExpr, TableRef } from './types';\n\nexport function createJoin(\n joinType: 'inner' | 'left' | 'right' | 'full',\n table: TableRef,\n on: JoinOnExpr,\n): JoinAst {\n return {\n kind: 'join',\n joinType,\n table,\n on,\n };\n}\n\nexport function createJoinOnExpr(left: ColumnRef, right: ColumnRef): JoinOnExpr {\n return {\n kind: 'eqCol',\n left,\n right,\n };\n}\n\nclass JoinOnBuilderImpl implements JoinOnBuilder {\n eqCol(left: AnyColumnBuilder, right: AnyColumnBuilder): JoinOnPredicate {\n if (!left || !isColumnBuilder(left)) {\n throw planInvalid('Join ON left operand must be a column');\n }\n\n if (!right || !isColumnBuilder(right)) {\n throw planInvalid('Join ON right operand must be a column');\n }\n\n // TypeScript can't narrow ColumnBuilder properly, so we assert\n const leftCol = left as unknown as { table: string; column: string };\n const rightCol = right as unknown as { table: string; column: string };\n if (leftCol.table === rightCol.table) {\n throw planInvalid('Self-joins are not supported in MVP');\n }\n\n return {\n kind: 'join-on',\n left: left as AnyColumnBuilder,\n right: right as AnyColumnBuilder,\n };\n }\n}\n\nexport function createJoinOnBuilder(): JoinOnBuilder {\n return new JoinOnBuilderImpl();\n}\n","import type { ColumnRef, Direction, OperationExpr } from './types';\n\nexport function createOrderByItem(\n expr: ColumnRef | OperationExpr,\n dir: 'asc' | 'desc',\n): { expr: ColumnRef | OperationExpr; dir: Direction } {\n return {\n expr,\n dir,\n };\n}\n","import type {\n BinaryExpr,\n BinaryOp,\n ColumnRef,\n ExistsExpr,\n OperationExpr,\n ParamRef,\n SelectAst,\n} from './types';\n\nexport function createBinaryExpr(\n op: BinaryOp,\n left: ColumnRef | OperationExpr,\n right: ColumnRef | ParamRef,\n): BinaryExpr {\n return {\n kind: 'bin',\n op,\n left,\n right,\n };\n}\n\nexport function createExistsExpr(not: boolean, subquery: SelectAst): ExistsExpr {\n return {\n kind: 'exists',\n not,\n subquery,\n };\n}\n","import type {\n BinaryExpr,\n ColumnRef,\n Direction,\n ExistsExpr,\n IncludeAst,\n IncludeRef,\n JoinAst,\n OperationExpr,\n SelectAst,\n TableRef,\n} from './types';\nimport { compact } from './util';\n\nexport interface CreateSelectAstOptions {\n readonly from: TableRef;\n readonly joins?: ReadonlyArray<JoinAst>;\n readonly includes?: ReadonlyArray<IncludeAst>;\n readonly project: ReadonlyArray<{\n alias: string;\n expr: ColumnRef | IncludeRef | OperationExpr;\n }>;\n readonly where?: BinaryExpr | ExistsExpr;\n readonly orderBy?: ReadonlyArray<{ expr: ColumnRef | OperationExpr; dir: Direction }>;\n readonly limit?: number;\n}\n\nexport function createSelectAst(options: CreateSelectAstOptions): SelectAst {\n return compact({\n kind: 'select',\n from: options.from,\n joins: options.joins,\n includes: options.includes,\n project: options.project,\n where: options.where,\n orderBy: options.orderBy,\n limit: options.limit,\n }) as SelectAst;\n}\n","import type { ReturnSpec } from '@prisma-next/operations';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\n\n// SQL-specific AST types and supporting types\n// These types are needed by adapters and runtime for SQL query execution\n\nexport type Direction = 'asc' | 'desc';\n\nexport interface TableRef {\n readonly kind: 'table';\n readonly name: string;\n}\n\nexport interface ColumnRef {\n readonly kind: 'col';\n readonly table: string;\n readonly column: string;\n}\n\nexport interface ParamRef {\n readonly kind: 'param';\n readonly index: number;\n readonly name?: string;\n}\n\nexport interface LiteralExpr {\n readonly kind: 'literal';\n readonly value: unknown;\n}\n\nexport interface OperationExpr {\n readonly kind: 'operation';\n readonly method: string;\n readonly forTypeId: string;\n readonly self: ColumnRef | OperationExpr;\n readonly args: ReadonlyArray<ColumnRef | ParamRef | LiteralExpr | OperationExpr>;\n readonly returns: ReturnSpec;\n readonly lowering: SqlLoweringSpec;\n}\n\nexport function isOperationExpr(expr: ColumnRef | OperationExpr): expr is OperationExpr {\n return expr.kind === 'operation';\n}\n\nexport type BinaryOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte';\n\nexport interface BinaryExpr {\n readonly kind: 'bin';\n readonly op: BinaryOp;\n readonly left: ColumnRef | OperationExpr;\n readonly right: ColumnRef | ParamRef;\n}\n\nexport interface ExistsExpr {\n readonly kind: 'exists';\n readonly not: boolean;\n readonly subquery: SelectAst;\n}\n\nexport type JoinOnExpr = {\n readonly kind: 'eqCol';\n readonly left: ColumnRef;\n readonly right: ColumnRef;\n};\n\nexport interface JoinAst {\n readonly kind: 'join';\n readonly joinType: 'inner' | 'left' | 'right' | 'full';\n readonly table: TableRef;\n readonly on: JoinOnExpr;\n}\n\nexport interface IncludeRef {\n readonly kind: 'includeRef';\n readonly alias: string;\n}\n\nexport interface IncludeAst {\n readonly kind: 'includeMany';\n readonly alias: string;\n readonly child: {\n readonly table: TableRef;\n readonly on: JoinOnExpr;\n readonly where?: BinaryExpr | ExistsExpr;\n readonly orderBy?: ReadonlyArray<{ expr: ColumnRef | OperationExpr; dir: Direction }>;\n readonly limit?: number;\n readonly project: ReadonlyArray<{ alias: string; expr: ColumnRef | OperationExpr }>;\n };\n}\n\nexport interface SelectAst {\n readonly kind: 'select';\n readonly from: TableRef;\n readonly joins?: ReadonlyArray<JoinAst>;\n readonly includes?: ReadonlyArray<IncludeAst>;\n readonly project: ReadonlyArray<{\n alias: string;\n expr: ColumnRef | IncludeRef | OperationExpr | LiteralExpr;\n }>;\n readonly where?: BinaryExpr | ExistsExpr;\n readonly orderBy?: ReadonlyArray<{ expr: ColumnRef | OperationExpr; dir: Direction }>;\n readonly limit?: number;\n}\n\nexport interface InsertAst {\n readonly kind: 'insert';\n readonly table: TableRef;\n readonly values: Record<string, ColumnRef | ParamRef>;\n readonly returning?: ReadonlyArray<ColumnRef>;\n}\n\nexport interface UpdateAst {\n readonly kind: 'update';\n readonly table: TableRef;\n readonly set: Record<string, ColumnRef | ParamRef>;\n readonly where: BinaryExpr;\n readonly returning?: ReadonlyArray<ColumnRef>;\n}\n\nexport interface DeleteAst {\n readonly kind: 'delete';\n readonly table: TableRef;\n readonly where: BinaryExpr;\n readonly returning?: ReadonlyArray<ColumnRef>;\n}\n\nexport type QueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst;\n\nexport interface LoweredStatement {\n readonly sql: string;\n readonly params: readonly unknown[];\n readonly annotations?: Record<string, unknown>;\n}\n","import type { BinaryExpr, ColumnRef, ParamRef, TableRef, UpdateAst } from './types';\nimport { compact } from './util';\n\nexport interface CreateUpdateAstOptions {\n readonly table: TableRef;\n readonly set: Record<string, ColumnRef | ParamRef>;\n readonly where: BinaryExpr;\n readonly returning?: ReadonlyArray<ColumnRef>;\n}\n\nexport function createUpdateAst(options: CreateUpdateAstOptions): UpdateAst {\n return compact({\n kind: 'update',\n table: options.table,\n set: options.set,\n where: options.where,\n returning: options.returning,\n }) as UpdateAst;\n}\n"],"mappings":"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","names":["codec"]}
@@ -1,16 +0,0 @@
1
- // src/plan.ts
2
- function augmentDescriptorWithColumnMeta(descriptors, columnMeta) {
3
- const descriptor = descriptors[descriptors.length - 1];
4
- if (descriptor && columnMeta) {
5
- descriptors[descriptors.length - 1] = {
6
- ...descriptor,
7
- codecId: columnMeta.codecId,
8
- nativeType: columnMeta.nativeType
9
- };
10
- }
11
- }
12
-
13
- export {
14
- augmentDescriptorWithColumnMeta
15
- };
16
- //# sourceMappingURL=chunk-KYSP7L5C.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/plan.ts"],"sourcesContent":["import type { ExecutionPlan, ParamDescriptor } from '@prisma-next/contract/types';\nimport type { StorageColumn } from '@prisma-next/sql-contract/types';\nimport type { QueryAst } from './ast/types';\n\n/**\n * SQL query plan produced by lanes before lowering.\n *\n * Lanes build ASTs and metadata but do not perform SQL lowering.\n * The `sql` field is absent - lowering happens in the runtime executor.\n *\n * Structurally aligns with ExecutionPlan<Row, QueryAst> (without sql field) to maintain\n * compatibility with ExecutionPlan/Plan-based utilities.\n * The generic parameter `_Row` is preserved for type extraction via ResultType.\n */\nexport interface SqlQueryPlan<_Row = unknown>\n extends Pick<ExecutionPlan<_Row, QueryAst>, 'params' | 'meta'> {\n readonly ast: QueryAst;\n // Phantom property to preserve generic parameter for type extraction\n // This allows ResultType to extract _Row for SqlQueryPlan values.\n readonly _Row?: _Row;\n}\n\n/**\n * Augments the last ParamDescriptor in the array with codecId and nativeType from columnMeta.\n * This is used when building WHERE expressions to ensure param descriptors have type information.\n */\nexport function augmentDescriptorWithColumnMeta(\n descriptors: ParamDescriptor[],\n columnMeta: StorageColumn | undefined,\n): void {\n const descriptor = descriptors[descriptors.length - 1];\n if (descriptor && columnMeta) {\n descriptors[descriptors.length - 1] = {\n ...descriptor,\n codecId: columnMeta.codecId,\n nativeType: columnMeta.nativeType,\n };\n }\n}\n"],"mappings":";AA0BO,SAAS,gCACd,aACA,YACM;AACN,QAAM,aAAa,YAAY,YAAY,SAAS,CAAC;AACrD,MAAI,cAAc,YAAY;AAC5B,gBAAY,YAAY,SAAS,CAAC,IAAI;AAAA,MACpC,GAAG;AAAA,MACH,SAAS,WAAW;AAAA,MACpB,YAAY,WAAW;AAAA,IACzB;AAAA,EACF;AACF;","names":[]}
@@ -1,159 +0,0 @@
1
- import {
2
- isParamPlaceholder
3
- } from "./chunk-5N34PNVZ.js";
4
-
5
- // src/operations-registry.ts
6
- import { hasAllCapabilities } from "@prisma-next/operations";
7
- import { planInvalid } from "@prisma-next/plan";
8
- function isColumnBuilder(value) {
9
- return typeof value === "object" && value !== null && "kind" in value && value.kind === "column";
10
- }
11
- function executeOperation(signature, selfBuilder, args, columnMeta, operationRegistry, contractCapabilities) {
12
- if (args.length !== signature.args.length) {
13
- throw planInvalid(
14
- `Operation ${signature.method} expects ${signature.args.length} arguments, got ${args.length}`
15
- );
16
- }
17
- const selfBuilderWithExpr = selfBuilder;
18
- const selfExpr = selfBuilderWithExpr._operationExpr ? selfBuilderWithExpr._operationExpr : {
19
- kind: "col",
20
- table: selfBuilderWithExpr.table,
21
- column: selfBuilderWithExpr.column
22
- };
23
- const operationArgs = [];
24
- for (let i = 0; i < args.length; i++) {
25
- const arg = args[i];
26
- const argSpec = signature.args[i];
27
- if (!argSpec) {
28
- throw planInvalid(`Missing argument spec for argument ${i}`);
29
- }
30
- if (argSpec.kind === "param") {
31
- if (!isParamPlaceholder(arg)) {
32
- throw planInvalid(`Argument ${i} must be a parameter placeholder`);
33
- }
34
- operationArgs.push({
35
- kind: "param",
36
- index: 0,
37
- name: arg.name
38
- });
39
- } else if (argSpec.kind === "typeId") {
40
- if (!isColumnBuilder(arg)) {
41
- throw planInvalid(`Argument ${i} must be a ColumnBuilder`);
42
- }
43
- const colBuilderWithExpr = arg;
44
- if (colBuilderWithExpr._operationExpr) {
45
- operationArgs.push(colBuilderWithExpr._operationExpr);
46
- } else {
47
- operationArgs.push({
48
- kind: "col",
49
- table: colBuilderWithExpr.table,
50
- column: colBuilderWithExpr.column
51
- });
52
- }
53
- } else if (argSpec.kind === "literal") {
54
- operationArgs.push({
55
- kind: "literal",
56
- value: arg
57
- });
58
- }
59
- }
60
- const operationExpr = {
61
- kind: "operation",
62
- method: signature.method,
63
- forTypeId: signature.forTypeId,
64
- self: selfExpr,
65
- args: operationArgs,
66
- returns: signature.returns,
67
- lowering: signature.lowering
68
- };
69
- const returnTypeId = signature.returns.kind === "typeId" ? signature.returns.type : void 0;
70
- const returnColumnMeta = returnTypeId ? {
71
- ...columnMeta,
72
- codecId: returnTypeId
73
- } : columnMeta;
74
- const createComparisonMethod = (op) => (value) => Object.freeze({
75
- kind: "binary",
76
- op,
77
- left: operationExpr,
78
- right: value
79
- });
80
- const baseResult = {
81
- kind: "column",
82
- table: selfBuilderWithExpr.table,
83
- column: selfBuilderWithExpr.column,
84
- get columnMeta() {
85
- return returnColumnMeta;
86
- },
87
- eq: createComparisonMethod("eq"),
88
- neq: createComparisonMethod("neq"),
89
- gt: createComparisonMethod("gt"),
90
- lt: createComparisonMethod("lt"),
91
- gte: createComparisonMethod("gte"),
92
- lte: createComparisonMethod("lte"),
93
- asc() {
94
- return Object.freeze({
95
- kind: "order",
96
- expr: operationExpr,
97
- dir: "asc"
98
- });
99
- },
100
- desc() {
101
- return Object.freeze({
102
- kind: "order",
103
- expr: operationExpr,
104
- dir: "desc"
105
- });
106
- },
107
- _operationExpr: operationExpr
108
- };
109
- if (returnTypeId && operationRegistry) {
110
- const resultWithOps = attachOperationsToColumnBuilder(
111
- baseResult,
112
- returnColumnMeta,
113
- operationRegistry,
114
- contractCapabilities
115
- );
116
- return Object.freeze(resultWithOps);
117
- }
118
- return Object.freeze(baseResult);
119
- }
120
- function attachOperationsToColumnBuilder(columnBuilder, columnMeta, registry, contractCapabilities) {
121
- if (!registry) {
122
- return columnBuilder;
123
- }
124
- const codecId = columnMeta.codecId;
125
- if (!codecId) {
126
- return columnBuilder;
127
- }
128
- const operations = registry.byType(codecId);
129
- if (operations.length === 0) {
130
- return columnBuilder;
131
- }
132
- const builderWithOps = columnBuilder;
133
- for (const operation of operations) {
134
- if (operation.capabilities && operation.capabilities.length > 0) {
135
- if (!contractCapabilities) {
136
- continue;
137
- }
138
- if (!hasAllCapabilities(operation.capabilities, contractCapabilities)) {
139
- continue;
140
- }
141
- }
142
- builderWithOps[operation.method] = function(...args) {
143
- return executeOperation(
144
- operation,
145
- this,
146
- args,
147
- columnMeta,
148
- registry,
149
- contractCapabilities
150
- );
151
- };
152
- }
153
- return builderWithOps;
154
- }
155
-
156
- export {
157
- attachOperationsToColumnBuilder
158
- };
159
- //# sourceMappingURL=chunk-M23L3JHG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/operations-registry.ts"],"sourcesContent":["import type { OperationRegistry } from '@prisma-next/operations';\nimport { hasAllCapabilities } from '@prisma-next/operations';\nimport { planInvalid } from '@prisma-next/plan';\nimport type { StorageColumn } from '@prisma-next/sql-contract/types';\nimport type { SqlOperationSignature } from '@prisma-next/sql-operations';\nimport type { BinaryOp, ColumnRef, LiteralExpr, OperationExpr, ParamRef } from './ast/types';\nimport type { AnyColumnBuilder, ColumnBuilder, OperationTypes, ParamPlaceholder } from './types';\nimport { isParamPlaceholder } from './utils/guards';\n\nfunction isColumnBuilder(value: unknown): value is AnyColumnBuilder {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n (value as { kind: unknown }).kind === 'column'\n );\n}\n\n/**\n * Executes an operation and returns a column-shaped result object.\n * This is the canonical entrypoint for operation invocation, enabling\n * future enhancements like telemetry, caching, or tracing.\n *\n * @param signature - The operation signature from the registry\n * @param selfBuilder - The column builder that the operation is called on\n * @param args - The arguments passed to the operation\n * @param columnMeta - The metadata of the column the operation is called on\n * @returns A column-shaped builder with the operation expression attached\n */\nfunction executeOperation(\n signature: SqlOperationSignature,\n selfBuilder: AnyColumnBuilder,\n args: unknown[],\n columnMeta: StorageColumn,\n operationRegistry?: OperationRegistry,\n contractCapabilities?: Record<string, Record<string, boolean>>,\n): AnyColumnBuilder & { _operationExpr?: OperationExpr } {\n if (args.length !== signature.args.length) {\n throw planInvalid(\n `Operation ${signature.method} expects ${signature.args.length} arguments, got ${args.length}`,\n );\n }\n\n // Check if this column builder has an existing operation expression\n const selfBuilderWithExpr = selfBuilder as unknown as {\n _operationExpr?: OperationExpr;\n table: string;\n column: string;\n };\n const selfExpr: ColumnRef | OperationExpr = selfBuilderWithExpr._operationExpr\n ? selfBuilderWithExpr._operationExpr\n : {\n kind: 'col',\n table: selfBuilderWithExpr.table,\n column: selfBuilderWithExpr.column,\n };\n\n const operationArgs: Array<ColumnRef | ParamRef | LiteralExpr | OperationExpr> = [];\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const argSpec = signature.args[i];\n if (!argSpec) {\n throw planInvalid(`Missing argument spec for argument ${i}`);\n }\n\n if (argSpec.kind === 'param') {\n if (!isParamPlaceholder(arg)) {\n throw planInvalid(`Argument ${i} must be a parameter placeholder`);\n }\n operationArgs.push({\n kind: 'param',\n index: 0,\n name: arg.name,\n });\n } else if (argSpec.kind === 'typeId') {\n if (!isColumnBuilder(arg)) {\n throw planInvalid(`Argument ${i} must be a ColumnBuilder`);\n }\n const colBuilderWithExpr = arg as unknown as {\n _operationExpr?: OperationExpr;\n table: string;\n column: string;\n };\n // Check if the column builder has an operation expression\n if (colBuilderWithExpr._operationExpr) {\n operationArgs.push(colBuilderWithExpr._operationExpr);\n } else {\n // Fall back to raw ColumnRef\n operationArgs.push({\n kind: 'col',\n table: colBuilderWithExpr.table,\n column: colBuilderWithExpr.column,\n });\n }\n } else if (argSpec.kind === 'literal') {\n operationArgs.push({\n kind: 'literal',\n value: arg,\n });\n }\n }\n\n const operationExpr: OperationExpr = {\n kind: 'operation',\n method: signature.method,\n forTypeId: signature.forTypeId,\n self: selfExpr,\n args: operationArgs,\n returns: signature.returns,\n lowering: signature.lowering,\n };\n\n const returnTypeId = signature.returns.kind === 'typeId' ? signature.returns.type : undefined;\n const returnColumnMeta: StorageColumn = returnTypeId\n ? {\n ...columnMeta,\n codecId: returnTypeId,\n }\n : columnMeta;\n\n const createComparisonMethod = (op: BinaryOp) => (value: ParamPlaceholder) =>\n Object.freeze({\n kind: 'binary' as const,\n op,\n left: operationExpr,\n right: value,\n });\n\n const baseResult = {\n kind: 'column' as const,\n table: selfBuilderWithExpr.table,\n column: selfBuilderWithExpr.column,\n get columnMeta() {\n return returnColumnMeta;\n },\n eq: createComparisonMethod('eq'),\n neq: createComparisonMethod('neq'),\n gt: createComparisonMethod('gt'),\n lt: createComparisonMethod('lt'),\n gte: createComparisonMethod('gte'),\n lte: createComparisonMethod('lte'),\n asc() {\n return Object.freeze({\n kind: 'order' as const,\n expr: operationExpr,\n dir: 'asc' as const,\n });\n },\n desc() {\n return Object.freeze({\n kind: 'order' as const,\n expr: operationExpr,\n dir: 'desc' as const,\n });\n },\n _operationExpr: operationExpr,\n } as unknown as AnyColumnBuilder & {\n _operationExpr?: OperationExpr;\n };\n\n // If the return type is a typeId, attach operations for that type\n if (returnTypeId && operationRegistry) {\n const resultWithOps = attachOperationsToColumnBuilder(\n baseResult as ColumnBuilder<string, StorageColumn, unknown, Record<string, never>>,\n returnColumnMeta,\n operationRegistry,\n contractCapabilities,\n ) as AnyColumnBuilder & {\n _operationExpr?: OperationExpr;\n };\n return Object.freeze(resultWithOps);\n }\n\n return Object.freeze(baseResult);\n}\n\nexport function attachOperationsToColumnBuilder<\n ColumnName extends string,\n ColumnMeta extends StorageColumn,\n JsType = unknown,\n Operations extends OperationTypes = Record<string, never>,\n>(\n columnBuilder: ColumnBuilder<ColumnName, ColumnMeta, JsType, Record<string, never>>,\n columnMeta: ColumnMeta,\n registry: OperationRegistry | undefined,\n contractCapabilities?: Record<string, Record<string, boolean>>,\n): ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations> {\n if (!registry) {\n return columnBuilder as ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;\n }\n\n // Use codecId to look up operations registered for this column's type\n const codecId = columnMeta.codecId;\n if (!codecId) {\n return columnBuilder as ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;\n }\n\n const operations = registry.byType(codecId) as SqlOperationSignature[];\n if (operations.length === 0) {\n return columnBuilder as ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;\n }\n\n const builderWithOps = columnBuilder as unknown as ColumnBuilder<\n ColumnName,\n ColumnMeta,\n JsType,\n Operations\n >;\n\n for (const operation of operations) {\n if (operation.capabilities && operation.capabilities.length > 0) {\n if (!contractCapabilities) {\n continue;\n }\n\n if (!hasAllCapabilities(operation.capabilities, contractCapabilities)) {\n continue;\n }\n }\n // Method sugar: attach operation as a method on the column builder\n (builderWithOps as Record<string, unknown>)[operation.method] = function (\n this: ColumnBuilder<ColumnName, ColumnMeta, JsType, Record<string, never>>,\n ...args: unknown[]\n ) {\n return executeOperation(\n operation,\n this as unknown as ColumnBuilder<string, StorageColumn, unknown>,\n args,\n columnMeta,\n registry,\n contractCapabilities,\n );\n };\n }\n\n return builderWithOps;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-U7AXAUJA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}