@prisma-next/sql-relational-core 0.5.0-dev.66 → 0.5.0-dev.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{errors-kgKOaDM1.mjs → errors-Cb03_kgU.mjs} +2 -2
- package/dist/{errors-kgKOaDM1.mjs.map → errors-Cb03_kgU.mjs.map} +1 -1
- package/dist/{errors-Chs-ph28.d.mts → errors-DCg-36g-.d.mts} +2 -2
- package/dist/errors-DCg-36g-.d.mts.map +1 -0
- package/dist/exports/ast.d.mts +9 -9
- package/dist/exports/ast.d.mts.map +1 -1
- package/dist/exports/ast.mjs +2 -6
- package/dist/exports/ast.mjs.map +1 -1
- package/dist/exports/codec-descriptor-registry.d.mts +1 -2
- package/dist/exports/codec-descriptor-registry.d.mts.map +1 -1
- package/dist/exports/codec-descriptor-registry.mjs +1 -1
- package/dist/exports/codec-descriptor-registry.mjs.map +1 -1
- package/dist/exports/errors.d.mts +1 -4
- package/dist/exports/errors.mjs +2 -3
- package/dist/exports/expression.d.mts +3 -3
- package/dist/exports/expression.d.mts.map +1 -1
- package/dist/exports/expression.mjs +2 -3
- package/dist/exports/expression.mjs.map +1 -1
- package/dist/exports/plan.d.mts +2 -2
- package/dist/exports/plan.mjs +1 -1
- package/dist/exports/query-lane-context.d.mts +1 -1
- package/dist/exports/query-lane-context.mjs +1 -1
- package/dist/exports/types.d.mts +2 -5
- package/dist/exports/types.mjs +1 -1
- package/dist/index.d.mts +7 -9
- package/dist/index.mjs +3 -4
- package/dist/{plan-nwFE15re.d.mts → plan-CZ6CFuSX.d.mts} +2 -3
- package/dist/plan-CZ6CFuSX.d.mts.map +1 -0
- package/dist/{query-lane-context-DlWgKvvt.d.mts → query-lane-context-DaimN0zf.d.mts} +2 -3
- package/dist/query-lane-context-DaimN0zf.d.mts.map +1 -0
- package/dist/{sql-execution-plan-DTfj23Tj.d.mts → sql-execution-plan-DgcD75jn.d.mts} +2 -3
- package/dist/sql-execution-plan-DgcD75jn.d.mts.map +1 -0
- package/dist/{types-dPxXIUPS.d.mts → types-BnLrX_Vr.d.mts} +3 -4
- package/dist/types-BnLrX_Vr.d.mts.map +1 -0
- package/dist/{types-G3hdNPZZ.d.mts → types-Czw4j_wY.d.mts} +10 -10
- package/dist/types-Czw4j_wY.d.mts.map +1 -0
- package/dist/{types-U74HFwNI.d.mts → types-hwPoFZX2.d.mts} +1 -1
- package/dist/types-hwPoFZX2.d.mts.map +1 -0
- package/dist/{types-CO7zrXfK.mjs → types-vA5134SY.mjs} +4 -4
- package/dist/types-vA5134SY.mjs.map +1 -0
- package/package.json +12 -12
- package/dist/errors-Chs-ph28.d.mts.map +0 -1
- package/dist/plan-nwFE15re.d.mts.map +0 -1
- package/dist/query-lane-context-DlWgKvvt.d.mts.map +0 -1
- package/dist/sql-execution-plan-DTfj23Tj.d.mts.map +0 -1
- package/dist/types-CO7zrXfK.mjs.map +0 -1
- package/dist/types-G3hdNPZZ.d.mts.map +0 -1
- package/dist/types-U74HFwNI.d.mts.map +0 -1
- package/dist/types-dPxXIUPS.d.mts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-
|
|
1
|
+
{"version":3,"file":"errors-Cb03_kgU.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["import type { RuntimeError } from './types';\n\nexport function planInvalid(\n message: string,\n details?: Record<string, unknown>,\n hints?: readonly string[],\n docs?: readonly string[],\n): RuntimeError {\n const error = new Error(message) as RuntimeError;\n\n Object.defineProperty(error, 'name', {\n value: 'RuntimeError',\n configurable: true,\n });\n\n return Object.assign(error, {\n code: 'PLAN.INVALID',\n category: 'PLAN' as const,\n severity: 'error' as const,\n details,\n hints,\n docs,\n });\n}\n\nexport function planUnsupported(\n message: string,\n details?: Record<string, unknown>,\n hints?: readonly string[],\n docs?: readonly string[],\n): RuntimeError {\n const error = new Error(message) as RuntimeError;\n\n Object.defineProperty(error, 'name', {\n value: 'RuntimeError',\n configurable: true,\n });\n\n return Object.assign(error, {\n code: 'PLAN.UNSUPPORTED',\n category: 'PLAN' as const,\n severity: 'error' as const,\n details,\n hints,\n docs,\n });\n}\n"],"mappings":";AAEA,SAAgB,YACd,SACA,SACA,OACA,MACc;CACd,MAAM,QAAQ,IAAI,MAAM,QAAQ;CAEhC,OAAO,eAAe,OAAO,QAAQ;EACnC,OAAO;EACP,cAAc;EACf,CAAC;CAEF,OAAO,OAAO,OAAO,OAAO;EAC1B,MAAM;EACN,UAAU;EACV,UAAU;EACV;EACA;EACA;EACD,CAAC;;AAGJ,SAAgB,gBACd,SACA,SACA,OACA,MACc;CACd,MAAM,QAAQ,IAAI,MAAM,QAAQ;CAEhC,OAAO,eAAe,OAAO,QAAQ;EACnC,OAAO;EACP,cAAc;EACf,CAAC;CAEF,OAAO,OAAO,OAAO,OAAO;EAC1B,MAAM;EACN,UAAU;EACV,UAAU;EACV;EACA;EACA;EACD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { y as RuntimeError } from "./types-
|
|
1
|
+
import { y as RuntimeError } from "./types-Czw4j_wY.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/errors.d.ts
|
|
4
4
|
declare function planInvalid(message: string, details?: Record<string, unknown>, hints?: readonly string[], docs?: readonly string[]): RuntimeError;
|
|
5
5
|
declare function planUnsupported(message: string, details?: Record<string, unknown>, hints?: readonly string[], docs?: readonly string[]): RuntimeError;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { planUnsupported as n, planInvalid as t };
|
|
8
|
-
//# sourceMappingURL=errors-
|
|
8
|
+
//# sourceMappingURL=errors-DCg-36g-.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-DCg-36g-.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;iBAEgB,WAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAA;AAAA,iBAkBa,eAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAA"}
|
package/dist/exports/ast.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $ as TableSource, A as InsertOnConflict, B as NotExpr, C as ExistsExpr, D as ExpressionSource, E as ExpressionRewriter, F as JsonObjectEntry, G as ParamRef, H as OperationExpr, I as JsonObjectExpr, J as ProjectionItem, K as ParamRefBindingRefs, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableRef, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SelectAstOptions, Y as SelectAst, Z as SubqueryExpr, _ as DeleteAst, a as AndExpr, at as queryAstKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as ToWhereExpr, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as isWhereExpr, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as WhereArg, o as AnyExpression, ot as whereExprKinds, p as BinaryExpr, q as ProjectionExpr, r as AggregateFn, rt as isQueryAst, s as AnyFromSource, t as AggregateCountFn, tt as UpdateAst, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "../types-
|
|
2
|
-
import { _ as ExtractCodecTypes, b as SqlColumnRef, c as Codec, d as CodecMeta, f as CodecTrait, g as DescriptorCodecTraits, h as DescriptorCodecInput, l as CodecCallContext, m as DescriptorCodecId, n as CodecDescriptorRegistry, p as ContractCodecRegistry, s as AnyCodecDescriptor, u as CodecDescriptor, v as SqlCodecCallContext, y as SqlCodecInstanceContext } from "../query-lane-context-
|
|
3
|
-
import * as _prisma_next_framework_components_codec0 from "@prisma-next/framework-components/codec";
|
|
1
|
+
import { $ as TableSource, A as InsertOnConflict, B as NotExpr, C as ExistsExpr, D as ExpressionSource, E as ExpressionRewriter, F as JsonObjectEntry, G as ParamRef, H as OperationExpr, I as JsonObjectExpr, J as ProjectionItem, K as ParamRefBindingRefs, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableRef, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SelectAstOptions, Y as SelectAst, Z as SubqueryExpr, _ as DeleteAst, a as AndExpr, at as queryAstKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as ToWhereExpr, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as isWhereExpr, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as WhereArg, o as AnyExpression, ot as whereExprKinds, p as BinaryExpr, q as ProjectionExpr, r as AggregateFn, rt as isQueryAst, s as AnyFromSource, t as AggregateCountFn, tt as UpdateAst, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "../types-hwPoFZX2.mjs";
|
|
2
|
+
import { _ as ExtractCodecTypes, b as SqlColumnRef, c as Codec, d as CodecMeta, f as CodecTrait, g as DescriptorCodecTraits, h as DescriptorCodecInput, l as CodecCallContext, m as DescriptorCodecId, n as CodecDescriptorRegistry, p as ContractCodecRegistry, s as AnyCodecDescriptor, u as CodecDescriptor, v as SqlCodecCallContext, y as SqlCodecInstanceContext } from "../query-lane-context-DaimN0zf.mjs";
|
|
3
|
+
import * as _$_prisma_next_framework_components_codec0 from "@prisma-next/framework-components/codec";
|
|
4
4
|
import { CodecCallContext as CodecCallContext$1, CodecDescriptorImpl, CodecImpl, CodecInstanceContext } from "@prisma-next/framework-components/codec";
|
|
5
5
|
import { ContractMarkerRecord, JsonValue } from "@prisma-next/contract/types";
|
|
6
6
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
@@ -153,7 +153,7 @@ declare class SqlTextDescriptor extends CodecDescriptorImpl<void> {
|
|
|
153
153
|
factory(): (ctx: CodecInstanceContext) => SqlTextCodec;
|
|
154
154
|
}
|
|
155
155
|
declare const sqlTextDescriptor: SqlTextDescriptor;
|
|
156
|
-
declare const sqlTextColumn: () => _prisma_next_framework_components_codec0.ColumnSpec<SqlTextCodec, undefined>;
|
|
156
|
+
declare const sqlTextColumn: () => _$_prisma_next_framework_components_codec0.ColumnSpec<SqlTextCodec, undefined>;
|
|
157
157
|
declare class SqlIntCodec extends CodecImpl<typeof SQL_INT_CODEC_ID, readonly ['equality', 'order', 'numeric'], number, number> {
|
|
158
158
|
encode(value: number, _ctx: CodecCallContext$1): Promise<number>;
|
|
159
159
|
decode(wire: number, _ctx: CodecCallContext$1): Promise<number>;
|
|
@@ -168,7 +168,7 @@ declare class SqlIntDescriptor extends CodecDescriptorImpl<void> {
|
|
|
168
168
|
factory(): (ctx: CodecInstanceContext) => SqlIntCodec;
|
|
169
169
|
}
|
|
170
170
|
declare const sqlIntDescriptor: SqlIntDescriptor;
|
|
171
|
-
declare const sqlIntColumn: () => _prisma_next_framework_components_codec0.ColumnSpec<SqlIntCodec, undefined>;
|
|
171
|
+
declare const sqlIntColumn: () => _$_prisma_next_framework_components_codec0.ColumnSpec<SqlIntCodec, undefined>;
|
|
172
172
|
declare class SqlFloatCodec extends CodecImpl<typeof SQL_FLOAT_CODEC_ID, readonly ['equality', 'order', 'numeric'], number, number> {
|
|
173
173
|
encode(value: number, _ctx: CodecCallContext$1): Promise<number>;
|
|
174
174
|
decode(wire: number, _ctx: CodecCallContext$1): Promise<number>;
|
|
@@ -183,7 +183,7 @@ declare class SqlFloatDescriptor extends CodecDescriptorImpl<void> {
|
|
|
183
183
|
factory(): (ctx: CodecInstanceContext) => SqlFloatCodec;
|
|
184
184
|
}
|
|
185
185
|
declare const sqlFloatDescriptor: SqlFloatDescriptor;
|
|
186
|
-
declare const sqlFloatColumn: () => _prisma_next_framework_components_codec0.ColumnSpec<SqlFloatCodec, undefined>;
|
|
186
|
+
declare const sqlFloatColumn: () => _$_prisma_next_framework_components_codec0.ColumnSpec<SqlFloatCodec, undefined>;
|
|
187
187
|
declare class SqlCharCodec extends CodecImpl<typeof SQL_CHAR_CODEC_ID, readonly ['equality', 'order', 'textual'], string, string> {
|
|
188
188
|
encode(value: string, _ctx: CodecCallContext$1): Promise<string>;
|
|
189
189
|
decode(wire: string, _ctx: CodecCallContext$1): Promise<string>;
|
|
@@ -199,7 +199,7 @@ declare class SqlCharDescriptor extends CodecDescriptorImpl<LengthParams> {
|
|
|
199
199
|
factory(_params: LengthParams): (ctx: CodecInstanceContext) => SqlCharCodec;
|
|
200
200
|
}
|
|
201
201
|
declare const sqlCharDescriptor: SqlCharDescriptor;
|
|
202
|
-
declare const sqlCharColumn: (params?: LengthParams) => _prisma_next_framework_components_codec0.ColumnSpec<SqlCharCodec, LengthParams>;
|
|
202
|
+
declare const sqlCharColumn: (params?: LengthParams) => _$_prisma_next_framework_components_codec0.ColumnSpec<SqlCharCodec, LengthParams>;
|
|
203
203
|
declare class SqlVarcharCodec extends CodecImpl<typeof SQL_VARCHAR_CODEC_ID, readonly ['equality', 'order', 'textual'], string, string> {
|
|
204
204
|
encode(value: string, _ctx: CodecCallContext$1): Promise<string>;
|
|
205
205
|
decode(wire: string, _ctx: CodecCallContext$1): Promise<string>;
|
|
@@ -215,7 +215,7 @@ declare class SqlVarcharDescriptor extends CodecDescriptorImpl<LengthParams> {
|
|
|
215
215
|
factory(_params: LengthParams): (ctx: CodecInstanceContext) => SqlVarcharCodec;
|
|
216
216
|
}
|
|
217
217
|
declare const sqlVarcharDescriptor: SqlVarcharDescriptor;
|
|
218
|
-
declare const sqlVarcharColumn: (params?: LengthParams) => _prisma_next_framework_components_codec0.ColumnSpec<SqlVarcharCodec, LengthParams>;
|
|
218
|
+
declare const sqlVarcharColumn: (params?: LengthParams) => _$_prisma_next_framework_components_codec0.ColumnSpec<SqlVarcharCodec, LengthParams>;
|
|
219
219
|
declare class SqlTimestampCodec extends CodecImpl<typeof SQL_TIMESTAMP_CODEC_ID, readonly ['equality', 'order'], Date, Date> {
|
|
220
220
|
encode(value: Date, _ctx: CodecCallContext$1): Promise<Date>;
|
|
221
221
|
decode(wire: Date, _ctx: CodecCallContext$1): Promise<Date>;
|
|
@@ -231,7 +231,7 @@ declare class SqlTimestampDescriptor extends CodecDescriptorImpl<PrecisionParams
|
|
|
231
231
|
factory(_params: PrecisionParams): (ctx: CodecInstanceContext) => SqlTimestampCodec;
|
|
232
232
|
}
|
|
233
233
|
declare const sqlTimestampDescriptor: SqlTimestampDescriptor;
|
|
234
|
-
declare const sqlTimestampColumn: (params?: PrecisionParams) => _prisma_next_framework_components_codec0.ColumnSpec<SqlTimestampCodec, PrecisionParams>;
|
|
234
|
+
declare const sqlTimestampColumn: (params?: PrecisionParams) => _$_prisma_next_framework_components_codec0.ColumnSpec<SqlTimestampCodec, PrecisionParams>;
|
|
235
235
|
//#endregion
|
|
236
236
|
//#region src/ast/util.d.ts
|
|
237
237
|
declare function compact<T extends Record<string, unknown>>(o: T): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.mts","names":[],"sources":["../../src/ast/adapter-types.ts","../../src/ast/driver-types.ts","../../src/ast/sql-codec-helpers.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts","../../src/ast/validate-param-refs.ts"],"
|
|
1
|
+
{"version":3,"file":"ast.d.mts","names":[],"sources":["../../src/ast/adapter-types.ts","../../src/ast/driver-types.ts","../../src/ast/sql-codec-helpers.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts","../../src/ast/validate-param-refs.ts"],"mappings":"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"}
|
package/dist/exports/ast.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { A as UpdateAst, C as OrExpr, D as SelectAst, E as ProjectionItem, M as isWhereExpr, N as queryAstKinds, O as SubqueryExpr, P as whereExprKinds, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as isQueryAst, k as TableSource, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "../types-
|
|
1
|
+
import { A as UpdateAst, C as OrExpr, D as SelectAst, E as ProjectionItem, M as isWhereExpr, N as queryAstKinds, O as SubqueryExpr, P as whereExprKinds, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as isQueryAst, k as TableSource, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "../types-vA5134SY.mjs";
|
|
2
2
|
import { CodecDescriptorImpl, CodecImpl, column, voidParamsSchema } from "@prisma-next/framework-components/codec";
|
|
3
3
|
import { type } from "arktype";
|
|
4
4
|
import { runtimeError } from "@prisma-next/framework-components/runtime";
|
|
5
|
-
|
|
6
5
|
//#region src/ast/sql-codec-helpers.ts
|
|
7
6
|
const SQL_CHAR_CODEC_ID = "sql/char@1";
|
|
8
7
|
const SQL_VARCHAR_CODEC_ID = "sql/varchar@1";
|
|
@@ -47,7 +46,6 @@ const sqlTimestampRenderOutputType = (typeParams) => {
|
|
|
47
46
|
if (typeof precision !== "number" || !Number.isFinite(precision) || !Number.isInteger(precision)) throw new Error(`renderOutputType: expected integer "precision" in typeParams for Timestamp, got ${String(precision)}`);
|
|
48
47
|
return `Timestamp<${precision}>`;
|
|
49
48
|
};
|
|
50
|
-
|
|
51
49
|
//#endregion
|
|
52
50
|
//#region src/ast/sql-codecs.ts
|
|
53
51
|
const lengthParamsSchema = type({ "length?": "number.integer > 0" });
|
|
@@ -231,7 +229,6 @@ var SqlTimestampDescriptor = class extends CodecDescriptorImpl {
|
|
|
231
229
|
};
|
|
232
230
|
const sqlTimestampDescriptor = new SqlTimestampDescriptor();
|
|
233
231
|
const sqlTimestampColumn = (params = {}) => column(sqlTimestampDescriptor.factory(params), sqlTimestampDescriptor.codecId, params, "timestamp");
|
|
234
|
-
|
|
235
232
|
//#endregion
|
|
236
233
|
//#region src/ast/util.ts
|
|
237
234
|
function compact(o) {
|
|
@@ -263,7 +260,6 @@ function collectOrderedParamRefs(ast) {
|
|
|
263
260
|
}
|
|
264
261
|
return Object.freeze(ordered);
|
|
265
262
|
}
|
|
266
|
-
|
|
267
263
|
//#endregion
|
|
268
264
|
//#region src/ast/validate-param-refs.ts
|
|
269
265
|
/**
|
|
@@ -293,7 +289,7 @@ function diagnoseRef(ref, registry) {
|
|
|
293
289
|
paramName: ref.name
|
|
294
290
|
});
|
|
295
291
|
}
|
|
296
|
-
|
|
297
292
|
//#endregion
|
|
298
293
|
export { AggregateExpr, AndExpr, BinaryExpr, ColumnRef, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonObjectExpr, ListExpression, LiteralExpr, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, ProjectionItem, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UpdateAst, collectOrderedParamRefs, compact, isQueryAst, isWhereExpr, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, validateParamRefRefs, whereExprKinds };
|
|
294
|
+
|
|
299
295
|
//# sourceMappingURL=ast.mjs.map
|
package/dist/exports/ast.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.mjs","names":["arktype","out: Record<string, unknown>","ordered: ParamRef[]"],"sources":["../../src/ast/sql-codec-helpers.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts","../../src/ast/validate-param-refs.ts"],"sourcesContent":["/**\n * Shared encode/decode/render constants and codec id literals for the six SQL base codecs (`sql/char@1`, `sql/varchar@1`, `sql/int@1`, `sql/float@1`, `sql/text@1`, `sql/timestamp@1`).\n *\n * The codec implementations live in `sql-codecs.ts` (TML-2357). This module retains only the conversion helpers + emit-path renderers the codec methods compose with — keeping a single source of truth for non-trivial conversions while the codec methods provide the framework-required `Promise<…>` boundary.\n */\n\nimport type { JsonValue } from '@prisma-next/contract/types';\n\nexport const SQL_CHAR_CODEC_ID = 'sql/char@1' as const;\nexport const SQL_VARCHAR_CODEC_ID = 'sql/varchar@1' as const;\nexport const SQL_INT_CODEC_ID = 'sql/int@1' as const;\nexport const SQL_FLOAT_CODEC_ID = 'sql/float@1' as const;\nexport const SQL_TEXT_CODEC_ID = 'sql/text@1' as const;\nexport const SQL_TIMESTAMP_CODEC_ID = 'sql/timestamp@1' as const;\n\nexport const sqlCharEncode = (value: string): string => value;\nexport const sqlCharDecode = (wire: string): string => wire.trimEnd();\nexport const sqlCharRenderOutputType = (typeParams: { readonly length?: number }) => {\n const length = typeParams.length;\n if (length === undefined) return undefined;\n if (typeof length !== 'number' || !Number.isFinite(length) || !Number.isInteger(length)) {\n throw new Error(\n `renderOutputType: expected integer \"length\" in typeParams for Char, got ${String(length)}`,\n );\n }\n return `Char<${length}>`;\n};\n\nexport const sqlVarcharEncode = (value: string): string => value;\nexport const sqlVarcharDecode = (wire: string): string => wire;\nexport const sqlVarcharRenderOutputType = (typeParams: { readonly length?: number }) => {\n const length = typeParams.length;\n if (length === undefined) return undefined;\n if (typeof length !== 'number' || !Number.isFinite(length) || !Number.isInteger(length)) {\n throw new Error(\n `renderOutputType: expected integer \"length\" in typeParams for Varchar, got ${String(length)}`,\n );\n }\n return `Varchar<${length}>`;\n};\n\nexport const sqlIntEncode = (value: number): number => value;\nexport const sqlIntDecode = (wire: number): number => wire;\n\nexport const sqlFloatEncode = (value: number): number => value;\nexport const sqlFloatDecode = (wire: number): number => wire;\n\nexport const sqlTextEncode = (value: string): string => value;\nexport const sqlTextDecode = (wire: string): string => wire;\n\nexport const sqlTimestampEncode = (value: Date): Date => value;\nexport const sqlTimestampDecode = (wire: Date): Date => wire;\nexport const sqlTimestampEncodeJson = (value: Date): JsonValue => value.toISOString();\nexport const sqlTimestampDecodeJson = (json: JsonValue): Date => {\n if (typeof json !== 'string') {\n throw new Error(`Expected ISO date string for sql/timestamp@1, got ${typeof json}`);\n }\n const date = new Date(json);\n if (Number.isNaN(date.getTime())) {\n throw new Error(`Invalid ISO date string for sql/timestamp@1: ${json}`);\n }\n return date;\n};\nexport const sqlTimestampRenderOutputType = (typeParams: { readonly precision?: number }) => {\n const precision = typeParams.precision;\n if (precision === undefined) {\n return 'Timestamp';\n }\n if (\n typeof precision !== 'number' ||\n !Number.isFinite(precision) ||\n !Number.isInteger(precision)\n ) {\n throw new Error(\n `renderOutputType: expected integer \"precision\" in typeParams for Timestamp, got ${String(precision)}`,\n );\n }\n return `Timestamp<${precision}>`;\n};\n","/**\n * The six SQL base codecs (TML-2357).\n *\n * Each codec ships as three artifacts:\n *\n * 1. A `SqlXCodec` class extending {@link CodecImpl} that wraps the module-level encode/decode constants exported from `sql-codec-helpers.ts` (the single source of truth for runtime behaviour). 2. A `SqlXDescriptor` class extending {@link CodecDescriptorImpl} declaring the codec id, traits, target types, params schema, and (where applicable) the emit-path `renderOutputType`. 3. A per-codec column helper (`sqlXColumn`)\n * that calls `descriptor.factory(...)` directly and packages the result into a {@link ColumnSpec} via the framework {@link column} packager. The helper is tied to its descriptor with `satisfies ColumnHelperFor`.\n *\n * After TML-2357 this file is the canonical source of SQL base codec metadata and runtime behaviour — the legacy `mkCodec` / `defineCodec` carriers retired with the deletion sweep.\n */\n\nimport type { JsonValue } from '@prisma-next/contract/types';\nimport {\n type CodecCallContext,\n CodecDescriptorImpl,\n CodecImpl,\n type CodecInstanceContext,\n type ColumnHelperFor,\n type ColumnHelperForStrict,\n column,\n voidParamsSchema,\n} from '@prisma-next/framework-components/codec';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type as arktype } from 'arktype';\nimport {\n SQL_CHAR_CODEC_ID,\n SQL_FLOAT_CODEC_ID,\n SQL_INT_CODEC_ID,\n SQL_TEXT_CODEC_ID,\n SQL_TIMESTAMP_CODEC_ID,\n SQL_VARCHAR_CODEC_ID,\n sqlCharDecode,\n sqlCharEncode,\n sqlCharRenderOutputType,\n sqlFloatDecode,\n sqlFloatEncode,\n sqlIntDecode,\n sqlIntEncode,\n sqlTextDecode,\n sqlTextEncode,\n sqlTimestampDecode,\n sqlTimestampDecodeJson,\n sqlTimestampEncode,\n sqlTimestampEncodeJson,\n sqlTimestampRenderOutputType,\n sqlVarcharDecode,\n sqlVarcharEncode,\n sqlVarcharRenderOutputType,\n} from './sql-codec-helpers';\n\ntype LengthParams = { readonly length?: number };\ntype PrecisionParams = { readonly precision?: number };\n\nconst lengthParamsSchema = arktype({\n 'length?': 'number.integer > 0',\n}) satisfies StandardSchemaV1<LengthParams>;\n\nconst precisionParamsSchema = arktype({\n 'precision?': 'number.integer >= 0 & number.integer <= 6',\n}) satisfies StandardSchemaV1<PrecisionParams>;\n\nexport class SqlTextCodec extends CodecImpl<\n typeof SQL_TEXT_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n> {\n async encode(value: string, _ctx: CodecCallContext): Promise<string> {\n return sqlTextEncode(value);\n }\n async decode(wire: string, _ctx: CodecCallContext): Promise<string> {\n return sqlTextDecode(wire);\n }\n encodeJson(value: string): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): string {\n return json as string;\n }\n}\n\nexport class SqlTextDescriptor extends CodecDescriptorImpl<void> {\n override readonly codecId = SQL_TEXT_CODEC_ID;\n override readonly traits = ['equality', 'order', 'textual'] as const;\n override readonly targetTypes = ['text'] as const;\n override readonly paramsSchema: StandardSchemaV1<void> = voidParamsSchema;\n override factory(): (ctx: CodecInstanceContext) => SqlTextCodec {\n return () => new SqlTextCodec(this);\n }\n}\n\nexport const sqlTextDescriptor = new SqlTextDescriptor();\n\nexport const sqlTextColumn = () =>\n column(sqlTextDescriptor.factory(), sqlTextDescriptor.codecId, undefined, 'text');\n\nsqlTextColumn satisfies ColumnHelperFor<SqlTextDescriptor>;\nsqlTextColumn satisfies ColumnHelperForStrict<SqlTextDescriptor>;\n\nexport class SqlIntCodec extends CodecImpl<\n typeof SQL_INT_CODEC_ID,\n readonly ['equality', 'order', 'numeric'],\n number,\n number\n> {\n async encode(value: number, _ctx: CodecCallContext): Promise<number> {\n return sqlIntEncode(value);\n }\n async decode(wire: number, _ctx: CodecCallContext): Promise<number> {\n return sqlIntDecode(wire);\n }\n encodeJson(value: number): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): number {\n return json as number;\n }\n}\n\nexport class SqlIntDescriptor extends CodecDescriptorImpl<void> {\n override readonly codecId = SQL_INT_CODEC_ID;\n override readonly traits = ['equality', 'order', 'numeric'] as const;\n override readonly targetTypes = ['int'] as const;\n override readonly paramsSchema: StandardSchemaV1<void> = voidParamsSchema;\n override factory(): (ctx: CodecInstanceContext) => SqlIntCodec {\n return () => new SqlIntCodec(this);\n }\n}\n\nexport const sqlIntDescriptor = new SqlIntDescriptor();\n\nexport const sqlIntColumn = () =>\n column(sqlIntDescriptor.factory(), sqlIntDescriptor.codecId, undefined, 'int');\n\nsqlIntColumn satisfies ColumnHelperFor<SqlIntDescriptor>;\nsqlIntColumn satisfies ColumnHelperForStrict<SqlIntDescriptor>;\n\nexport class SqlFloatCodec extends CodecImpl<\n typeof SQL_FLOAT_CODEC_ID,\n readonly ['equality', 'order', 'numeric'],\n number,\n number\n> {\n async encode(value: number, _ctx: CodecCallContext): Promise<number> {\n return sqlFloatEncode(value);\n }\n async decode(wire: number, _ctx: CodecCallContext): Promise<number> {\n return sqlFloatDecode(wire);\n }\n encodeJson(value: number): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): number {\n return json as number;\n }\n}\n\nexport class SqlFloatDescriptor extends CodecDescriptorImpl<void> {\n override readonly codecId = SQL_FLOAT_CODEC_ID;\n override readonly traits = ['equality', 'order', 'numeric'] as const;\n override readonly targetTypes = ['float'] as const;\n override readonly paramsSchema: StandardSchemaV1<void> = voidParamsSchema;\n override factory(): (ctx: CodecInstanceContext) => SqlFloatCodec {\n return () => new SqlFloatCodec(this);\n }\n}\n\nexport const sqlFloatDescriptor = new SqlFloatDescriptor();\n\nexport const sqlFloatColumn = () =>\n column(sqlFloatDescriptor.factory(), sqlFloatDescriptor.codecId, undefined, 'float');\n\nsqlFloatColumn satisfies ColumnHelperFor<SqlFloatDescriptor>;\nsqlFloatColumn satisfies ColumnHelperForStrict<SqlFloatDescriptor>;\n\nexport class SqlCharCodec extends CodecImpl<\n typeof SQL_CHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n> {\n async encode(value: string, _ctx: CodecCallContext): Promise<string> {\n return sqlCharEncode(value);\n }\n async decode(wire: string, _ctx: CodecCallContext): Promise<string> {\n return sqlCharDecode(wire);\n }\n encodeJson(value: string): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): string {\n return json as string;\n }\n}\n\nexport class SqlCharDescriptor extends CodecDescriptorImpl<LengthParams> {\n override readonly codecId = SQL_CHAR_CODEC_ID;\n override readonly traits = ['equality', 'order', 'textual'] as const;\n override readonly targetTypes = ['char'] as const;\n override readonly paramsSchema: StandardSchemaV1<LengthParams> = lengthParamsSchema;\n override renderOutputType(params: LengthParams): string | undefined {\n return sqlCharRenderOutputType(params);\n }\n override factory(_params: LengthParams): (ctx: CodecInstanceContext) => SqlCharCodec {\n return () => new SqlCharCodec(this);\n }\n}\n\nexport const sqlCharDescriptor = new SqlCharDescriptor();\n\nexport const sqlCharColumn = (params: LengthParams = {}) =>\n column(sqlCharDescriptor.factory(params), sqlCharDescriptor.codecId, params, 'char');\n\nsqlCharColumn satisfies ColumnHelperFor<SqlCharDescriptor>;\nsqlCharColumn satisfies ColumnHelperForStrict<SqlCharDescriptor>;\n\nexport class SqlVarcharCodec extends CodecImpl<\n typeof SQL_VARCHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n> {\n async encode(value: string, _ctx: CodecCallContext): Promise<string> {\n return sqlVarcharEncode(value);\n }\n async decode(wire: string, _ctx: CodecCallContext): Promise<string> {\n return sqlVarcharDecode(wire);\n }\n encodeJson(value: string): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): string {\n return json as string;\n }\n}\n\nexport class SqlVarcharDescriptor extends CodecDescriptorImpl<LengthParams> {\n override readonly codecId = SQL_VARCHAR_CODEC_ID;\n override readonly traits = ['equality', 'order', 'textual'] as const;\n override readonly targetTypes = ['varchar'] as const;\n override readonly paramsSchema: StandardSchemaV1<LengthParams> = lengthParamsSchema;\n override renderOutputType(params: LengthParams): string | undefined {\n return sqlVarcharRenderOutputType(params);\n }\n override factory(_params: LengthParams): (ctx: CodecInstanceContext) => SqlVarcharCodec {\n return () => new SqlVarcharCodec(this);\n }\n}\n\nexport const sqlVarcharDescriptor = new SqlVarcharDescriptor();\n\nexport const sqlVarcharColumn = (params: LengthParams = {}) =>\n column(sqlVarcharDescriptor.factory(params), sqlVarcharDescriptor.codecId, params, 'varchar');\n\nsqlVarcharColumn satisfies ColumnHelperFor<SqlVarcharDescriptor>;\nsqlVarcharColumn satisfies ColumnHelperForStrict<SqlVarcharDescriptor>;\n\nexport class SqlTimestampCodec extends CodecImpl<\n typeof SQL_TIMESTAMP_CODEC_ID,\n readonly ['equality', 'order'],\n Date,\n Date\n> {\n async encode(value: Date, _ctx: CodecCallContext): Promise<Date> {\n return sqlTimestampEncode(value);\n }\n async decode(wire: Date, _ctx: CodecCallContext): Promise<Date> {\n return sqlTimestampDecode(wire);\n }\n encodeJson(value: Date): JsonValue {\n return sqlTimestampEncodeJson(value);\n }\n decodeJson(json: JsonValue): Date {\n return sqlTimestampDecodeJson(json);\n }\n}\n\nexport class SqlTimestampDescriptor extends CodecDescriptorImpl<PrecisionParams> {\n override readonly codecId = SQL_TIMESTAMP_CODEC_ID;\n override readonly traits = ['equality', 'order'] as const;\n override readonly targetTypes = ['timestamp'] as const;\n override readonly paramsSchema: StandardSchemaV1<PrecisionParams> = precisionParamsSchema;\n override renderOutputType(params: PrecisionParams): string | undefined {\n return sqlTimestampRenderOutputType(params);\n }\n override factory(_params: PrecisionParams): (ctx: CodecInstanceContext) => SqlTimestampCodec {\n return () => new SqlTimestampCodec(this);\n }\n}\n\nexport const sqlTimestampDescriptor = new SqlTimestampDescriptor();\n\nexport const sqlTimestampColumn = (params: PrecisionParams = {}) =>\n column(\n sqlTimestampDescriptor.factory(params),\n sqlTimestampDescriptor.codecId,\n params,\n 'timestamp',\n );\n\nsqlTimestampColumn satisfies ColumnHelperFor<SqlTimestampDescriptor>;\nsqlTimestampColumn satisfies ColumnHelperForStrict<SqlTimestampDescriptor>;\n","import type { AnyQueryAst, ParamRef } from './types';\n\nexport 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\n/**\n * Walks an AST's parameter references in first-encounter order and dedupes\n * by ParamRef identity. The single canonical helper used by every consumer\n * that aligns `plan.params` with metadata-by-index — the SQL builder lane,\n * the SQL ORM client, the SQL runtime encoder, and the Postgres renderer's\n * `$N` index map — so the four walks cannot drift in dedupe semantics.\n *\n * SQLite's `?`-placeholder renderer intentionally does NOT use this helper\n * because it needs one params entry per occurrence in the SQL.\n */\nexport function collectOrderedParamRefs(ast: AnyQueryAst): ReadonlyArray<ParamRef> {\n const seen = new Set<ParamRef>();\n const ordered: ParamRef[] = [];\n for (const ref of ast.collectParamRefs()) {\n if (seen.has(ref)) continue;\n seen.add(ref);\n ordered.push(ref);\n }\n return Object.freeze(ordered);\n}\n","/**\n * Builder-pipeline validator pass: every {@link ParamRef} whose `codecId` resolves to a *parameterized* descriptor must carry `refs: { table, column }` so encode-side dispatch can call `contractCodecs.forColumn(table, column)`. Refs-less parameterized `ParamRef`s are a hard error — the codec-id-keyed `forCodecId` fallback cannot disambiguate per-instance codecs (e.g. `vector(1024)` vs. `vector(1536)`), so the dispatch\n * path must reject them at validation time rather than silently bind to the wrong instance.\n *\n * Non-parameterized codec ids (the `voidParamsSchema` case) are always dispatch-safe via codec id alone, so refs-less ParamRefs for those ids are accepted unchanged.\n *\n * The pass runs post-build / pre-execute — the natural location is the SQL runtime's `lower()` step, between any `beforeCompile` rewrites and `encodeParams`. See AC-5 in the codec-registry-unification spec.\n */\n\nimport { runtimeError } from '@prisma-next/framework-components/runtime';\nimport type { CodecDescriptorRegistry } from '../query-lane-context';\nimport type { AnyQueryAst, ParamRef } from './types';\nimport { collectOrderedParamRefs } from './util';\n\n/**\n * Validate that every parameterized-codec `ParamRef` in `plan` carries `refs`. Throws `RUNTIME.PARAM_REF_REFS_REQUIRED` (a runtime envelope) naming the codec id and the binding label when the invariant is violated. Returns the plan unchanged on success — callers that prefer a side-effecting assertion can ignore the return value.\n *\n * The `registry` is consulted via `descriptorFor(codecId).isParameterized` — `true` whenever the descriptor's `paramsSchema` is not the singleton `voidParamsSchema`.\n */\nexport function validateParamRefRefs(plan: AnyQueryAst, registry: CodecDescriptorRegistry): void {\n for (const ref of collectOrderedParamRefs(plan)) {\n diagnoseRef(ref, registry);\n }\n}\n\nfunction diagnoseRef(ref: ParamRef, registry: CodecDescriptorRegistry): void {\n if (!ref.codecId) return;\n const descriptor = registry.descriptorFor(ref.codecId);\n if (descriptor === undefined) return;\n if (!descriptor.isParameterized) return;\n if (ref.refs) return;\n\n const label = ref.name ?? '<anonymous>';\n throw runtimeError(\n 'RUNTIME.PARAM_REF_REFS_REQUIRED',\n `ParamRef '${label}' for parameterized codec '${ref.codecId}' is missing column refs; column-aware dispatch requires { table, column } at the binding site.`,\n { codecId: ref.codecId, paramName: ref.name },\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ast.mjs","names":["arktype"],"sources":["../../src/ast/sql-codec-helpers.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts","../../src/ast/validate-param-refs.ts"],"sourcesContent":["/**\n * Shared encode/decode/render constants and codec id literals for the six SQL base codecs (`sql/char@1`, `sql/varchar@1`, `sql/int@1`, `sql/float@1`, `sql/text@1`, `sql/timestamp@1`).\n *\n * The codec implementations live in `sql-codecs.ts` (TML-2357). This module retains only the conversion helpers + emit-path renderers the codec methods compose with — keeping a single source of truth for non-trivial conversions while the codec methods provide the framework-required `Promise<…>` boundary.\n */\n\nimport type { JsonValue } from '@prisma-next/contract/types';\n\nexport const SQL_CHAR_CODEC_ID = 'sql/char@1' as const;\nexport const SQL_VARCHAR_CODEC_ID = 'sql/varchar@1' as const;\nexport const SQL_INT_CODEC_ID = 'sql/int@1' as const;\nexport const SQL_FLOAT_CODEC_ID = 'sql/float@1' as const;\nexport const SQL_TEXT_CODEC_ID = 'sql/text@1' as const;\nexport const SQL_TIMESTAMP_CODEC_ID = 'sql/timestamp@1' as const;\n\nexport const sqlCharEncode = (value: string): string => value;\nexport const sqlCharDecode = (wire: string): string => wire.trimEnd();\nexport const sqlCharRenderOutputType = (typeParams: { readonly length?: number }) => {\n const length = typeParams.length;\n if (length === undefined) return undefined;\n if (typeof length !== 'number' || !Number.isFinite(length) || !Number.isInteger(length)) {\n throw new Error(\n `renderOutputType: expected integer \"length\" in typeParams for Char, got ${String(length)}`,\n );\n }\n return `Char<${length}>`;\n};\n\nexport const sqlVarcharEncode = (value: string): string => value;\nexport const sqlVarcharDecode = (wire: string): string => wire;\nexport const sqlVarcharRenderOutputType = (typeParams: { readonly length?: number }) => {\n const length = typeParams.length;\n if (length === undefined) return undefined;\n if (typeof length !== 'number' || !Number.isFinite(length) || !Number.isInteger(length)) {\n throw new Error(\n `renderOutputType: expected integer \"length\" in typeParams for Varchar, got ${String(length)}`,\n );\n }\n return `Varchar<${length}>`;\n};\n\nexport const sqlIntEncode = (value: number): number => value;\nexport const sqlIntDecode = (wire: number): number => wire;\n\nexport const sqlFloatEncode = (value: number): number => value;\nexport const sqlFloatDecode = (wire: number): number => wire;\n\nexport const sqlTextEncode = (value: string): string => value;\nexport const sqlTextDecode = (wire: string): string => wire;\n\nexport const sqlTimestampEncode = (value: Date): Date => value;\nexport const sqlTimestampDecode = (wire: Date): Date => wire;\nexport const sqlTimestampEncodeJson = (value: Date): JsonValue => value.toISOString();\nexport const sqlTimestampDecodeJson = (json: JsonValue): Date => {\n if (typeof json !== 'string') {\n throw new Error(`Expected ISO date string for sql/timestamp@1, got ${typeof json}`);\n }\n const date = new Date(json);\n if (Number.isNaN(date.getTime())) {\n throw new Error(`Invalid ISO date string for sql/timestamp@1: ${json}`);\n }\n return date;\n};\nexport const sqlTimestampRenderOutputType = (typeParams: { readonly precision?: number }) => {\n const precision = typeParams.precision;\n if (precision === undefined) {\n return 'Timestamp';\n }\n if (\n typeof precision !== 'number' ||\n !Number.isFinite(precision) ||\n !Number.isInteger(precision)\n ) {\n throw new Error(\n `renderOutputType: expected integer \"precision\" in typeParams for Timestamp, got ${String(precision)}`,\n );\n }\n return `Timestamp<${precision}>`;\n};\n","/**\n * The six SQL base codecs (TML-2357).\n *\n * Each codec ships as three artifacts:\n *\n * 1. A `SqlXCodec` class extending {@link CodecImpl} that wraps the module-level encode/decode constants exported from `sql-codec-helpers.ts` (the single source of truth for runtime behaviour). 2. A `SqlXDescriptor` class extending {@link CodecDescriptorImpl} declaring the codec id, traits, target types, params schema, and (where applicable) the emit-path `renderOutputType`. 3. A per-codec column helper (`sqlXColumn`)\n * that calls `descriptor.factory(...)` directly and packages the result into a {@link ColumnSpec} via the framework {@link column} packager. The helper is tied to its descriptor with `satisfies ColumnHelperFor`.\n *\n * After TML-2357 this file is the canonical source of SQL base codec metadata and runtime behaviour — the legacy `mkCodec` / `defineCodec` carriers retired with the deletion sweep.\n */\n\nimport type { JsonValue } from '@prisma-next/contract/types';\nimport {\n type CodecCallContext,\n CodecDescriptorImpl,\n CodecImpl,\n type CodecInstanceContext,\n type ColumnHelperFor,\n type ColumnHelperForStrict,\n column,\n voidParamsSchema,\n} from '@prisma-next/framework-components/codec';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { type as arktype } from 'arktype';\nimport {\n SQL_CHAR_CODEC_ID,\n SQL_FLOAT_CODEC_ID,\n SQL_INT_CODEC_ID,\n SQL_TEXT_CODEC_ID,\n SQL_TIMESTAMP_CODEC_ID,\n SQL_VARCHAR_CODEC_ID,\n sqlCharDecode,\n sqlCharEncode,\n sqlCharRenderOutputType,\n sqlFloatDecode,\n sqlFloatEncode,\n sqlIntDecode,\n sqlIntEncode,\n sqlTextDecode,\n sqlTextEncode,\n sqlTimestampDecode,\n sqlTimestampDecodeJson,\n sqlTimestampEncode,\n sqlTimestampEncodeJson,\n sqlTimestampRenderOutputType,\n sqlVarcharDecode,\n sqlVarcharEncode,\n sqlVarcharRenderOutputType,\n} from './sql-codec-helpers';\n\ntype LengthParams = { readonly length?: number };\ntype PrecisionParams = { readonly precision?: number };\n\nconst lengthParamsSchema = arktype({\n 'length?': 'number.integer > 0',\n}) satisfies StandardSchemaV1<LengthParams>;\n\nconst precisionParamsSchema = arktype({\n 'precision?': 'number.integer >= 0 & number.integer <= 6',\n}) satisfies StandardSchemaV1<PrecisionParams>;\n\nexport class SqlTextCodec extends CodecImpl<\n typeof SQL_TEXT_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n> {\n async encode(value: string, _ctx: CodecCallContext): Promise<string> {\n return sqlTextEncode(value);\n }\n async decode(wire: string, _ctx: CodecCallContext): Promise<string> {\n return sqlTextDecode(wire);\n }\n encodeJson(value: string): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): string {\n return json as string;\n }\n}\n\nexport class SqlTextDescriptor extends CodecDescriptorImpl<void> {\n override readonly codecId = SQL_TEXT_CODEC_ID;\n override readonly traits = ['equality', 'order', 'textual'] as const;\n override readonly targetTypes = ['text'] as const;\n override readonly paramsSchema: StandardSchemaV1<void> = voidParamsSchema;\n override factory(): (ctx: CodecInstanceContext) => SqlTextCodec {\n return () => new SqlTextCodec(this);\n }\n}\n\nexport const sqlTextDescriptor = new SqlTextDescriptor();\n\nexport const sqlTextColumn = () =>\n column(sqlTextDescriptor.factory(), sqlTextDescriptor.codecId, undefined, 'text');\n\nsqlTextColumn satisfies ColumnHelperFor<SqlTextDescriptor>;\nsqlTextColumn satisfies ColumnHelperForStrict<SqlTextDescriptor>;\n\nexport class SqlIntCodec extends CodecImpl<\n typeof SQL_INT_CODEC_ID,\n readonly ['equality', 'order', 'numeric'],\n number,\n number\n> {\n async encode(value: number, _ctx: CodecCallContext): Promise<number> {\n return sqlIntEncode(value);\n }\n async decode(wire: number, _ctx: CodecCallContext): Promise<number> {\n return sqlIntDecode(wire);\n }\n encodeJson(value: number): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): number {\n return json as number;\n }\n}\n\nexport class SqlIntDescriptor extends CodecDescriptorImpl<void> {\n override readonly codecId = SQL_INT_CODEC_ID;\n override readonly traits = ['equality', 'order', 'numeric'] as const;\n override readonly targetTypes = ['int'] as const;\n override readonly paramsSchema: StandardSchemaV1<void> = voidParamsSchema;\n override factory(): (ctx: CodecInstanceContext) => SqlIntCodec {\n return () => new SqlIntCodec(this);\n }\n}\n\nexport const sqlIntDescriptor = new SqlIntDescriptor();\n\nexport const sqlIntColumn = () =>\n column(sqlIntDescriptor.factory(), sqlIntDescriptor.codecId, undefined, 'int');\n\nsqlIntColumn satisfies ColumnHelperFor<SqlIntDescriptor>;\nsqlIntColumn satisfies ColumnHelperForStrict<SqlIntDescriptor>;\n\nexport class SqlFloatCodec extends CodecImpl<\n typeof SQL_FLOAT_CODEC_ID,\n readonly ['equality', 'order', 'numeric'],\n number,\n number\n> {\n async encode(value: number, _ctx: CodecCallContext): Promise<number> {\n return sqlFloatEncode(value);\n }\n async decode(wire: number, _ctx: CodecCallContext): Promise<number> {\n return sqlFloatDecode(wire);\n }\n encodeJson(value: number): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): number {\n return json as number;\n }\n}\n\nexport class SqlFloatDescriptor extends CodecDescriptorImpl<void> {\n override readonly codecId = SQL_FLOAT_CODEC_ID;\n override readonly traits = ['equality', 'order', 'numeric'] as const;\n override readonly targetTypes = ['float'] as const;\n override readonly paramsSchema: StandardSchemaV1<void> = voidParamsSchema;\n override factory(): (ctx: CodecInstanceContext) => SqlFloatCodec {\n return () => new SqlFloatCodec(this);\n }\n}\n\nexport const sqlFloatDescriptor = new SqlFloatDescriptor();\n\nexport const sqlFloatColumn = () =>\n column(sqlFloatDescriptor.factory(), sqlFloatDescriptor.codecId, undefined, 'float');\n\nsqlFloatColumn satisfies ColumnHelperFor<SqlFloatDescriptor>;\nsqlFloatColumn satisfies ColumnHelperForStrict<SqlFloatDescriptor>;\n\nexport class SqlCharCodec extends CodecImpl<\n typeof SQL_CHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n> {\n async encode(value: string, _ctx: CodecCallContext): Promise<string> {\n return sqlCharEncode(value);\n }\n async decode(wire: string, _ctx: CodecCallContext): Promise<string> {\n return sqlCharDecode(wire);\n }\n encodeJson(value: string): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): string {\n return json as string;\n }\n}\n\nexport class SqlCharDescriptor extends CodecDescriptorImpl<LengthParams> {\n override readonly codecId = SQL_CHAR_CODEC_ID;\n override readonly traits = ['equality', 'order', 'textual'] as const;\n override readonly targetTypes = ['char'] as const;\n override readonly paramsSchema: StandardSchemaV1<LengthParams> = lengthParamsSchema;\n override renderOutputType(params: LengthParams): string | undefined {\n return sqlCharRenderOutputType(params);\n }\n override factory(_params: LengthParams): (ctx: CodecInstanceContext) => SqlCharCodec {\n return () => new SqlCharCodec(this);\n }\n}\n\nexport const sqlCharDescriptor = new SqlCharDescriptor();\n\nexport const sqlCharColumn = (params: LengthParams = {}) =>\n column(sqlCharDescriptor.factory(params), sqlCharDescriptor.codecId, params, 'char');\n\nsqlCharColumn satisfies ColumnHelperFor<SqlCharDescriptor>;\nsqlCharColumn satisfies ColumnHelperForStrict<SqlCharDescriptor>;\n\nexport class SqlVarcharCodec extends CodecImpl<\n typeof SQL_VARCHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n> {\n async encode(value: string, _ctx: CodecCallContext): Promise<string> {\n return sqlVarcharEncode(value);\n }\n async decode(wire: string, _ctx: CodecCallContext): Promise<string> {\n return sqlVarcharDecode(wire);\n }\n encodeJson(value: string): JsonValue {\n return value;\n }\n decodeJson(json: JsonValue): string {\n return json as string;\n }\n}\n\nexport class SqlVarcharDescriptor extends CodecDescriptorImpl<LengthParams> {\n override readonly codecId = SQL_VARCHAR_CODEC_ID;\n override readonly traits = ['equality', 'order', 'textual'] as const;\n override readonly targetTypes = ['varchar'] as const;\n override readonly paramsSchema: StandardSchemaV1<LengthParams> = lengthParamsSchema;\n override renderOutputType(params: LengthParams): string | undefined {\n return sqlVarcharRenderOutputType(params);\n }\n override factory(_params: LengthParams): (ctx: CodecInstanceContext) => SqlVarcharCodec {\n return () => new SqlVarcharCodec(this);\n }\n}\n\nexport const sqlVarcharDescriptor = new SqlVarcharDescriptor();\n\nexport const sqlVarcharColumn = (params: LengthParams = {}) =>\n column(sqlVarcharDescriptor.factory(params), sqlVarcharDescriptor.codecId, params, 'varchar');\n\nsqlVarcharColumn satisfies ColumnHelperFor<SqlVarcharDescriptor>;\nsqlVarcharColumn satisfies ColumnHelperForStrict<SqlVarcharDescriptor>;\n\nexport class SqlTimestampCodec extends CodecImpl<\n typeof SQL_TIMESTAMP_CODEC_ID,\n readonly ['equality', 'order'],\n Date,\n Date\n> {\n async encode(value: Date, _ctx: CodecCallContext): Promise<Date> {\n return sqlTimestampEncode(value);\n }\n async decode(wire: Date, _ctx: CodecCallContext): Promise<Date> {\n return sqlTimestampDecode(wire);\n }\n encodeJson(value: Date): JsonValue {\n return sqlTimestampEncodeJson(value);\n }\n decodeJson(json: JsonValue): Date {\n return sqlTimestampDecodeJson(json);\n }\n}\n\nexport class SqlTimestampDescriptor extends CodecDescriptorImpl<PrecisionParams> {\n override readonly codecId = SQL_TIMESTAMP_CODEC_ID;\n override readonly traits = ['equality', 'order'] as const;\n override readonly targetTypes = ['timestamp'] as const;\n override readonly paramsSchema: StandardSchemaV1<PrecisionParams> = precisionParamsSchema;\n override renderOutputType(params: PrecisionParams): string | undefined {\n return sqlTimestampRenderOutputType(params);\n }\n override factory(_params: PrecisionParams): (ctx: CodecInstanceContext) => SqlTimestampCodec {\n return () => new SqlTimestampCodec(this);\n }\n}\n\nexport const sqlTimestampDescriptor = new SqlTimestampDescriptor();\n\nexport const sqlTimestampColumn = (params: PrecisionParams = {}) =>\n column(\n sqlTimestampDescriptor.factory(params),\n sqlTimestampDescriptor.codecId,\n params,\n 'timestamp',\n );\n\nsqlTimestampColumn satisfies ColumnHelperFor<SqlTimestampDescriptor>;\nsqlTimestampColumn satisfies ColumnHelperForStrict<SqlTimestampDescriptor>;\n","import type { AnyQueryAst, ParamRef } from './types';\n\nexport 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\n/**\n * Walks an AST's parameter references in first-encounter order and dedupes\n * by ParamRef identity. The single canonical helper used by every consumer\n * that aligns `plan.params` with metadata-by-index — the SQL builder lane,\n * the SQL ORM client, the SQL runtime encoder, and the Postgres renderer's\n * `$N` index map — so the four walks cannot drift in dedupe semantics.\n *\n * SQLite's `?`-placeholder renderer intentionally does NOT use this helper\n * because it needs one params entry per occurrence in the SQL.\n */\nexport function collectOrderedParamRefs(ast: AnyQueryAst): ReadonlyArray<ParamRef> {\n const seen = new Set<ParamRef>();\n const ordered: ParamRef[] = [];\n for (const ref of ast.collectParamRefs()) {\n if (seen.has(ref)) continue;\n seen.add(ref);\n ordered.push(ref);\n }\n return Object.freeze(ordered);\n}\n","/**\n * Builder-pipeline validator pass: every {@link ParamRef} whose `codecId` resolves to a *parameterized* descriptor must carry `refs: { table, column }` so encode-side dispatch can call `contractCodecs.forColumn(table, column)`. Refs-less parameterized `ParamRef`s are a hard error — the codec-id-keyed `forCodecId` fallback cannot disambiguate per-instance codecs (e.g. `vector(1024)` vs. `vector(1536)`), so the dispatch\n * path must reject them at validation time rather than silently bind to the wrong instance.\n *\n * Non-parameterized codec ids (the `voidParamsSchema` case) are always dispatch-safe via codec id alone, so refs-less ParamRefs for those ids are accepted unchanged.\n *\n * The pass runs post-build / pre-execute — the natural location is the SQL runtime's `lower()` step, between any `beforeCompile` rewrites and `encodeParams`. See AC-5 in the codec-registry-unification spec.\n */\n\nimport { runtimeError } from '@prisma-next/framework-components/runtime';\nimport type { CodecDescriptorRegistry } from '../query-lane-context';\nimport type { AnyQueryAst, ParamRef } from './types';\nimport { collectOrderedParamRefs } from './util';\n\n/**\n * Validate that every parameterized-codec `ParamRef` in `plan` carries `refs`. Throws `RUNTIME.PARAM_REF_REFS_REQUIRED` (a runtime envelope) naming the codec id and the binding label when the invariant is violated. Returns the plan unchanged on success — callers that prefer a side-effecting assertion can ignore the return value.\n *\n * The `registry` is consulted via `descriptorFor(codecId).isParameterized` — `true` whenever the descriptor's `paramsSchema` is not the singleton `voidParamsSchema`.\n */\nexport function validateParamRefRefs(plan: AnyQueryAst, registry: CodecDescriptorRegistry): void {\n for (const ref of collectOrderedParamRefs(plan)) {\n diagnoseRef(ref, registry);\n }\n}\n\nfunction diagnoseRef(ref: ParamRef, registry: CodecDescriptorRegistry): void {\n if (!ref.codecId) return;\n const descriptor = registry.descriptorFor(ref.codecId);\n if (descriptor === undefined) return;\n if (!descriptor.isParameterized) return;\n if (ref.refs) return;\n\n const label = ref.name ?? '<anonymous>';\n throw runtimeError(\n 'RUNTIME.PARAM_REF_REFS_REQUIRED',\n `ParamRef '${label}' for parameterized codec '${ref.codecId}' is missing column refs; column-aware dispatch requires { table, column } at the binding site.`,\n { codecId: ref.codecId, paramName: ref.name },\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { n as CodecDescriptorRegistry, s as AnyCodecDescriptor } from "../query-lane-context-
|
|
1
|
+
import { n as CodecDescriptorRegistry, s as AnyCodecDescriptor } from "../query-lane-context-DaimN0zf.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/codec-descriptor-registry.d.ts
|
|
4
|
-
|
|
5
4
|
/**
|
|
6
5
|
* Build a {@link CodecDescriptorRegistry} from a flat descriptor list.
|
|
7
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-descriptor-registry.d.mts","names":[],"sources":["../../src/codec-descriptor-registry.ts"],"
|
|
1
|
+
{"version":3,"file":"codec-descriptor-registry.d.mts","names":[],"sources":["../../src/codec-descriptor-registry.ts"],"mappings":";;;;AAcA;;;;;;;;;iBAAgB,4BAAA,CACd,cAAA,EAAgB,aAAA,CAAc,kBAAA,IAC7B,uBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-descriptor-registry.mjs","names":[],"sources":["../../src/codec-descriptor-registry.ts"],"sourcesContent":["import type { CodecDescriptor } from '@prisma-next/framework-components/codec';\nimport type { AnyCodecDescriptor } from './ast/codec-types';\nimport type { CodecDescriptorRegistry } from './query-lane-context';\n\n/**\n * Build a {@link CodecDescriptorRegistry} from a flat descriptor list.\n *\n * Used by:\n * - Each codec-shipping package's `core/registry.ts` to expose a package-scoped registry as the public consumer surface (replacing raw descriptor-array exports). See ADR 208.\n * - The runtime's `buildExecutionContext` to construct the contract-bound combined registry from every contributor's `codecs:` slot.\n *\n * The descriptor map is heterogeneous in `P` — each codec id has its own params shape. The public {@link CodecDescriptorRegistry} interface widens to `CodecDescriptor<unknown>` and consumers narrow per codec id at the call site (the descriptor's `paramsSchema` validates JSON-sourced params before the factory ever sees them, so the runtime narrow is safe). The cast at registration goes through `unknown` because\n * `CodecDescriptor<P>` is invariant in `P` (the `factory` and `renderOutputType` slots use `P` contravariantly).\n */\nexport function buildCodecDescriptorRegistry(\n allDescriptors: ReadonlyArray<AnyCodecDescriptor>,\n): CodecDescriptorRegistry {\n type AnyDescriptor = CodecDescriptor<unknown>;\n const byId = new Map<string, AnyDescriptor>();\n const byTargetType = new Map<string, Array<AnyDescriptor>>();\n\n for (const descriptor of allDescriptors) {\n if (byId.has(descriptor.codecId)) {\n throw new Error(\n `Duplicate codec descriptor id: '${descriptor.codecId}' — registered twice during registry construction. ` +\n 'Each codecId must be contributed by exactly one component (target / adapter / extension pack).',\n );\n }\n const widened = descriptor as unknown as AnyDescriptor;\n byId.set(descriptor.codecId, widened);\n for (const targetType of descriptor.targetTypes) {\n const list = byTargetType.get(targetType);\n if (list) {\n list.push(widened);\n } else {\n byTargetType.set(targetType, [widened]);\n }\n }\n }\n\n return {\n descriptorFor(codecId: string): AnyDescriptor | undefined {\n return byId.get(codecId);\n },\n *values(): IterableIterator<AnyDescriptor> {\n yield* byId.values();\n },\n byTargetType(targetType: string): readonly AnyDescriptor[] {\n return byTargetType.get(targetType) ?? Object.freeze([]);\n },\n };\n}\n"],"mappings":";;;;;;;;;;;AAcA,SAAgB,6BACd,gBACyB;CAEzB,MAAM,uBAAO,IAAI,KAA4B;CAC7C,MAAM,+BAAe,IAAI,KAAmC;
|
|
1
|
+
{"version":3,"file":"codec-descriptor-registry.mjs","names":[],"sources":["../../src/codec-descriptor-registry.ts"],"sourcesContent":["import type { CodecDescriptor } from '@prisma-next/framework-components/codec';\nimport type { AnyCodecDescriptor } from './ast/codec-types';\nimport type { CodecDescriptorRegistry } from './query-lane-context';\n\n/**\n * Build a {@link CodecDescriptorRegistry} from a flat descriptor list.\n *\n * Used by:\n * - Each codec-shipping package's `core/registry.ts` to expose a package-scoped registry as the public consumer surface (replacing raw descriptor-array exports). See ADR 208.\n * - The runtime's `buildExecutionContext` to construct the contract-bound combined registry from every contributor's `codecs:` slot.\n *\n * The descriptor map is heterogeneous in `P` — each codec id has its own params shape. The public {@link CodecDescriptorRegistry} interface widens to `CodecDescriptor<unknown>` and consumers narrow per codec id at the call site (the descriptor's `paramsSchema` validates JSON-sourced params before the factory ever sees them, so the runtime narrow is safe). The cast at registration goes through `unknown` because\n * `CodecDescriptor<P>` is invariant in `P` (the `factory` and `renderOutputType` slots use `P` contravariantly).\n */\nexport function buildCodecDescriptorRegistry(\n allDescriptors: ReadonlyArray<AnyCodecDescriptor>,\n): CodecDescriptorRegistry {\n type AnyDescriptor = CodecDescriptor<unknown>;\n const byId = new Map<string, AnyDescriptor>();\n const byTargetType = new Map<string, Array<AnyDescriptor>>();\n\n for (const descriptor of allDescriptors) {\n if (byId.has(descriptor.codecId)) {\n throw new Error(\n `Duplicate codec descriptor id: '${descriptor.codecId}' — registered twice during registry construction. ` +\n 'Each codecId must be contributed by exactly one component (target / adapter / extension pack).',\n );\n }\n const widened = descriptor as unknown as AnyDescriptor;\n byId.set(descriptor.codecId, widened);\n for (const targetType of descriptor.targetTypes) {\n const list = byTargetType.get(targetType);\n if (list) {\n list.push(widened);\n } else {\n byTargetType.set(targetType, [widened]);\n }\n }\n }\n\n return {\n descriptorFor(codecId: string): AnyDescriptor | undefined {\n return byId.get(codecId);\n },\n *values(): IterableIterator<AnyDescriptor> {\n yield* byId.values();\n },\n byTargetType(targetType: string): readonly AnyDescriptor[] {\n return byTargetType.get(targetType) ?? Object.freeze([]);\n },\n };\n}\n"],"mappings":";;;;;;;;;;;AAcA,SAAgB,6BACd,gBACyB;CAEzB,MAAM,uBAAO,IAAI,KAA4B;CAC7C,MAAM,+BAAe,IAAI,KAAmC;CAE5D,KAAK,MAAM,cAAc,gBAAgB;EACvC,IAAI,KAAK,IAAI,WAAW,QAAQ,EAC9B,MAAM,IAAI,MACR,mCAAmC,WAAW,QAAQ,mJAEvD;EAEH,MAAM,UAAU;EAChB,KAAK,IAAI,WAAW,SAAS,QAAQ;EACrC,KAAK,MAAM,cAAc,WAAW,aAAa;GAC/C,MAAM,OAAO,aAAa,IAAI,WAAW;GACzC,IAAI,MACF,KAAK,KAAK,QAAQ;QAElB,aAAa,IAAI,YAAY,CAAC,QAAQ,CAAC;;;CAK7C,OAAO;EACL,cAAc,SAA4C;GACxD,OAAO,KAAK,IAAI,QAAQ;;EAE1B,CAAC,SAA0C;GACzC,OAAO,KAAK,QAAQ;;EAEtB,aAAa,YAA8C;GACzD,OAAO,aAAa,IAAI,WAAW,IAAI,OAAO,OAAO,EAAE,CAAC;;EAE3D"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import "../sql-execution-plan-DTfj23Tj.mjs";
|
|
3
|
-
import "../types-G3hdNPZZ.mjs";
|
|
4
|
-
import { n as planUnsupported, t as planInvalid } from "../errors-Chs-ph28.mjs";
|
|
1
|
+
import { n as planUnsupported, t as planInvalid } from "../errors-DCg-36g-.mjs";
|
|
5
2
|
export { planInvalid, planUnsupported };
|
package/dist/exports/errors.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { n as planUnsupported, t as planInvalid } from "../errors-
|
|
2
|
-
|
|
3
|
-
export { planInvalid, planUnsupported };
|
|
1
|
+
import { n as planUnsupported, t as planInvalid } from "../errors-Cb03_kgU.mjs";
|
|
2
|
+
export { planInvalid, planUnsupported };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as AnyExpression } from "../types-
|
|
1
|
+
import { o as AnyExpression } from "../types-hwPoFZX2.mjs";
|
|
2
2
|
import { ParamSpec } from "@prisma-next/operations";
|
|
3
3
|
import { SqlLoweringSpec } from "@prisma-next/sql-operations";
|
|
4
4
|
import { QueryOperationReturn } from "@prisma-next/sql-contract/types";
|
|
@@ -11,8 +11,8 @@ type ScopeField = {
|
|
|
11
11
|
/**
|
|
12
12
|
* A typed SQL expression. Identity is carried by the `returnType` descriptor (inherited from `QueryOperationReturn` and narrowed to `T`) — distinct `T` makes distinct Expression types structurally. `buildAst()` materialises the underlying AST node.
|
|
13
13
|
*/
|
|
14
|
-
type Expression<T
|
|
15
|
-
readonly returnType: T
|
|
14
|
+
type Expression<T extends ScopeField> = QueryOperationReturn & {
|
|
15
|
+
readonly returnType: T;
|
|
16
16
|
buildAst(): AnyExpression;
|
|
17
17
|
};
|
|
18
18
|
type CodecIdsWithTrait<CT extends Record<string, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.mts","names":[],"sources":["../../src/expression.ts"],"
|
|
1
|
+
{"version":3,"file":"expression.d.mts","names":[],"sources":["../../src/expression.ts"],"mappings":";;;;;;KAMY,UAAA;EAAe,OAAA;EAAiB,QAAA;AAAA;;;;KAKhC,UAAA,WAAqB,UAAA,IAAc,oBAAA;EAAA,SACpC,UAAA,EAAY,CAAA;EACrB,QAAA,IAAY,aAAA;AAAA;AAAA,KAGT,iBAAA,YACQ,MAAA;EAAA,SAA0B,KAAA;AAAA,8DAGzB,EAAA,YAAc,EAAA,CAAG,CAAA;EAAA,SAAsB,MAAA;AAAA,KAC9C,cAAA,mBAAiC,CAAA,IAChC,CAAA,yBAGA,EAAA;AAAA,KAEH,UAAA,MAAgB,CAAA;;;;;;;AAbnB;;KAuBU,eAAA,8DAGC,MAAA;EAAA,SAA0B,KAAA;AAAA,MAEnC,UAAA;EAAa,OAAA,EAAS,OAAA;EAAS,QAAA,EAAU,QAAA;AAAA,MACxC,OAAA,eAAsB,EAAA,GAAK,EAAA,CAAG,OAAA,sBAC/B,UAAA,CAAW,QAAA;;;;;;KAOH,eAAA,wEAGC,MAAA;EAAA,SAA0B,KAAA;AAAA,MACnC,eAAA,CAAgB,iBAAA,CAAkB,EAAA,EAAI,MAAA,GAAS,QAAA,EAAU,EAAA;;;;;;;;iBAS7C,MAAA,CACd,KAAA,WACA,OAAA,WACA,IAAA;EAAS,KAAA;EAAe,MAAA;AAAA,IACvB,aAAA;;;AA3CO;;;;;AAYV;iBAkDgB,MAAA,CAAO,KAAA;EAAmB,KAAA;EAAe,MAAA;AAAA;AAAA,UAoBxC,kBAAA,WAA6B,UAAA;EAAA,SACnC,MAAA;EAjEN;;;EAAA,SAqEM,IAAA,YAAgB,aAAA,KAAkB,aAAA;EAAA,SAClC,OAAA,EAAS,CAAA,GAAI,SAAA;EAAA,SACb,QAAA,EAAU,eAAA;AAAA;;;;iBAML,cAAA,WAAyB,UAAA,CAAA,CAAY,IAAA,EAAM,kBAAA,CAAmB,CAAA,IAAK,UAAA,CAAW,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { S as OperationExpr, T as ParamRef } from "../types-
|
|
2
|
-
|
|
1
|
+
import { S as OperationExpr, T as ParamRef } from "../types-vA5134SY.mjs";
|
|
3
2
|
//#region src/expression.ts
|
|
4
3
|
/**
|
|
5
4
|
* Resolve a raw value or an Expression into an AST expression node.
|
|
@@ -57,7 +56,7 @@ function buildOperation(spec) {
|
|
|
57
56
|
buildAst: () => op
|
|
58
57
|
};
|
|
59
58
|
}
|
|
60
|
-
|
|
61
59
|
//#endregion
|
|
62
60
|
export { buildOperation, refsOf, toExpr };
|
|
61
|
+
|
|
63
62
|
//# sourceMappingURL=expression.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.mjs","names":[],"sources":["../../src/expression.ts"],"sourcesContent":["import type { ParamSpec } from '@prisma-next/operations';\nimport type { QueryOperationReturn } from '@prisma-next/sql-contract/types';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\nimport type { AnyExpression as AstExpression } from './ast/types';\nimport { OperationExpr, ParamRef } from './ast/types';\n\nexport type ScopeField = { codecId: string; nullable: boolean };\n\n/**\n * A typed SQL expression. Identity is carried by the `returnType` descriptor (inherited from `QueryOperationReturn` and narrowed to `T`) — distinct `T` makes distinct Expression types structurally. `buildAst()` materialises the underlying AST node.\n */\nexport type Expression<T extends ScopeField> = QueryOperationReturn & {\n readonly returnType: T;\n buildAst(): AstExpression;\n};\n\ntype CodecIdsWithTrait<\n CT extends Record<string, { readonly input: unknown }>,\n RequiredTraits extends readonly string[],\n> = {\n [K in keyof CT & string]: CT[K] extends { readonly traits: infer T }\n ? [RequiredTraits[number]] extends [T]\n ? K\n : never\n : never;\n}[keyof CT & string];\n\ntype NullSuffix<N> = N extends true ? null : never;\n\n/**\n * An expression or literal value targeting a specific codec.\n *\n * Accepts any of:\n * - An `Expression` whose codec matches exactly\n * - A raw JS value of the codec's `input` type\n * - `null` when `Nullable` is true\n */\nexport type CodecExpression<\n CodecId extends string,\n Nullable extends boolean,\n CT extends Record<string, { readonly input: unknown }>,\n> =\n | Expression<{ codecId: CodecId; nullable: Nullable }>\n | (CodecId extends keyof CT ? CT[CodecId]['input'] : never)\n | NullSuffix<Nullable>;\n\n/**\n * An expression or literal value targeting any codec whose trait set contains all the required traits.\n *\n * Resolves the trait set to the union of matching codec identities via `CodecIdsWithTrait`, then reuses `CodecExpression` for the codec-id form.\n */\nexport type TraitExpression<\n Traits extends readonly string[],\n Nullable extends boolean,\n CT extends Record<string, { readonly input: unknown }>,\n> = CodecExpression<CodecIdsWithTrait<CT, Traits>, Nullable, CT>;\n\n/**\n * Resolve a raw value or an Expression into an AST expression node.\n *\n * When `value` is an Expression (duck-typed by its `buildAst` method), the AST it wraps is returned. Otherwise the value is embedded as a ParamRef tagged with `codecId` (if given) and optionally `refs: { table, column }` (if the caller knows the column-bound site).\n *\n * For parameterized codec ids (e.g. `pg/vector@1`), encode-side dispatch requires `refs` to select the per-instance codec — so operation implementations that compare a column to a user-supplied value should derive `refs` from the column-bound side and pass it down. Non-parameterized codec ids (e.g. `pg/int4@1`) tolerate refs-less ParamRefs; the validator pass enforces refs only for parameterized ids.\n */\nexport function toExpr(\n value: unknown,\n codecId?: string,\n refs?: { table: string; column: string },\n): AstExpression {\n if (isExpressionLike(value)) {\n return value.buildAst();\n }\n if (codecId === undefined && refs === undefined) return ParamRef.of(value);\n return ParamRef.of(value, {\n ...(codecId !== undefined ? { codecId } : {}),\n ...(refs !== undefined ? { refs } : {}),\n });\n}\n\n/**\n * Derive `(table, column)` refs from an expression-like value when it carries column-bound metadata. Returns `undefined` for non-column-bound expressions and for raw scalar values.\n *\n * Two sources are consulted, in order: 1. An optional `refs` slot on the `Expression` wrapper (the SQL builder's `ExpressionImpl` records `(table, column)` for top-level fields whose AST is `IdentifierRef` — the AST stays bare to preserve SQL rendering, the metadata lives on the wrapper). 2. The wrapped AST when it's already a `ColumnRef` (the namespaced field-proxy form, or operation impls passing column-bound exprs\n * directly).\n *\n * Operation implementations call this on the column-bound side of a comparison and forward the refs to {@link toExpr} on the user-value side, so the resulting `ParamRef` carries the table+column required by encode-side `forColumn` dispatch.\n */\nexport function refsOf(value: unknown): { table: string; column: string } | undefined {\n if (!isExpressionLike(value)) return undefined;\n const wrapperRefs = (value as { refs?: { table: string; column: string } }).refs;\n if (wrapperRefs) return { table: wrapperRefs.table, column: wrapperRefs.column };\n const ast = value.buildAst();\n if (ast.kind === 'column-ref') {\n return { table: ast.table, column: ast.column };\n }\n return undefined;\n}\n\nfunction isExpressionLike(value: unknown): value is Expression<ScopeField> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'buildAst' in value &&\n typeof (value as { buildAst: unknown }).buildAst === 'function'\n );\n}\n\nexport interface BuildOperationSpec<R extends ScopeField> {\n readonly method: string;\n /**\n * The operation's arguments. The first element is the self argument (the value the operation is being applied to); the rest are the remaining user-supplied arguments.\n */\n readonly args: readonly [AstExpression, ...AstExpression[]];\n readonly returns: R & ParamSpec;\n readonly lowering: SqlLoweringSpec;\n}\n\n/**\n * Construct an OperationExpr AST node and wrap it as a typed Expression. Operation implementations use this to turn their user-facing arguments into the AST node the compilation pipeline eventually lowers to SQL.\n */\nexport function buildOperation<R extends ScopeField>(spec: BuildOperationSpec<R>): Expression<R> {\n const [self, ...rest] = spec.args;\n const op = new OperationExpr({\n method: spec.method,\n self,\n args: rest.length > 0 ? rest : undefined,\n returns: spec.returns,\n lowering: spec.lowering,\n });\n return {\n returnType: spec.returns,\n buildAst: () => op,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"expression.mjs","names":[],"sources":["../../src/expression.ts"],"sourcesContent":["import type { ParamSpec } from '@prisma-next/operations';\nimport type { QueryOperationReturn } from '@prisma-next/sql-contract/types';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\nimport type { AnyExpression as AstExpression } from './ast/types';\nimport { OperationExpr, ParamRef } from './ast/types';\n\nexport type ScopeField = { codecId: string; nullable: boolean };\n\n/**\n * A typed SQL expression. Identity is carried by the `returnType` descriptor (inherited from `QueryOperationReturn` and narrowed to `T`) — distinct `T` makes distinct Expression types structurally. `buildAst()` materialises the underlying AST node.\n */\nexport type Expression<T extends ScopeField> = QueryOperationReturn & {\n readonly returnType: T;\n buildAst(): AstExpression;\n};\n\ntype CodecIdsWithTrait<\n CT extends Record<string, { readonly input: unknown }>,\n RequiredTraits extends readonly string[],\n> = {\n [K in keyof CT & string]: CT[K] extends { readonly traits: infer T }\n ? [RequiredTraits[number]] extends [T]\n ? K\n : never\n : never;\n}[keyof CT & string];\n\ntype NullSuffix<N> = N extends true ? null : never;\n\n/**\n * An expression or literal value targeting a specific codec.\n *\n * Accepts any of:\n * - An `Expression` whose codec matches exactly\n * - A raw JS value of the codec's `input` type\n * - `null` when `Nullable` is true\n */\nexport type CodecExpression<\n CodecId extends string,\n Nullable extends boolean,\n CT extends Record<string, { readonly input: unknown }>,\n> =\n | Expression<{ codecId: CodecId; nullable: Nullable }>\n | (CodecId extends keyof CT ? CT[CodecId]['input'] : never)\n | NullSuffix<Nullable>;\n\n/**\n * An expression or literal value targeting any codec whose trait set contains all the required traits.\n *\n * Resolves the trait set to the union of matching codec identities via `CodecIdsWithTrait`, then reuses `CodecExpression` for the codec-id form.\n */\nexport type TraitExpression<\n Traits extends readonly string[],\n Nullable extends boolean,\n CT extends Record<string, { readonly input: unknown }>,\n> = CodecExpression<CodecIdsWithTrait<CT, Traits>, Nullable, CT>;\n\n/**\n * Resolve a raw value or an Expression into an AST expression node.\n *\n * When `value` is an Expression (duck-typed by its `buildAst` method), the AST it wraps is returned. Otherwise the value is embedded as a ParamRef tagged with `codecId` (if given) and optionally `refs: { table, column }` (if the caller knows the column-bound site).\n *\n * For parameterized codec ids (e.g. `pg/vector@1`), encode-side dispatch requires `refs` to select the per-instance codec — so operation implementations that compare a column to a user-supplied value should derive `refs` from the column-bound side and pass it down. Non-parameterized codec ids (e.g. `pg/int4@1`) tolerate refs-less ParamRefs; the validator pass enforces refs only for parameterized ids.\n */\nexport function toExpr(\n value: unknown,\n codecId?: string,\n refs?: { table: string; column: string },\n): AstExpression {\n if (isExpressionLike(value)) {\n return value.buildAst();\n }\n if (codecId === undefined && refs === undefined) return ParamRef.of(value);\n return ParamRef.of(value, {\n ...(codecId !== undefined ? { codecId } : {}),\n ...(refs !== undefined ? { refs } : {}),\n });\n}\n\n/**\n * Derive `(table, column)` refs from an expression-like value when it carries column-bound metadata. Returns `undefined` for non-column-bound expressions and for raw scalar values.\n *\n * Two sources are consulted, in order: 1. An optional `refs` slot on the `Expression` wrapper (the SQL builder's `ExpressionImpl` records `(table, column)` for top-level fields whose AST is `IdentifierRef` — the AST stays bare to preserve SQL rendering, the metadata lives on the wrapper). 2. The wrapped AST when it's already a `ColumnRef` (the namespaced field-proxy form, or operation impls passing column-bound exprs\n * directly).\n *\n * Operation implementations call this on the column-bound side of a comparison and forward the refs to {@link toExpr} on the user-value side, so the resulting `ParamRef` carries the table+column required by encode-side `forColumn` dispatch.\n */\nexport function refsOf(value: unknown): { table: string; column: string } | undefined {\n if (!isExpressionLike(value)) return undefined;\n const wrapperRefs = (value as { refs?: { table: string; column: string } }).refs;\n if (wrapperRefs) return { table: wrapperRefs.table, column: wrapperRefs.column };\n const ast = value.buildAst();\n if (ast.kind === 'column-ref') {\n return { table: ast.table, column: ast.column };\n }\n return undefined;\n}\n\nfunction isExpressionLike(value: unknown): value is Expression<ScopeField> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'buildAst' in value &&\n typeof (value as { buildAst: unknown }).buildAst === 'function'\n );\n}\n\nexport interface BuildOperationSpec<R extends ScopeField> {\n readonly method: string;\n /**\n * The operation's arguments. The first element is the self argument (the value the operation is being applied to); the rest are the remaining user-supplied arguments.\n */\n readonly args: readonly [AstExpression, ...AstExpression[]];\n readonly returns: R & ParamSpec;\n readonly lowering: SqlLoweringSpec;\n}\n\n/**\n * Construct an OperationExpr AST node and wrap it as a typed Expression. Operation implementations use this to turn their user-facing arguments into the AST node the compilation pipeline eventually lowers to SQL.\n */\nexport function buildOperation<R extends ScopeField>(spec: BuildOperationSpec<R>): Expression<R> {\n const [self, ...rest] = spec.args;\n const op = new OperationExpr({\n method: spec.method,\n self,\n args: rest.length > 0 ? rest : undefined,\n returns: spec.returns,\n lowering: spec.lowering,\n });\n return {\n returnType: spec.returns,\n buildAst: () => op,\n };\n}\n"],"mappings":";;;;;;;;;AAgEA,SAAgB,OACd,OACA,SACA,MACe;CACf,IAAI,iBAAiB,MAAM,EACzB,OAAO,MAAM,UAAU;CAEzB,IAAI,YAAY,KAAA,KAAa,SAAS,KAAA,GAAW,OAAO,SAAS,GAAG,MAAM;CAC1E,OAAO,SAAS,GAAG,OAAO;EACxB,GAAI,YAAY,KAAA,IAAY,EAAE,SAAS,GAAG,EAAE;EAC5C,GAAI,SAAS,KAAA,IAAY,EAAE,MAAM,GAAG,EAAE;EACvC,CAAC;;;;;;;;;;AAWJ,SAAgB,OAAO,OAA+D;CACpF,IAAI,CAAC,iBAAiB,MAAM,EAAE,OAAO,KAAA;CACrC,MAAM,cAAe,MAAuD;CAC5E,IAAI,aAAa,OAAO;EAAE,OAAO,YAAY;EAAO,QAAQ,YAAY;EAAQ;CAChF,MAAM,MAAM,MAAM,UAAU;CAC5B,IAAI,IAAI,SAAS,cACf,OAAO;EAAE,OAAO,IAAI;EAAO,QAAQ,IAAI;EAAQ;;AAKnD,SAAS,iBAAiB,OAAiD;CACzE,OACE,OAAO,UAAU,YACjB,UAAU,QACV,cAAc,SACd,OAAQ,MAAgC,aAAa;;;;;AAiBzD,SAAgB,eAAqC,MAA4C;CAC/F,MAAM,CAAC,MAAM,GAAG,QAAQ,KAAK;CAC7B,MAAM,KAAK,IAAI,cAAc;EAC3B,QAAQ,KAAK;EACb;EACA,MAAM,KAAK,SAAS,IAAI,OAAO,KAAA;EAC/B,SAAS,KAAK;EACd,UAAU,KAAK;EAChB,CAAC;CACF,OAAO;EACL,YAAY,KAAK;EACjB,gBAAgB;EACjB"}
|
package/dist/exports/plan.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as SqlExecutionPlan } from "../sql-execution-plan-
|
|
2
|
-
import { t as SqlQueryPlan } from "../plan-
|
|
1
|
+
import { t as SqlExecutionPlan } from "../sql-execution-plan-DgcD75jn.mjs";
|
|
2
|
+
import { t as SqlQueryPlan } from "../plan-CZ6CFuSX.mjs";
|
|
3
3
|
export { type SqlExecutionPlan, SqlQueryPlan };
|
package/dist/exports/plan.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MutationDefaultsOptions, i as MutationDefaultsOp, n as CodecDescriptorRegistry, o as TypeHelperRegistry, r as ExecutionContext, t as AppliedMutationDefault } from "../query-lane-context-
|
|
1
|
+
import { a as MutationDefaultsOptions, i as MutationDefaultsOp, n as CodecDescriptorRegistry, o as TypeHelperRegistry, r as ExecutionContext, t as AppliedMutationDefault } from "../query-lane-context-DaimN0zf.mjs";
|
|
2
2
|
export { AppliedMutationDefault, CodecDescriptorRegistry, ExecutionContext, MutationDefaultsOp, MutationDefaultsOptions, TypeHelperRegistry };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
package/dist/exports/types.d.mts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import "../
|
|
3
|
-
import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "../types-G3hdNPZZ.mjs";
|
|
4
|
-
import "../plan-nwFE15re.mjs";
|
|
5
|
-
import { n as SqlOrmPlan, t as RuntimeScope } from "../types-dPxXIUPS.mjs";
|
|
1
|
+
import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "../types-Czw4j_wY.mjs";
|
|
2
|
+
import { n as SqlOrmPlan, t as RuntimeScope } from "../types-BnLrX_Vr.mjs";
|
|
6
3
|
export { BuildOptions, BuildParamsMap, CodecTypes, ColumnsOf, ComputeColumnJsType, Expr, HasIncludeManyCapabilities, META, Meta, ModelDef, ModelMetadata, OperationTypeSignature, OperationTypes, OperationsForTypeId, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, RuntimeError, RuntimeScope, SqlBuilderOptions, SqlOrmPlan, SqlPlan, TableDef, TableKey, TableMetadata, TablesOf };
|
package/dist/exports/types.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { $ as TableSource, A as InsertOnConflict, B as NotExpr, C as ExistsExpr, D as ExpressionSource, E as ExpressionRewriter, F as JsonObjectEntry, G as ParamRef, H as OperationExpr, I as JsonObjectExpr, J as ProjectionItem, K as ParamRefBindingRefs, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableRef, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SelectAstOptions, Y as SelectAst, Z as SubqueryExpr, _ as DeleteAst, a as AndExpr, at as queryAstKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as ToWhereExpr, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as isWhereExpr, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as WhereArg, o as AnyExpression, ot as whereExprKinds, p as BinaryExpr, q as ProjectionExpr, r as AggregateFn, rt as isQueryAst, s as AnyFromSource, t as AggregateCountFn, tt as UpdateAst, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "./types-
|
|
2
|
-
import { _ as ExtractCodecTypes, a as MutationDefaultsOptions, b as SqlColumnRef, c as Codec, d as CodecMeta, f as CodecTrait, g as DescriptorCodecTraits, h as DescriptorCodecInput, i as MutationDefaultsOp, l as CodecCallContext, m as DescriptorCodecId, n as CodecDescriptorRegistry, o as TypeHelperRegistry, p as ContractCodecRegistry, r as ExecutionContext, s as AnyCodecDescriptor, t as AppliedMutationDefault, u as CodecDescriptor, v as SqlCodecCallContext, y as SqlCodecInstanceContext } from "./query-lane-context-
|
|
1
|
+
import { $ as TableSource, A as InsertOnConflict, B as NotExpr, C as ExistsExpr, D as ExpressionSource, E as ExpressionRewriter, F as JsonObjectEntry, G as ParamRef, H as OperationExpr, I as JsonObjectExpr, J as ProjectionItem, K as ParamRefBindingRefs, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableRef, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SelectAstOptions, Y as SelectAst, Z as SubqueryExpr, _ as DeleteAst, a as AndExpr, at as queryAstKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as ToWhereExpr, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as isWhereExpr, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as WhereArg, o as AnyExpression, ot as whereExprKinds, p as BinaryExpr, q as ProjectionExpr, r as AggregateFn, rt as isQueryAst, s as AnyFromSource, t as AggregateCountFn, tt as UpdateAst, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "./types-hwPoFZX2.mjs";
|
|
2
|
+
import { _ as ExtractCodecTypes, a as MutationDefaultsOptions, b as SqlColumnRef, c as Codec, d as CodecMeta, f as CodecTrait, g as DescriptorCodecTraits, h as DescriptorCodecInput, i as MutationDefaultsOp, l as CodecCallContext, m as DescriptorCodecId, n as CodecDescriptorRegistry, o as TypeHelperRegistry, p as ContractCodecRegistry, r as ExecutionContext, s as AnyCodecDescriptor, t as AppliedMutationDefault, u as CodecDescriptor, v as SqlCodecCallContext, y as SqlCodecInstanceContext } from "./query-lane-context-DaimN0zf.mjs";
|
|
3
3
|
import { Adapter, AdapterProfile, AdapterTarget, Lowerer, LowererContext, MarkerStatement, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SqlCharCodec, SqlCharDescriptor, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, collectOrderedParamRefs, compact, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, validateParamRefRefs } from "./exports/ast.mjs";
|
|
4
|
-
import { t as SqlExecutionPlan } from "./sql-execution-plan-
|
|
5
|
-
import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "./types-
|
|
6
|
-
import { n as planUnsupported, t as planInvalid } from "./errors-
|
|
4
|
+
import { t as SqlExecutionPlan } from "./sql-execution-plan-DgcD75jn.mjs";
|
|
5
|
+
import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "./types-Czw4j_wY.mjs";
|
|
6
|
+
import { n as planUnsupported, t as planInvalid } from "./errors-DCg-36g-.mjs";
|
|
7
7
|
import { BuildOperationSpec, CodecExpression, Expression, ScopeField, TraitExpression, buildOperation, refsOf, toExpr } from "./exports/expression.mjs";
|
|
8
|
-
import { t as SqlQueryPlan } from "./plan-
|
|
9
|
-
import "./
|
|
10
|
-
import "./exports/query-lane-context.mjs";
|
|
11
|
-
import { n as SqlOrmPlan, t as RuntimeScope } from "./types-dPxXIUPS.mjs";
|
|
8
|
+
import { t as SqlQueryPlan } from "./plan-CZ6CFuSX.mjs";
|
|
9
|
+
import { n as SqlOrmPlan, t as RuntimeScope } from "./types-BnLrX_Vr.mjs";
|
|
12
10
|
export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyCodecDescriptor, AnyExpression, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyQueryAst, AppliedMutationDefault, AstRewriter, BinaryExpr, BinaryOp, BuildOperationSpec, BuildOptions, BuildParamsMap, Codec, CodecCallContext, CodecDescriptor, CodecDescriptorRegistry, CodecExpression, CodecMeta, CodecTrait, CodecTypes, ColumnRef, ColumnsOf, ComputeColumnJsType, ContractCodecRegistry, DefaultValueExpr, DeleteAst, DerivedTableSource, DescriptorCodecId, DescriptorCodecInput, DescriptorCodecTraits, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExecutionContext, ExistsExpr, Expr, ExprVisitor, Expression, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, HasIncludeManyCapabilities, IdentifierRef, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnExpr, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, ListExpression, LiteralExpr, LoweredStatement, Lowerer, LowererContext, META, MarkerStatement, Meta, ModelDef, ModelMetadata, MutationDefaultsOp, MutationDefaultsOptions, NotExpr, NullCheckExpr, OperationExpr, OperationTypeSignature, OperationTypes, OperationsForTypeId, OrExpr, OrderByItem, ParamRef, ParamRefBindingRefs, ProjectionExpr, ProjectionItem, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, RuntimeError, RuntimeScope, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, ScopeField, SelectAst, SelectAstOptions, SqlBuilderOptions, SqlCharCodec, SqlCharDescriptor, SqlCodecCallContext, SqlCodecInstanceContext, SqlColumnRef, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExecutionPlan, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlOrmPlan, SqlPlan, SqlQueryPlan, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableDef, TableKey, TableMetadata, TableRef, TableSource, TablesOf, ToWhereExpr, TraitExpression, TypeHelperRegistry, UpdateAst, WhereArg, buildOperation, collectOrderedParamRefs, compact, isQueryAst, isWhereExpr, planInvalid, planUnsupported, queryAstKinds, refsOf, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, validateParamRefRefs, whereExprKinds };
|